From: "Saved by Windows Internet Explorer 8"
Subject: newsdurhamregion.com | Got the summer job blues?
Date: Wed, 5 Aug 2009 13:19:26 -0400
MIME-Version: 1.0
Content-Type: multipart/related;
	type="multipart/alternative";
	boundary="----=_NextPart_000_0092_01CA15CF.5B38E7B0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18049

This is a multi-part message in MIME format.

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: =?Windows-1252?Q?http://torontodurhamregion.122.2o7.net/b/ss/torontodurha?=
	=?Windows-1252?Q?mregion/1/H.10=97NS/0?=

R0lGODlhAgACAIAAAP///wAAACH5BAEAAAAALAAAAAACAAIAAAIChFEAOw==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/Newsdurhamregion/;pos=1;tile=1;sz=728x90;ord=123456789?

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQABAMDAwMDBAMDBAYEAwQGBwUEBAUHCAYGBwYGCAoICQkJCQgKCgwMDAwMCgwMDQ0MDBERERER
FBQUFBQUFBQUFAEEBQUIBwgPCgoPFA4ODhQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgAWgLYAwERAAIRAQMRAf/EAMAAAAEEAwEBAAAAAAAAAAAA
AAAEBQYHAQIDCAkBAQADAQEBAAAAAAAAAAAAAAACAwQBBQYQAAEEAQMCAgcEBgUHCAcJAAIBAwQF
BgAREiEHMRNBUZEiUhQIYTIVFnGBkiNT06GxQmIzcoMkNDUXN8HRgkOzw0U2Y3R1tXYYOOGissJz
tIUmCREAAQQABQEFBwMDAwQDAAAAAQARAgMhMUESBFFhcYEiE/CRocEyQhSxUgViIzPR4fFykrI0
gqLC/9oADAMBAAIRAxEAPwCinXXfNP3y+8vpX16+5XxS08134y9q6MuI8134y9q6MiPNd+MvaujI
jzXfjL2royI8134y9q6MiubsJTH85PyuVuosIsGByVf8Q0QnST9A7D+tdYeXLARXp8KGJkr4WzRs
ebjiACdFMyQU3X7VVE15u1eo66JPJOiku+m1HW6T1+Jfbrm1HW6T1+Jfboy666tzl5j7y+Ken7dc
IXQV4ivpjsm+tZHmF+9myT8V/tPEuvoIBohfMzLyPekCOPEqCJkpL0REVVVVXUlFOKUt8TSPDGdJ
tU33RUVdv0b76y/l0u24LT+Lcz7StGqm9fJwGokkja2VwOJISb+HReq/q1OV9QZ5DFQFFhdonBIz
WS2qo55gKi7Ly5Jsqejrq4EHJVEEZrTzXfjL2rrrKKPNd+MvaujIjzXfjL2royI8134y9q6MiPNd
+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2
roy6jzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2roy
I8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd
+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2
royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6Mi
PNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXf
jL2royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q
6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2royI8134y9q6MiPNd+MvaujIj
zXfjL2royI8134y9q6MiPNd+MvauusiPNd+MvauuMiPNd+MvauusiPNd+MvauuMiPNd+MvaujIjz
XfjL2royI8134y9q6MiPNd+MvaujIjzXfjL2royId/xT/wApf69AuLXXUWNERoiNEWwA46YtNCpu
uEgNgnipEuyJ+tdEXp/F4TWOUMGmaVN4zaecSf2nj95wv1kq68ect0iV79cdkQF5i+rGddv5XTsP
ecOPjBRYXvL5DkjzCV5UTw5iigi7+jbWK0eZbqWZXV9PM24/3UU53ElyQ445IKETxKZjERxQbHcu
uyKJcfUi6tqHlVVh8ytRJ6+vVjKt1uk/7dGR1uljxTkq/dRV9mubV1147ePzH3XF/tmZ/tEq69wL
5srrBcaaki46qoAoS7p1XfZdtZeWJGqQjmtPEMRbEyyVmY3kNbXlIu4htSn69jnDaeRCbB4zFsXD
Aui8EXlsuvjWX16UT7mdaSm50p5Zdgqjwkmar6VLwFURBTZVXbRkdIFu8YyAZEaTAjR5Lu6PzIiA
BkZ7qpcE26oq+pd9W1TNchIaKq2sWRMTqmCRgb57lWT2ZAdeIPbsObejx3TfXv1/ysD9QI+K8Of8
ZMfSQUzTMZv4C7SYDu3oNtPMFf0KG+vQhyqp5SCwT41sM4lJwprc9uECQu/RNmi8fZqZvrH3D3qH
oz/afcukrH72EgrLrJTPJeI82TTdfV4aRurllIe9JUzjnEpOdZZNjzchSAH4iaNE/q1MTidQoGEh
oVwRp1f7BfpVFRPauumQGq4Ik6KO2WY1MAiZY5TnxXZfKVAZRU/9Iu+//RH9evJu/k4xwgHXq1fx
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

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_ajax.gif

R0lGODlhggAeANUAAODg4EBAQFBQUHBwcPDw8KCgoDAwMNDQ0CAgILCwsJCQkBAQEGBgYICAgMDA
wAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACCAB4AAAb/wJ9w
SCwaj8ikcslsOp9LiHRKrVqv2Kx2y+16v1ghBEoum8/o5/g3Brvf8Li8yxaz5/i8fj+t1/l7AwMC
DAIDVwCHBIeAeX5tjXgHCgMODQ0JEA6ZUgIBEAcFBAoKmwqRbo93qHICmQaeBQEGUgkDbAUDAQ4C
AD+crHRrkMFwbAQIBQwICgCdDgYADAwDDQO+zsVcqtpvBQIEobmCmQUKBAwFBgkC7QwKDd1b3FaX
DdkFlw6R128AhvJSDVtFhYEQWhD+9WpE4Ee8NwcCCrQTRsjDSwQcaNyYUWNHBwAOgNQEcl+VAj8Q
TPloMuFGACw3OjgAYGNEKTI1itwIoaPI/50vgWbTQs/KjwVC9l36l7KBgB8OAqRkisABSgcD1hn4
VOUpVClMFwxYwCAjgh8GQM5qgNQQgl1nAzw99CPA2WUBbv0YQGABPIcKhFBb0KBAWwMLChAdGCaB
EAQELmmqK4XBzJQJjyYUMOYUAK5TACD+wWCKA8ooOQdGyCCi1H0EPjVwuOYArdefhwWWUm2Ypni4
NWcpWoWNwR8CJJ/+JIAmBKQHDiQtoPhoppZSSBlcYJryGphCnCF8XUAjhNnxzpp/DaE6m9ngag47
tI+9mOGMrxw7izbeaQO6TGEQJQbstVCBdRFQRTSO/aDYZFyxN5ctUkjVQFpSoOcYQhCwJ/+FGKcd
dcoaCXBX4S+zlYYfRfpJIZ1FkyHgyRQbGiDdW2AhyGFChM2GHE7esecYAq2dyMACJvmIloIntnSf
YUK4N9YUUgnB2WIsGjWFj/5R9slNQhxy1iGhQKAAUkNZo5FXCi4nxVk3IaVSk+UREFldQgDj4TCK
McWZGIc4I5VXN4WRn5ZU0uZmTSo+FdEt+0SV4Q9DIZDNi6csitYUtzDSIVR2CmCJQ7cswOSeYmDy
5p9sOKPSa1KB1mKWKzl2DliEnYeWVbm2N2eJQJ4zY3a/1PIYAKtBg0Ch0t1EQIENYPUDAU+VdRZn
z+7lYlIXhgSVL7/wYgAyPzQjxIiz/lFmBQD2DJVAAezasxRY6DJywCUB3JqhZOfZk4+/THI6xb/y
WqKPwQAQrJS/yjBQjryFEQxAAvymS4xEGGfcBq0ad6wNcR6HjArIIpe8B8kmpyyHKmm07PLLMBfh
m8o06xHzzTjnTEYQADs=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_pickering.gif

R0lGODlhggAeANUAAEBAQPDw8ODg4KCgoNDQ0CAgIJCQkGBgYBAQEDAwMFBQUHBwcLCwsICAgMDA
wAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACCAB4AAAb/wJ9w
SCwaj8ikcslsOp9LiHRKrVqv2Kx2y+16v1ghBEoum8/o5/g3Brvf8Li8yxaz5/i8fj+t1/l7DoKC
AVYEDgIQAYVSiFeJgFt+bZFzAQAAC5gEVgYABwYDDFMAnFYKlVqTd6lwiwkCAgUHDAQLoxALAwsN
BwIDBwQJtwwKDgAKBg3KqAsHDq1tdtFxshAECAcDBQq4BQ0DEAUMwdgGDtzYBKEHCwUOB8/Rq9Rw
wBChyAmO1tcJ2gwMKDiQicEuCMne7UNggBo9KwMaNIAGwYHEcJFETQmwDMKAX+saemxQSIABAg0Y
MBAwcaKjAQQ+GuBVwOEaSlUGCEGQiGMB/1OAEgCoN0VZA5vTrgAQMrTi0EGDBBxCNJWAAAecDh2y
IkAIpIqDGAUYxAmq2bGDpkyFuraQoF9X2cbFmoXRQysAEAg5eizX3gMIJApxYEDIAHQpERRjVXTv
lAVC3JUSsBRBOMANEvxIkPkH5R8FIAO4VGApph8D9CqgrA0BAHQ/ADQo7UBzAgU/Flyxe5MxFQCp
hRxqKmYkBL2JCvzglAACMik1q5QGTUVM1wIBCAgpNKBhgx9HITR3ENv5D08cwYszj/UHNAZDl0IL
gOr7UeVArdyt8lonaPhSiKHAWBAccN5x4AlwgHl8VUGAAv4BVdxS4WgWzmoQ2McSNOQNZf/gRBmq
F4585CXAyYjuMSBIiEfJl8V+v0GD22bEocaKTt3YFopfoOWXywABCLFggHfYh89mATQX4gEKhNch
AQXwJIWRUsgXgF65FbKUAftMCR4DSL7YGxavKaJceWtAtpEQCmATZgAG/iDlFKHNJmcfRaoXJHgi
fQcAZ40MgQBQVLJ3zZkLLnXAO14KgZ0qYypFEXloijGUKUs1Z6CSusGGkVOCfPcDLsUZKNKMkGh4
1FWb6aWbl+GxRwAB6SHAnoqLfDejSGFEihdFIdYIgQBJSlFYQ2CGh4BbqE2hzRSqEQndnGAqyeKw
ynQIpnuwkuKeA68Cxt4iz9j33bJiJlWpBTq+TCFURYMx8O6wnimyXIAHcIRuRYEVAuVglMJjGRUM
OfuDMQYgYBGSuD1q4GhmgueAwgF8k6TE39F3sDgb96ouFRKBKIUAuoUcMrCv5uKsQAt8FVEDibwM
jskGfGUsJBaZ3NJFLLkUcjgyB7RAMhXpvPNEKMHs8R9ENe00FzA+LbXUUU9tdT1VX611JVlv7bUe
q6Qh9thkl13ETV+n3YrZbLftNhlBAAA7

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_whitby.gif

R0lGODlhggAeANUAAMDAwEBAQKCgoPDw8GBgYODg4DAwMCAgINDQ0FBQUJCQkLCwsHBwcBAQEICA
gAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACCAB4AAAb/wJ9w
SCwaj8ikcslsOp9LiHRKrVqv2Kx2y+16v1ghBEoum8/o5/g3Brvf8Li8yxaz5/i8fj+t1/mAgYJa
fm2Dh4h8hXeJjY5ui4+Sk4RrhpSYmJFZAJ0DnQAIEAWdCAoMVQsEVAMCAV6foKAFrqkJWaSesxAI
nloIBAKQloxXDj8EAws/B6IFCQECBq9UArejpAHFWgANDgTIDgcO2qnUV88/DgPHCQW8BgwDWgrq
w3ZbDdTg8xAJouSyEAAA4ZgXAAsgAPhBcIEAg2AK/EAF4YCBKQfoOLj3RwuDH+/qCRuQsWAAAA6E
KRR2LNgxlAoUOnBAcOY7KgsJSjmGwEFM/5lSFszUOcVASXDvVEEYoMCnFKYppdibqXLLpiwIfsRM
oA+CAIoOGiRI8KPXNIVaezIjy6CA0XkOruFkOOVYgI8CEJRDcIDdRir1RB2wRyChAQXLNhoQIMCe
OpI/uVzNYpHkx2eiCl4cU5MaXYjg0BI0cHMuUYjjvLLpJqyqFIkMVBmtCGHBOHGLbx94hSzal8lY
6jlgkFVcXc+dpda8s/Ddbr1Xcta9E2DjwqUGmGWmkuBAYeGrAh6vIqRBPzrEuEhsICp7ZPGfkRe8
s0xK48XR6e6kbp1NAVoNNGBFYwIOIARAP/TzUIJBjcFAA5uhhw8XBmxWT2nwsbSZOkIxmKcARRUJ
mN9pdxiwUWNAoViFgav4U5JEBghFAIwyjuFAVi1Klh4XAvzk1hQAQPNVAMEI6U8DeQVgkTx1gYgT
AUQSVACUKQWQgABQMtBNAvhZQUBmX00hQAM/BDDPmGWyY2WQd0nYUSZSkAYnIsBJUkAABuQ4pyB1
PjIAkeftGUifghaaB6GGJgoHooo26gWjjkaaxSJpVGrppZgWYYmknL6R6aeghkpGEAA7

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_clarington.gif

R0lGODlhggAeANUAAICAgEBAQKCgoPDw8BAQEFBQUGBgYODg4DAwMJCQkHBwcNDQ0LCwsCAgIMDA
wAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACCAB4AAAb/wJ9w
SCwaj8ikcslsOp9LiHRKrVqv2Kx2y+16v1ghBEoum8/o5/g3Brvf8Li8yxaz5/i8fj+t1/mAgYJa
fm2Dh4h8hXeJjY5ui4+Sk4RrhpSYmJFUBwkACQcOEAwFC1wFDIkDDqytDgcCBVUHAQNYq6y4Dqah
DrZZBwoCV5tSAgQADgwIPwMGP6JbBcNeq24OyM8GAAgGBYxSDrW3zwoDCT8IvAEGv1jHAMSWjA4/
CVMDBBD10XwA8WAcDOMH4UAycF0G/DAgJUCDKQgOcAkAsEqxAvqo3BsjyiAAagIEJEhwTpQDAAs+
TRHwjxW6AMM8UjuZcmMVguF+GCQJIaUU/wb/qE3BKAXAj1QLZJ37ZGspT4oQ/lUs9iNAGFEEEiw4
euwHRqPJmBVQ8GOYAqvfAtQzsOAAAQbYFDgQS1boFJz7qpIF9a1gswRWqQg4CoEZQ2EQAiRgQICh
YsaOAQxoILnPvD6BrUBLvGBrvAAI+sQzKgUZBNMM7vyIZyAwWYN3TN/cnNMW1Hp571WcQqDAAQRE
GwzwDKDBjwXIirMJoACB3TZ2+oQmJmoBu9WJM2Mnnfiz1WNSsAcIzI871Nn9cHfP2/BHg1RVtAlI
DUCWg4d3p08J8IOAKSrFPCPRXRJB45Yo4mk32h23EYBAAPCJN109sDW0W07pMRgPbgeE0utARlTU
08xpZeX1XwL1nJhYcwi4A90fUrgVUTiybMXKUWsxMJ5oUd2BQDwFFMDKfz8okMBgogBgFXc/WlGP
UOoxl9cq9iEkRQOyQPBMUwQQwFItXbIkC0XIZRneZVMklU43tpzFFjMsAgYTBAIEME1rIdnpwDND
KABBXX8SMN4AB+BZp5AhtmZAR60JY6cAjd4H2oVSILYPQz8Z1+IoBKQzwKEOFMDcgMUgMtkvk2Uy
SamHpCZXqM+pigirh9Spp6yS0IrrroqgyeuvvUYH7LB56ErssV4sksayzDbrbBGWICttHM9Wa+21
ZAQBADs=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_oshawa.gif

R0lGODlhggAeAMQAAEBAQICAgMDAwPDw8ODg4DAwMFBQUCAgIGBgYKCgoJCQkNDQ0LCwsHBwcBAQ
EAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAA
AAAALAAAAACCAB4AAAX/4COOZGmeaKqubOu+KyTPdG3feK7vfO//OBEERiwaj8jX8DEEOp/QqLTH
FDKn2Kx2O6tWueCwWOdtjs9obvmabrud67d8Tl6a6Xh8fCdAAAANAzcNDgJhAYiJAQwIhTQLDws4
BImUiAkQAoiGOQwFAD57OQkPDBADjQQ2Ag+cXAUCrAgCDQ2krqcBgjisAacOBzOIOwOfoXZsNwQP
DTMDDqA2rWAEpkO+EAmsuD0HBTIND6oQBeM6f8dWOgHTMwjiCwAGsEMKBQemC/OwBH99AAgIKADA
gAGAAwbM0XiALRPDewsGJDhgSIEBeTUURIKgUQGEfh8NeJNEwICDApLQ//lplkPUDQDJILATYMCj
AUMPYKG7CIEnuwHPmvWB4MBX0RsMZ7C6eQDBAI0Clp0yUGNZs3vfbJEzdHArhK5/+llriezcg10y
ZppMsEDVtACgYiUwNuABpgPBZnFcoOCotIbbvsZttQxALBv3CBTQuODAAEiI/EAO4OfrAQeSdri0
MZNGOAL9HhyQ9BZU4wANol1MYKDUt2wHEgBouBDwNHSBGTh4gMAGKQMJClNlhZZVDQC7PWoum2NZ
7xkHQHkUcLQ0hAPN4MpgkFPxAY/LTM1GapvrYEMJUG2kUffsV7sQIClHIF9G7z/huEljPuqBxwHz
CAIAJovVZUoDwXjTF6N2MjjQGymCQGIAOwAoN4NVM3DH1TesmOJYXQrJYABV2bj33kVUwXRRbwV8
g1xmQfCXwz8V7hLARb4kksAlBgVAU2YKqDIASzIRpIBTNFgSACZKauJjIhD4QdANBckwpDN+IIkK
IBJdUglZ6uQhphybjWmmGGWeqaYWaa7pZhRtvinnD3HOaWcdYd6pJxXIJOHnn4AGWoIdexYaiqCI
JqooDCEAADs=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_portperry.gif

R0lGODlhggAeANUAAMDAwEBAQKCgoDAwMODg4PDw8LCwsGBgYBAQEJCQkCAgINDQ0FBQUHBwcICA
gAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACCAB4AAAb/wJ9w
SCwaj8ikcslsOp9LiHRKrVqv2Kx2y+16v1ghBEoum8/o5/g3Brvf8Li8yxaz5/i8fj+t1/mAgYJa
fm2Dh4h8hXeJjY5ui4+Sk4RrhpSYmJFcDp0OCQVSCwcBDAZSnp8EEKmeU6mgAq0CAKkCUrKeABC1
nagOt6IMAQ0NrLNSBAlTvZ3BW5tbBT8HAAMIBQA/ywAItwY/DtbYCAYJ2wYIU+AJBgMDEO8AAAYB
EAc/AOfG8QMADT9O4QuWgAEVYgVILVBgAJ8+exAaKKDicB+XaNAc8PohQMGBKQJ+rMq3EcBHbbs+
9tkFDkAAiLxY3QkwEcJLKQoMFlAwceeq/z7BGNSSKYXfgICvZtasZMdLuI0AnxHYNoYlyZJWSLa8
yWqXgzvvpNwsgEAlOFdUECDYtSAplYYe3fa7aIlRxgUByl2V8nSbAwQwUWYFsCAsTQcH1soUwICj
2AEJ8rYVi0BBqLcIfvBDZffAgq+XvzJ2DK2uUwUBHBAQ3Efjj8YGme3tMyAAKJv+AAiVeXSXWAVq
LycjXaUwNbkQdgIIGexrbzqm6WgURXzqsnyNfWOtMpsrgFVfCSCAJzYAuM18tSdbVSCASM4gUecl
H3489KbSqcTlPBLATstSsDbFNOpxBYEAsrBxznQ3AXTKSlUMtdFkX00RwE/ngKfgU6XhJ6GNZlQs
gAA33kAAzi3axAbOg+sQ1888AiBAAD6hZDfXTghMNtV0U1gHAQPkRfRDKAswUuRHNP442xUYZaFL
iKSY8otqBwJDgCc/TelbLqk0kxwyn2l0ZSfqRUTKAT81M+aWzrhSQCdZMhldJnQ+0mSdeApyZ558
6rFnn4DG8WeghH4xaKGIMvVHoow6VVcakEYq6aRFWNLopU5RqummnEIRBAA7

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_timesjournal.gif

R0lGODlhggAeANUAAEBAQICAgPDw8DAwMODg4NDQ0HBwcBAQEGBgYCAgILCwsFBQUKCgoJCQkMDA
wAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACCAB4AAAb/wJ9w
SCwaj8ikcslsOp9LiHRKrVqv2Kx2y+16v1ghBEoum8/o5/g3Brvf8Li8yxaz5/i8fj+t1/mAgYJa
fm2Dh4h8hXeJjY5ui4+Sk4RrhlYOCAAAAQ0OCgsIoAReAg2bCAEKDgsOEAMGewqbAAYNAQMCgZ4L
pFeRVgo/AEYKBj8NpQMJB0UDUs9wBL5SBAMBCwDMPwqCDD+xYZaMVAMOA98D5qQOP666U9RUDQgM
CwE/DAiuEPD9UvD8/YsHIUAAKu0OFjgAIBoEeQEBDvQl0F/CLMCoCHBgAMGYTVPaKUBwQBcBkgWs
MCDwgwA+BwchFBgAQICBAwUW5KKZ7OSP/5QFh5mrwkCXTpAC8CFIifJmAQUHDAxA0CCfTgMCGBAL
ReCiODtXBHD7CCDkD5ru2jHLZUVTUJgAfyTIOWxBXWQEDgw4UJKYgQThNGYDnKCsX4YEiNFtULXw
tbPHPDIwcOyZ11/jrrRzNayslM2bPzY4IE8KyJcxP0LYjNodhE0ODsxqecBVVwcpBRA4hs8wm9Ns
Xn4UsPFHAK+9hq02jjEzJnBjDHh2ANq1XABAqwAoifohy7Ks3QnXNiAlsWY/EQg5aG2AceXEXpfF
91b18uPMHXBSftlKRo0/HNBAAolBoE91nCUgEBXqIYAOTALkwp94FLqiTUADNHAMbtT5U/8VPgu8
9tt8wVk3nXEXcaJaf1X8R8UxKMJCmjCruCNWLg4s+FAz5pySQAAsDUAAjfgogE8DAiRAoAMELBSA
evy0hQ8Dr+RDEwR2KeAeAwXIpcCQ4LSDQF4JCFNeVWN+9QcWMApRnogG4FMAK3Ilc0UBCQxxAHtb
HkMZOF2WZ5dxSeYJjo5SGLCAggYSU2ZQGQ6j3w8e9ZZXeX4ucAADDORJJWZgZbERbghF6JEUBZRm
xZw5TiEAUN1AEGuUTfaTUq1VLDRMgNmtZpEusa4W0mfwvAPUq82FCoaWn1KiRZyaYOUsFS520eu0
2IJRbbbcBrJtt+Dm8W245MIxbrnoenEabrrsJutHGvDGK++8RFjS7r1v0KvvvvySEQQAOw==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://s7.addthis.com/static/btn/sm-bookmark-en.gif

R0lGODlhUwAQALMOANra2tLS0tDQ0Pz8/PPz8/b29vr6+u/v7/9pOujo6Ozs7MDAwAAAAP//////
/wAAACH5BAEAAA4ALAAAAABTABAAAAT/0LlFq7046827X9IENGRpnmiqrmzbAuAyunRt3yq8lEjv
97ig8EYh/Y6IoXKJKjZ+Rp+JQWWUqlcqybptcK9brRfrBduc0KfUXP5a3eW4eBxvg7nfGjp5ArLf
d4FwgIBdg3VnCwMDfiY9i4tVDJGQk5OUVJADl5ybkp6ZnpqjpJoUBgZpP6ioDKyurq0GsbO1tLSy
t7avtay+v78UBQWqPsPDDMfJycgFzM7Q0c/Nz8vN0sfZ2toUBARIP97ekuJV5VTj5QQM4uns7urv
6+309QQUB/ngCPn9/v8AAwocSLDgPwoBFChcyLChw4cQI0qcSFFBgBgCEmjcyLGjx48gEUOKHDlS
AAgJH1KqXMnSgoQIADs=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://media.durhamregion.topscms.com/images/62/56/e3e40d8f43f29a9ca834af7be556.jpeg

/9j/4AAQSkZJRgABAgEASABIAAD/4Q5QRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAdAAAAcgEyAAIAAAAUAAAAj4dp
AAQAAAABAAAApAAAANAAAABIAAAAAQAAAEgAAAABQWRvYmUgUGhvdG9zaG9wIENTIE1hY2ludG9z
aAAyMDA5OjA4OjAzIDE4OjEwOjA3AAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAABLKADAAQAAAAB
AAAAZAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA
AgAAAgEABAAAAAEAAAEuAgIABAAAAAEAAA0aAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG
AAECAQBIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL
CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN
Dg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
DAwM/8AAEQgANQCgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH
CAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh
EjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi
ZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE
BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKy
gwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dX
Z3eHl6e3x//aAAwDAQACEQMRAD8A9VWfmdQsoyjQw0MAra/dfaa53F7YZ7H7tvprQVV+DVbmWXX1
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
6h+5P7+0L5dSQU/UJ9T/AHKJnvPzXzAkkp+ntE+i+YEklP8A/9n/7TFsUGhvdG9zaG9wIDMuMAA4
QklNBAQAAAAAAAccAgAAAgACADhCSU0EJQAAAAAAEEYM8okmuFbasJwBobCnkHc4QklNA+oAAAAA
HbA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8IURPQ1RZUEUgcGxpc3Qg
UFVCTElDICItLy9BcHBsZSBDb21wdXRlci8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3
LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KPHBsaXN0IHZlcnNpb249IjEu
MCI+CjxkaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUhvcml6b250YWxS
ZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9r
ZXk+CgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJPGtleT5j
b20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+
CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5
PgoJCQkJPHJlYWw+NzI8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xp
ZW50PC9rZXk+CgkJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4K
CQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQk8ZGF0ZT4y
MDA5LTA3LTMxVDEzOjM5OjM4WjwvZGF0ZT4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl
dC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8
L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVu
dGF0aW9uPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRv
cjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCTxr
ZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxk
aWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9r
ZXk+CgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlj
a2V0LmNsaWVudDwva2V5PgoJCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9z
dHJpbmc+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJ
PGRhdGU+MjAwOS0wNy0zMVQxMzozOTozOFo8L2RhdGU+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2Rp
Y3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQu
UE1TY2FsaW5nPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3Jl
YXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJ
CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJ
CTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVNjYWxpbmc8L2tl
eT4KCQkJCTxyZWFsPjE8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xp
ZW50PC9rZXk+CgkJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4K
CQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQk8ZGF0ZT4y
MDA5LTA3LTMxVDEzOjM5OjM4WjwvZGF0ZT4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl
dC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8
L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRp
Y2FsUmVzPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRv
cjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCTxr
ZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxk
aWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9r
ZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5j
bGllbnQ8L2tleT4KCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5n
PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCTxkYXRl
PjIwMDktMDctMzFUMTM6Mzk6MzhaPC9kYXRlPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlj
a2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJ
CTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVy
dGljYWxTY2FsaW5nPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu
Y3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5n
PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+
CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2Fs
U2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50
LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdl
cjwvc3RyaW5nPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4K
CQkJCTxkYXRlPjIwMDktMDctMzFUMTM6Mzk6MzhaPC9kYXRlPgoJCQkJPGtleT5jb20uYXBwbGUu
cHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJ
PC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5zdWJUaWNr
ZXQucGFwZXJfaW5mb190aWNrZXQ8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50
LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhZ2VSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29t
LmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLnBy
aW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRl
bUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnBy
aW50LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhZ2VSZWN0PC9rZXk+CgkJCQkJPGFycmF5PgoJCQkJ
CQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+NzM0
PC9yZWFsPgoJCQkJCQk8cmVhbD41NzY8L3JlYWw+CgkJCQkJPC9hcnJheT4KCQkJCQk8a2V5PmNv
bS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQkJPHN0cmluZz5jb20uYXBwbGUu
cHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0
Lm1vZERhdGU8L2tleT4KCQkJCQk8ZGF0ZT4yMDA5LTA4LTAzVDIyOjA5OjMwWjwvZGF0ZT4KCQkJ
CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVn
ZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5j
b20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJPGRp
Y3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJp
bmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5w
cmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxr
ZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJ
CQkJCTxhcnJheT4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+
CgkJCQkJCTxyZWFsPjc3NDwvcmVhbD4KCQkJCQkJPHJlYWw+NTk0PC9yZWFsPgoJCQkJCTwvYXJy
YXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJCTxz
dHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFw
cGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQkJPGRhdGU+MjAwOS0wOC0wM1QyMjow
OTozMFo8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwv
a2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJ
PC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVyTmFtZTwva2V5
PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJ
CQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5wbS5Qb3N0U2NyaXB0PC9zdHJpbmc+CgkJCTxrZXk+
Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRp
Y3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk+
CgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQucG0uUG9z
dFNjcmlwdDwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRl
PC9rZXk+CgkJCQkJPGRhdGU+MjAwMy0wNy0wMVQxNzo0OTozNlo8L2RhdGU+CgkJCQkJPGtleT5j
b20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjE8L2lu
dGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxl
LnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8
a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5h
cHBsZS5wcmludC5wbS5Qb3N0U2NyaXB0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50
LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5j
b20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk+CgkJCQkJ
PGFycmF5PgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJ
CQkJPHJlYWw+NzM0PC9yZWFsPgoJCQkJCQk8cmVhbD41NzY8L3JlYWw+CgkJCQkJPC9hcnJheT4K
CQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQkJPHN0cmlu
Zz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUu
cHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCQk8ZGF0ZT4yMDA5LTA3LTMxVDEzOjM5OjM4
WjwvZGF0ZT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+
CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2Rp
Y3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhcGVyUmVj
dDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwv
a2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5wbS5Qb3N0U2NyaXB0PC9zdHJpbmc+CgkJ
CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJ
CQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3Rl
ZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJ
CQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPjc3NDwvcmVhbD4KCQkJCQkJPHJlYWw+NTk0
PC9yZWFsPgoJCQkJCTwvYXJyYXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNs
aWVudDwva2V5PgoJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5n
PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQkJPGRh
dGU+MjAwOS0wNy0zMVQxMzozOTozOFo8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQu
dGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2Rp
Y3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5m
by5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQu
dGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQucG0uUG9zdFNj
cmlwdDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r
ZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVy
SW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPlVTIExldHRlcjwvc3RyaW5n
PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCQk8c3Ry
aW5nPmNvbS5hcHBsZS5wcmludC5wbS5Qb3N0U2NyaXB0PC9zdHJpbmc+CgkJCQkJPGtleT5jb20u
YXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCQk8ZGF0ZT4yMDAzLTA3LTAxVDE3
OjQ5OjM2WjwvZGF0ZT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFn
PC9rZXk+CgkJCQkJPGludGVnZXI+MTwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4K
CQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4K
CQk8c3RyaW5nPjAwLjIwPC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnBy
aXZhdGVMb2NrPC9rZXk+CgkJPGZhbHNlLz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu
dHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mb1RpY2tldDwvc3Ry
aW5nPgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tl
eT4KCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5w
cml2YXRlTG9jazwva2V5PgoJPGZhbHNlLz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50
eXBlPC9rZXk+Cgk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJp
bmc+CjwvZGljdD4KPC9wbGlzdD4KOEJJTQPpAAAAAAB4AAMAAABIAEgAAAAAAt4CQP/u/+4DBgJS
A2cFKAP8AAIAAABIAEgAAAAAAtgCKAABAAAAZAAAAAEAAwMDAAAAAX//AAEAAQAAAAAAAAAAAAAA
AGgIABkBkAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOEJJTQPtAAAAAAAQAEgAAAAB
AAEASAAAAAEAAThCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAeDhCSU0E
GQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAA
AAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAA
AAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////
////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP//////
//////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0EAAAA
AAAAAgADOEJJTQQCAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOEJJTQQIAAAAAAAQAAAA
AQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA0MAAAAGAAAAAAAAAAAAAABk
AAABLAAAAAcAdAB3AGkAdAB0AGUAcgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAB
LAAAAGQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwA
AAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExl
ZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAGQAAAAAUmdodGxvbmcAAAEsAAAABnNsaWNlc1ZsTHMA
AAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURs
b25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAA
AFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJj
dDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAABkAAAA
AFJnaHRsb25nAAABLAAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VU
RVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhj
ZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAH
ZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAA
C2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNl
dGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAA
AAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE/8AAAAAAAADhCSU0EFAAAAAAA
BAAAABA4QklNBAwAAAAADTYAAAABAAAAoAAAADUAAAHgAABjYAAADRoAGAAB/9j/4AAQSkZJRgAB
AgEASABIAAD/7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoL
ERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4N
EA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
DP/AABEIADUAoAMBIgACEQEDEQH/3QAEAAr/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJ
CgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIx
BUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXy
s4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQD
BAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMH
JjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3
h5ent8f/2gAMAwEAAhEDEQA/APVVn5nULKMo0MNDAK2v3X2mudxe2Gex+7b6a0FVfg1W5ll19ddr
HV1sZvAcQWutc/6Q/wCEYn4zAEmYsVsw5xlMQMR4ZE6n+rSv2hisubjXWNbknaHMEloc4e1nqQG7
nf4Nj/0j0L7fd6/p7Wx9r+z952el6+7n6e9Bt6dlPZfiAMGPkXesbg4ixoLmWvb6ewte/c3bW/1E
X7Df6/qS2Ptf2jk/Q9L0PD6e9SiOIA63YO5+w/1f7jAZ8zIgcJAEo6gV6fVxQl+/w+j9bD5+NsM6
hh2ZDsZloNzSQW66lur2td9F72fnsZ9BSZl41np7LAfWYba+0sG2X6/8YxUaOnZTWYuNYGNow7BY
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
vVgzQMyZy9zg4slx5n/V/JB677Xiei68XVmlujrA4bQf607ULF6r07Lf6ePe17+zNWk9/a1+3cuV
y2Yp6Y13TvVOOy4nJ9WNwcWtbQ4+n7fT+moMaLsnFazIpFhsY1hoqcxzSS33P/R0tfs/rqEcjAxJ
4pbnp8nD+/H1NufxnKMkYjHAiok1L+d4/wDMzlKHy/3Mnreuy+qYGG4MybmsedQ3UmPNrNyNRkU5
NTbqHh9b/ouC5vpeFjdSzuoXZbTaWWe1u4ge51ndnu9ra9rFv41VeLS2jHrDKmzDZJ5O4+50qtnx
4sdQBkcori29v1R4vT+k6HJ5+Yzk5THHHlzxDHRl79wnwev9D9GTZSUBZ4hPvb8PioG5TJJQNje2
vwUTY48aIGQUkJA5MKDrf3R8yoJQmmRUsSSZOqSRIHJATF7fj8E2lP8A/9L0b2p/Zsfv2+jH6X1I
2R/L3e1fMaSbH5hvv+j830RP5ZbbH5vl/wAJ+l6P2X6rfsv2P19dnpbN8x+ZtUrfsXqt+1fZvtGm
31tnqfyPpe5fMySnPz/5X5f8P/0Vqj+a/wAh83T+a/8AYj9Mu+xfaRv+y/bJETs9bd+b/K3qZ9L1
2b/S+17T6W/b6233bvT/AD9v018xpJp6fznyH+Q/1a+PX+a/nBt5/pf69+mMj7Dub9u+zept9v2j
Zv2/2/dtU7fs3ot+0+h9l09P1dvpcez0t3t+gvmRJIbQ/nf5f5tB3y/zO3Xf/qz9O0fZfQf9n+z/
AGbX1fT2+nx7/U2+36H0lHE/Zfq/qgxfVg/zJZujv9D3L5kSTuk/5z+X+cUN8X8z+3/qL9Q0/ZN9
v2f0t+79P6e2d/8Aw2z8/wDrouvaF8spKOe/X/C+Znx/KPl3PyfJu/Up3/7lA+f4r5dSUZ+q5+of
uT+/tC+XUkFP1CfU/wByiZ7z818wJJKfp7RPovmBJJT/AP/ZOEJJTQQhAAAAAABTAAAAAQEAAAAP
AEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwAAAAEgBBAGQAbwBiAGUAIABQAGgAbwB0AG8A
cwBoAG8AcAAgAEMAUwAAAAEAOEJJTQQGAAAAAAAHAAgAAAABAQD/4Rk/aHR0cDovL25zLmFkb2Jl
LmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pO
VGN6a2M5ZCc/Pgo8eDp4bXBtZXRhIHhtbG5zOng9J2Fkb2JlOm5zOm1ldGEvJyB4OnhtcHRrPSdY
TVAgdG9vbGtpdCAzLjAtMjgsIGZyYW1ld29yayAxLjYnPgo8cmRmOlJERiB4bWxuczpyZGY9J2h0
dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMnIHhtbG5zOmlYPSdodHRw
Oi8vbnMuYWRvYmUuY29tL2lYLzEuMC8nPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSd1
dWlkOjFkZTFhMTc5LTgxZWItMTFkZS04ZTA4LWU4NjJkMzcxY2YwNicKICB4bWxuczpleGlmPSdo
dHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyc+CiAgPGV4aWY6Q29sb3JTcGFjZT40Mjk0OTY3
Mjk1PC9leGlmOkNvbG9yU3BhY2U+CiAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMwMDwvZXhpZjpQ
aXhlbFhEaW1lbnNpb24+CiAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjEwMDwvZXhpZjpQaXhlbFlE
aW1lbnNpb24+CiA8L3JkZjpEZXNjcmlwdGlvbj4KCiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91
dD0ndXVpZDoxZGUxYTE3OS04MWViLTExZGUtOGUwOC1lODYyZDM3MWNmMDYnCiAgeG1sbnM6cGRm
PSdodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvJz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxy
ZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSd1dWlkOjFkZTFhMTc5LTgxZWItMTFkZS04ZTA4LWU4
NjJkMzcxY2YwNicKICB4bWxuczpwaG90b3Nob3A9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9z
aG9wLzEuMC8nPgogIDxwaG90b3Nob3A6SGlzdG9yeT48L3Bob3Rvc2hvcDpIaXN0b3J5PgogPC9y
ZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9J3V1aWQ6MWRlMWEx
NzktODFlYi0xMWRlLThlMDgtZTg2MmQzNzFjZjA2JwogIHhtbG5zOnRpZmY9J2h0dHA6Ly9ucy5h
ZG9iZS5jb20vdGlmZi8xLjAvJz4KICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0
aW9uPgogIDx0aWZmOlhSZXNvbHV0aW9uPjcyLzE8L3RpZmY6WFJlc29sdXRpb24+CiAgPHRpZmY6
WVJlc29sdXRpb24+NzIvMTwvdGlmZjpZUmVzb2x1dGlvbj4KICA8dGlmZjpSZXNvbHV0aW9uVW5p
dD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNj
cmlwdGlvbiByZGY6YWJvdXQ9J3V1aWQ6MWRlMWExNzktODFlYi0xMWRlLThlMDgtZTg2MmQzNzFj
ZjA2JwogIHhtbG5zOnhhcD0naHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyc+CiAgPHhhcDpD
cmVhdGVEYXRlPjIwMDktMDgtMDNUMTg6MTA6MDctMDQ6MDA8L3hhcDpDcmVhdGVEYXRlPgogIDx4
YXA6TW9kaWZ5RGF0ZT4yMDA5LTA4LTAzVDE4OjEwOjA3LTA0OjAwPC94YXA6TW9kaWZ5RGF0ZT4K
ICA8eGFwOk1ldGFkYXRhRGF0ZT4yMDA5LTA4LTAzVDE4OjEwOjA3LTA0OjAwPC94YXA6TWV0YWRh
dGFEYXRlPgogIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENTIE1hY2ludG9zaDwv
eGFwOkNyZWF0b3JUb29sPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiBy
ZGY6YWJvdXQ9J3V1aWQ6MWRlMWExNzktODFlYi0xMWRlLThlMDgtZTg2MmQzNzFjZjA2JwogIHht
bG5zOnN0UmVmPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYj
JwogIHhtbG5zOnhhcE1NPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vJz4KICA8eGFw
TU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICA8c3RSZWY6aW5zdGFu
Y2VJRD51dWlkOjJjY2MxMzM2LTgxZTktMTFkZS04ZTA4LWU4NjJkMzcxY2YwNjwvc3RSZWY6aW5z
dGFuY2VJRD4KICAgPHN0UmVmOmRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQxZjBj
MDA2LTdmNDctMTFkZS05Nzg5LWJlNTYzOWVmMTA2ODwvc3RSZWY6ZG9jdW1lbnRJRD4KICA8L3hh
cE1NOkRlcml2ZWRGcm9tPgogIDx4YXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hv
cDoxZGUxYTE3OC04MWViLTExZGUtOGUwOC1lODYyZDM3MWNmMDY8L3hhcE1NOkRvY3VtZW50SUQ+
CiA8L3JkZjpEZXNjcmlwdGlvbj4KCiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0ndXVpZDox
ZGUxYTE3OS04MWViLTExZGUtOGUwOC1lODYyZDM3MWNmMDYnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9w
dXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6Zm9ybWF0PmltYWdlL2pwZWc8L2RjOmZv
cm1hdD4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9
J3cnPz7/4gJASUNDX1BST0ZJTEUAAQEAAAIwQURCRQIQAABtbnRyUkdCIFhZWiAHzwAGAAMAAAAA
AABhY3NwQVBQTAAAAABub25lAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUFEQkUAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApjcHJ0AAAA/AAAADJkZXNj
AAABMAAAAGt3dHB0AAABnAAAABRia3B0AAABsAAAABRyVFJDAAABxAAAAA5nVFJDAAAB1AAAAA5i
VFJDAAAB5AAAAA5yWFlaAAAB9AAAABRnWFlaAAACCAAAABRiWFlaAAACHAAAABR0ZXh0AAAAAENv
cHlyaWdodCAxOTk5IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkAAAAZGVzYwAAAAAAAAARQWRv
YmUgUkdCICgxOTk4KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxY
WVogAAAAAAAAAAAAAAAAAAAAAGN1cnYAAAAAAAAAAQIzAABjdXJ2AAAAAAAAAAECMwAAY3VydgAA
AAAAAAABAjMAAFhZWiAAAAAAAACcGAAAT6UAAAT8WFlaIAAAAAAAADSNAACgLAAAD5VYWVogAAAA
AAAAJjEAABAvAAC+nP/uAA5BZG9iZQBkQAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAQEBAQICAQIC
AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEIAGQB
LAMBEQACEQEDEQH/3QAEACb/xAGiAAAABgIDAQAAAAAAAAAAAAAHCAYFBAkDCgIBAAsBAAAGAwEB
AQAAAAAAAAAAAAYFBAMHAggBCQAKCxAAAgEDBAEDAwIDAwMCBgl1AQIDBBEFEgYhBxMiAAgxFEEy
IxUJUUIWYSQzF1JxgRhikSVDobHwJjRyChnB0TUn4VM2gvGSokRUc0VGN0djKFVWVxqywtLi8mSD
dJOEZaOzw9PjKThm83UqOTpISUpYWVpnaGlqdnd4eXqFhoeIiYqUlZaXmJmapKWmp6ipqrS1tre4
ubrExcbHyMnK1NXW19jZ2uTl5ufo6er09fb3+Pn6EQACAQMCBAQDBQQEBAYGBW0BAgMRBCESBTEG
ACITQVEHMmEUcQhCgSORFVKhYhYzCbEkwdFDcvAX4YI0JZJTGGNE8aKyJjUZVDZFZCcKc4OTRnTC
0uLyVWV1VjeEhaOzw9Pj8ykalKS0xNTk9JWltcXV5fUoR1dmOHaGlqa2xtbm9md3h5ent8fX5/dI
WGh4iJiouMjY6Pg5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6vr/2gAMAwEAAhEDEQA/AN/j37r3
XvfuvdJjdG99mbIp6Wr3pu7bG0aWtmanoqndGfxWAp6uoRPK8FLNlaukjqJkj9RVCWC82t7Ntp2D
fd/klh2LZbu9mjXUywQyTFQTQFhGrEAnFTQV6DvMfN/KfJ9vb3nNvNG3bXaSvoR7y5htkdwC2lGm
dAzUBOkEmgJpTpJ0venSVdVU1DQ9xdWVlbWTw0tJSUvYW0qiqqqqokWGnpqanhy7yzzzyuFRFBZm
IABJ9nM3t9z9bwy3FxyRvCQIpZmazuFVVUVLMTGAAACSSaAZPQYtfeb2fvrq2srL3W5amvZpFSON
Nzsnd3chUREWcszMxCqqgliQACT0KfsIdST1737r3QZ4/uHrnK9f5TtOg3F59iYWPMy5PO/wjOxf
bR7fqJqXLt/DJsZHmZvtJ6d1tHTuZLXTUCCRXc8kc0WfMlpyhc7Zp5inMQji8SI6jMoaP9QSGIag
wOXFK91D0ALL3Q5F3Hkjcvcez3zXyZZrctNceDcDQLR3S4PgtEJ28No3HbExelU1Agld4fLY/PYn
F53E1H3eKzWOostjKrxTwfc4/I00VZR1HgqY4amHzU0ytokRHW9mANx7D17Z3O3Xt3t95HovIJXj
kWoOl0YqwqpKmjAioJB4gkdDHbNxst423b9326bxNvuoI5onoy6o5VDo2lgrLqVgaMoYVoQDjpx9
pel3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu
vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691
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

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_Themes/NewsDurham/images/related_arrow_ico.gif

R0lGODlhCgAKAJECAJmZmf///////wAAACH5BAEAAAIALAAAAAAKAAoAAAIRlI8IqZsA4Yvy0Gou
E/jtXwAAOw==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/Newsdurhamregion/;pos=1;tile=2;sz=300x250;ord=123456789?

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
VuxHLylUyPiNa0Y7CHhUiB1AHUDOFAHfhQM//9k=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_Themes/NewsDurham/images/jsHeader.gif

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

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.mediamash.ca/thumbs/c90eb772a9c5.jpg

/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
SlBFRyB2NjIpLCBxdWFsaXR5ID0gNDAK/9sAQwAUDg8SDw0UEhASFxUUGB4yIR4cHB49LC4kMklA
TEtHQEZFUFpzYlBVbVZFRmSIZW13e4GCgU5gjZeMfZZzfoF8/9sAQwEVFxceGh47ISE7fFNGU3x8
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8/8AAEQgAWgB4
AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF
BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi
o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E
AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR
BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG
R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A
vPZhh0wRV6IYtDn0p6rnk0l0D9jk28cVkzYSxbzrUr16isBVEF46kYAbOPbvWzpEnyuD25rL1dPJ
1NW/hfinT3M5GxANkhA6Z4/z+Nc3rd1LDJPYbU8kyeYDjnnn+tb9q+6OJ/UYJrG8WQ7bmCcDh02n
8P8A9daEi2cjfZEDNhfvH8v/AK1TWcjSuXz8pPA7VnM7CFEUZ3YHParlkjRH7x21zy1NUi/NCrOo
xjjPTjPtVHWPmuknU/6xf1B//VU9zcFmwgOF5P8AjVDUNQESIscCTkksrN/DnFXRfLIiaujpHmRo
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
e8UInkRPtXfuxuxziitoYak1sQ6k77n/2Q==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.mediamash.ca/thumbs/4b9b9efcd486.jpg

/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
SlBFRyB2NjIpLCBxdWFsaXR5ID0gNDAK/9sAQwAUDg8SDw0UEhASFxUUGB4yIR4cHB49LC4kMklA
TEtHQEZFUFpzYlBVbVZFRmSIZW13e4GCgU5gjZeMfZZzfoF8/9sAQwEVFxceGh47ISE7fFNGU3x8
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8/8AAEQgAWgB4
AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF
BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi
o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E
AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR
BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG
R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A
3riwt3DNti3Y+9tAI96tJaxT2kYnjVmZBuOOc4qcQQg5ESA/7op9JKwGPJoVsx+VmGfxqjJ4dKOd
rAr6ZwTXRsCW+nSqOq3Zt4gsTDzZOB7epqlJrYTORmt5I7llLYCHnae/pVi2S4uplijOSf096Juo
jQE9vc10WlWQsoAWAM8n6D/Chty1Y0WbO1WzhEaZdzySeM/X0FOa2mk+9csg/uxjAFWUXaPUnqfW
hyQjFRkgcCkBmXCR2wJkup+PQmkspBPcqqTtNDt3EN2IPFc9qNzM0zb5Bu3Y2g5xWpoaNDG124LE
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
UIsAYpQKUUpoAY1FBooA/9k=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.mediamash.ca/thumbs/4877a2b25033.jpg

/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
SlBFRyB2NjIpLCBxdWFsaXR5ID0gNDAK/9sAQwAUDg8SDw0UEhASFxUUGB4yIR4cHB49LC4kMklA
TEtHQEZFUFpzYlBVbVZFRmSIZW13e4GCgU5gjZeMfZZzfoF8/9sAQwEVFxceGh47ISE7fFNGU3x8
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8/8AAEQgAWgB4
AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF
BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi
o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E
AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR
BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG
R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A
mEdO8upgtO2Vz2NCER08JUgWnhadhEWyl8upgtKEosBB5dRXJEMDyH+EZq7toa3WaJ1YZ6Y+vaiw
GFb6G+owSXU0rFicRg8CqVsLi0vhazq21sgZ559q7IsLdFgSNjkcEDpWI5ju74SIdyoOOO5qpPQd
iB4vaoHhrTeOoGjrKwFRYOBxUgh9quCLinCOiwFLyfair3l0VVhFgLTttOUU4CqAYFp4FLilxTEI
BQ7LGhd2CqOpNO6Vzerah9ok8tD+6U8e59aaVwuaj6zZqwUMzZOMgcCo9Nu3ee7aZ23qciMnhR7V
zMjHcPrUgvJ4545onCso2nI+99fw/lV8qEnqdZd6nItq0sSrt5C5PX8Kq6YmbfzcY38j6VgXV3JJ
p5MTkDOGT+6aNI16S0VLecb4QcA91/xqGmy2+h1DLUZSrBwRkcim4yaiwhNlLtqUikxTsBHtop9F
VYQq1IKkuIdn7xRgE8j0qMGhqwC0UUUAU9VlMVhJg4LfKPx/+tXJO2QT6NXQ+IJcJFF6ksa5otgs
h7k1cdiWIzbpD9RQ3Q/nUcJycnuae7ACmBFKSVKjjJ5pzW0Yg81ZUJ4GzndTM809EMjBF6scc0Ad
Zos5n0yMtyY/kJ+nT9MVQGqX2ZmVImSJsHIORyff2pljp16DPaJIptmYeZIp447Amuo8iFoVAjVg
FAGee1Qkhu5Xt5hcQLIvRhTyakMaouEXaPQYqpG7O8mTwrlR+FK1hkuaKSigDVdQyFSeD19qoMDG
5U9u9Ww3z44GaZMvzBsYz71o1clFfdS5qUxBuvFRPGyc9R61Fh3MfVLK4vLweUo2hAMk4HU1jX2l
XNqpldVIHXawP6V1jHGG7iodRt/tNudvORRzWRSimcNHknbTm5yew4FPeJoZGjIwQcUu0Ac1RBDt
JOAMmrVkVjuoiwDnePl7dagduMDgVf8ADYV9bgV1DIwYEEZ/hNAzo7+5UsViWAs/y7VHP5VdiQpb
RxuckKAeaiSytbWdnhiO49yScfTNLKBJgkMMehFJKw27krcjBP61lQX9ukjxvJtYsTz7n1q88u1S
SDgDNcxaz202oQEYk8xCkikdD1FJiR0wdWGVII9QaKxGxpd+pQkQS8Fc/wCfaiiwzrDgjk81DLcq
JcA/d6ketRGV5Adp2jJ+bHX6U1Lcdixq2SWY7lWOMmrAww6ioY7bA6/rVhVIFAEMlsr9OD7VXMLw
jB5U9K0MewpGUOuGHFJq407HNX2itdusiMsbY7jrWLqGmTWLDzMMh6OOhruWgbecY244+tU9V01r
23CADht2M4qVdFOzOAcHOAM1o6PaSrP5p3IR0IODV6TTWtOWiKknjI/manjYIoCjmtEjO5fSdhwW
LfU0jyFmBD7VHUGoFYKMZ5pHkAXk4ptBckuHBhcc8qRwK5W0iK6gywknytzL74rfN31QgMDUUbwR
vujgVGz94Dn3rNtLQOZJj9aWN9GjkAJkZ9wPoMf/AF6KLCbyrMW87bsZxn07UU7od0dKluhPX86s
LEAMDFNWn0wF2AUuPalH9KcKAGYpcGnUtADeaOfanDrSfxUAN2hgc1XfTLR85hQZ7jirdIaAMS60
dogzwPuAGdjcH8652W4LdPmY+nQf412GpE/ZmGeCpz+VcWvDy4/hTj2qkxDUfDHJyalEgNIiIbYH
aufXFVm46cVjJXdzOUbu5c3A0VTJOOtFTYjlP//Z

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.mediamash.ca/thumbs/762176389066.jpg

/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
SlBFRyB2NjIpLCBxdWFsaXR5ID0gNDAK/9sAQwAUDg8SDw0UEhASFxUUGB4yIR4cHB49LC4kMklA
TEtHQEZFUFpzYlBVbVZFRmSIZW13e4GCgU5gjZeMfZZzfoF8/9sAQwEVFxceGh47ISE7fFNGU3x8
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8/8AAEQgAWgB4
AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF
BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi
o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E
AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR
BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG
R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A
yXnBPmwALggN2yKS9udkzuhBLKD+NFnh4CCm5hn5qr2UIvblopTsUZ+4ME4qEU+xTeZmfe2C3rit
KC4EaqCqEY5+XPNF5o6wwGaOU7APmD9RUMUmFHmDIPTB7VWjJJ0n864UBcAKRUzyZyJFRtuRgjpV
NreOdh94DBOR61eRVQbQCccZzVXurE2tqWEXzrbEMAYpkE8bQMVDbIIJo0uYy2CABkc881pRT7Ld
UCfLtHGOtNfYUjOPmVh0+tRe7NHGyuWbGJtjOkBZGdiuHAwM1sWX7tJARyo54/2VrGt55I7FJEUs
BnKhgG69s9awbmSdrmWWUsrMcnORVGaR6CZE3L8w4BrhdS1KJleJFLHIy3brUC3VzEH8uaTGMkK/
XPeqaQtOzAcYGeaRdjWt7hJ7Z2j4OQCCafDIOjAdfWotFh8uKR+5IJB9QD/jWrbWjXEwQbCSN3zU
0hMoRyDJBU8+lFaMumtb4MkcZ56oaKdhGRCQoxwv0ApltBFHfRtHwWY7ueuRSQyJM5VN3AycipPL
dGV0HzKcisL2NrE97C0thKgbbtcZPtkf41RnhWVCYSFI6L6irLyXMqyoVOHIP3cen+FVynkH94wX
Iq0yGQ2TknMkqIq5ADc1o3DR+QfKAd5PlXbzkmolCuRsuNmODwOfzq9olsjanNIWEphQYJAwCfpT
3YgW3ltY4Un+V9vTOauR2Ba3Ei53NyAarXs7Xl1gYIB2oVGCa6ONNkSqf4VA/KhLU3qRcYq5zvmR
RN5bYSQfwuKshY3gbzYscjlPSotft43UujoJQM7dwyaxYL+5tFKRSYXOcFQf500mYtKw69WKaTMY
2KOB0zUNnDI11FBn5XcA/nTPN7N0rQ0RRLqUWOQMt9OP8aVn1H6HQzWdqhIWBVBHOwYqGHbA7PDl
TjABGcVLdTFCx5x0rNkmYDKferaLS3MXd7E95dv5bF8Z2kce/GaKpztuQCQ7dx67SaK1jOBLjIoa
bHtaUn2FX8A1nxO8Urqo+XccgjkVdjYlQTXAzqRNtHNVby3E0JxkMPTuKn3UjSrGpZugpDsY8Sss
m1WbeRhcdfw/CtPSGkt7bUeSWOwc9R1BpLYJbXv2qTaBtY+wJGMfrRZzTxzbYzmJ2AbP3TmtoptB
omSQSCKWOTqFYH8jXTXpD2cwB+V4m5B9q5yPT5pyRBG+wMQrHgEfjWxKVsdIaK5mQsI2VSTjJwcA
UI2xDjJJpmRHoNk1pau2/wAyWMMx3dyM1z68IAK6ddY09bS2jEp8yOMAnacZxjFcorgIv0q0cY85
PTrU6XM1q5NvK0bINu5fTv8ArUcZ4Ljnb0+ta3hqFJNQd5FDKkROCM88D/GmwRbtbmea1ia4cSMw
yWIAz6cDFLJC5IkCjAHTnn8s1rTRWbIT5SDHtj+VVjBGyfupCPYNTUbohuzMi6z8m8AYBIGelFTX
SD7Up3FuB9BRTcXHQE7mZG+4k9SSTmrsX+rrPgTBBz26Vowj5Pxrkkbx3FoxxTsUVJoZ80u5yOdv
QVPFIyoA6Acdj1p80aYLFeex96rFmPGM4rshyzic7coPQ2o9dMNokYjG5eC7HgD6VnXN/JdPKZ4z
IhUhFY42nsazmm3OqkYAOTTpZvMHXH0703FdCU77lk6ri28hLKBSF27sZJ4rM3OW5bYAoUBTwcDF
ONNxT5QuWooBLbfIy7weRjFa/hyN0W5Ypjoufz/xFc8rmNgyEgitmyuZjKgilKqV3so6dKzaaYzV
u5mjQjA6+uaolt7naxXjr3qRpZXGSQcCqzTPFFNM4Hy4+bAK9e9DcktGKyb1IxLL9pffIWVV4GOv
Az/MUVUtZjcvcTkcfKij25NFCbGOiIY8flV+HGz8apRIAeBV2EfKaxkaxH0h6dOlOprrvRlzjcMV
BZC8iNlExI3cKQcfWo45BE8jKu3aMspHIFRTsUcKVjO35SRkY/w/+vVKYnzmLE8jH3j0rWEb6Gcp
WJbxkOxwRvYZYA9OKrq3GKhchZMKABinjjP4V0RVtDNu48dcmkZhTSaaSKq4gZuK2tNTZGzn+4B+
f/6qwmNbtrIrWwZQcFsDPsP/AK9ZyGXgR5TZzyQDjv7VR1RCdPKKQGdwMdgAM4/lVovhEA75NVNR
njDQxNkYTd7DJ/8A1VDGRafAY7aNDjLuWOPy/pRU4wi8fwJj8f8A9dFK4WGR1bi6GqqdatRd6zZc
R5opabUllK6tHkmcqwCv71TuYPJKhjvyOPatl/uj61lamT58YzxtrWm/eRnNaGfKMkdAOlAUqMno
e9TdbOf2dMfrSW33GrfqZ9CLNNLE9M/hVplHHAqvMSDgUXAZwD83X0rbtxstoV77c/mc1gt0rd0c
mS0O8lscDPOKhjLL5LhOeABWNqE2++lI6Bto+g4/pWz/AMvX/Ax/Ouef77fU0mBdhv3ZgkgB3HBb
vRVKP/XR/wC8P50Vmy0z/9k=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.mediamash.ca/thumbs/3949324307b1.jpg

/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
SlBFRyB2NjIpLCBxdWFsaXR5ID0gNDAK/9sAQwAUDg8SDw0UEhASFxUUGB4yIR4cHB49LC4kMklA
TEtHQEZFUFpzYlBVbVZFRmSIZW13e4GCgU5gjZeMfZZzfoF8/9sAQwEVFxceGh47ISE7fFNGU3x8
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8/8AAEQgAWgB4
AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF
BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi
o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E
AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR
BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG
R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A
xQkKD90CSPbkUnl3G4qoRfQ9CKatv5kYdmZXHXv+FDK6OGlOAoAC5OMnv+lSMn3kxkEg7erEVB5c
YkJMjgkZ2nvT4yApLscHPJGAP8arzNImCJQ69DxTAnjlYKUO3djiqwy2VePkHJIqVDHOBgsD6DFQ
iWZRsIzx0PcUCFIjCNljyc+2alimZYdykSAH05qstrK3y9AT+FW44BEh2uFOOQDzQACRgN2Qu7oP
St3VNNjsYrcRBm3LlmJ71iQxQ3M6R8guwAIrrNbCzyGA4IWPcB3zUSlYqKuc2ZQrOyDLY6k8Uw3A
jJaYbR7cmqkzbXIw4Y9QKijjLk7ywJ6E1diS4b1JNqwqOvUipoJ1WJl8hGdud7DkVUWNo+gTHt61
ITLjKkBh2xQA8pM7O2wje2T82Bmio0uXDETEhscDsKKBFxiI05Uuc4BP+FVp5XkmHmDMY/u1JFHc
uoURvIB2OOMZ4/ShpC0e9bZgq9W2cCpKIvMX7kcZBbgbu1NhtnVwZArDOcHOKlluUJUlXVx1BFEb
tKrNEBuA/iO3NUISSC2Zl2goT0PIFPhtYQRiNW7n0H4mq5ebg4YYPJCZFTPeOkYKxu4I6miwEksP
mDKk7h1wcYrLZG37iQT1o/f3L7sHJ4zjr9alEGwkySIvsDzQBa0Y79UtkIAy4wPxrc1ef7PqMDKD
vUFjnkEdMfzrG8PvG+u2ygcKSckckgGrWvtM+qyeSh8qABW449f61nJXkWnZFfXbdY2SaPmOT5lI
HTpWbHO2evHv2raupHXRZlPIXBH0JrnX2ggrxwOhPpVQd0KSsy/HKj5Vuv170sqtGTIrDb2z3qmG
MUaFZFJYZwOq80sdzMPVh6NyKokc0zO2Nq4/GimIrFs4NFAjrtMRD5IA/M8/dapbgLHaOrkeUZCG
/P8A/VVFZ4rXyWyfNA+bnHFRXkrmZxuOGO4LnIHejke5fMtiLUW8++LxodjKoyOcf5zS28INuVHL
BgD+tJHI6wlBIFBPI+vFW7aeOy08SS/MfNkx7/KAP55ppXYmws4sRyIuTuwefY1T1GOOBctIR5bl
eR1xV1L77OUcywPGhyVT7xBPTpzVbXZc/ao9h+dt4PHGD/hVSTQlZmOzq+SssmD6gVF5bE53fiai
B24zVi3QXNykTOVVupAqQWpraAiwX/2gxlpBwvzYA+ViTjHt+tQa1dNLqc6xSZV2HHTsP8K6a006
1tlhjjv2Kx9io+bkn8OtZGoaP9rlD2GwAoXKE9DnjFZ3s7sq2liRbYTWv2eVhgMVcg9QG5x+FYiX
ESShk02NthyCzM39cGulkjEUkozwQzZx0JGayLWOBHKMhckn5ivHSsqTdn1NZxTa1sVtasobdzLC
nlqXcFc56HGaywwPQEZ44re1eNpYGIBPzyN/4/msu1jglhZQricN7EEYreGqMZbkCxyOP880Un2k
4IUAUUxGvq8QS4VUfcTGCTn61cgvYWs4vNjhWQIFLOpywBHb39frWRfqftqlZzNkZ39M96t288IR
ElnjUjPyMD/Or6B1LMoW4cyWsWFxkopzjHWn3UJeyRShIClz7E//AKqqQaokLOxLAE4DRnk/h2FW
LnVZJpDDFCI1YYHrjpSAr2kCG5i811ZNw3AAnI/Ktu/jhuYDHAMsSJFJ5B46EVlJbtDvk2/MFyPw
qOPUS8+ySIjAyCCf8a0naWxMbooX9o0Vz+8G0OSTsHH4U2GMJeqsauCpOd1aTXM7oDyMDgEZ7jvU
alnkZpmOFAIAHBb0rJ6I2pK80xpvCr4Zhx6bv8a1NK1mytLTFwrGQ9wpPFVF0UTKJ438yIn5mJwf
WtW20YRRM1ncxBmH/LWLJH49vyqXTTViHKzM5tVt5ZTIkeUbggKdxpDc2qgs1pdqB1Jjx/Wm3MF/
DcYKo7qRv2RcH6HFQtcmZGiljLBx0Axn8qSpJbNjc29x8mowPbSpllUxPjfwST2FZdqjtZTiGJ3L
Oo3begwSefyq22mpndEssbY6MOKtWuNPt5y+eSGIA498VaVhXuZFppz3BkDNsMeMgiite1AaOSbK
h5TkouCVA6UVpGKauZttMhuFUC4lEYAabCdPlHJ4/wDrelSxaZH8sszZc9tuMGtaSymuEVJAcISV
56Uq6S6/d4993NZ8xpYzREuMuigdcAn29KdO8O8KsSgkHDDPGemPoa1YNL2nLtj6DP8AOpJbQof3
IUdiScH9KTlcaiY1w7eTt8oRqq5yBy3aoVW4RlKwMGcDBx16f1raksXZdrhCnViVzms5bEx7m8pj
x8u04Gc/SlzLYqMuW+3zM+6YWpxPHtPsM/yprSoWVBjOA3NXbjT5ru1eNeCSDyfQH/GoItJuZZ0x
EpIG3cxPTBz+lDOmFS13ZEovrhYzEs0aoccKAAfyqRdRuwABPHj6CmXtqhuZYZIY4XjwIyMfN9QC
D6VTksp1aNBbRsh53BuufTmnZrqT7SDV+VGit/dKSROmT14qsbpVlbcsO4gk/u/XrUVtYSzSYMCA
Z7N/9etXTdI8u5eW7iDFeFG7HBx2xg9+9LmfcmU4ct1FXKBfbtCxqQwDA7/XtSbgrZNpG+f7zZGf
yrYvNJt7qGUG1SNwP3TIQpB+g4xWXNoUjWNoCu6Rd24DAIyc80+ZvqY88P5SPz3ySsG3jGFIA/LF
FamnaNZwmUXVusvmYABXO315HI7UUlN9yuam/smuLqA/cJc/7CE/0qVZssAsbAerLio1Zjtyx6+t
E5IjJBweaRm2h7TKrbSV3dfWk8zP/LTGegC0wHhfdaUE7yM8ZpCuP3fKSV/MZoHPOCPwFLn5vxqS
PkUwuRgEMMDJ/wB4YprJI7jopU8FTVxAM/hSMBg8UDKpgRjlokc5zuOCSaeUwgCkDaMD5elKwAPA
A+lNTndRdhYQpKeVK8dcd6d+95+YHn06UZIjODjmmRc5J5OaBEq59/zoYt/c/WgcYxxTx0FFwGbC
R/jRU3f8KKLgf//Z

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.mediamash.ca/thumbs/869327549713.jpg

/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
SlBFRyB2NjIpLCBxdWFsaXR5ID0gNDAK/9sAQwAUDg8SDw0UEhASFxUUGB4yIR4cHB49LC4kMklA
TEtHQEZFUFpzYlBVbVZFRmSIZW13e4GCgU5gjZeMfZZzfoF8/9sAQwEVFxceGh47ISE7fFNGU3x8
fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8/8AAEQgAWgB4
AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF
BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi
o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E
AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR
BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG
R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A
s6YDBHOdwO9tynFWPMDuT1AAAA4Gef8AGqen7mVhKuzd2K4Iq2WRc4b2Jxz0rjd7jHOy70JXcTgb
u+cf/Wo3bmc4GAoyQeTUQ3BkCZ4OOB7d+Ke8n70mQ7ht5I9cmhARXTgWzI4PQgH3wazrF3GpwjgM
oKk9OgIq/eTK0TcFTjgjjsfzrOLBNYypzlh/IVcdmBtGQYYyKM7h+YxVe/dX0+ZQ2crlQR6H/wCt
TshAzEDOSaRwrj51JBBwB0NZ9bgQ6bIz20e0gkZUg+lLsbzHZmAbPOKp6U/lGVGzuXj0+tW42AeQ
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
j1oqGB//2Q==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_Themes/NewsDurham/images/btn_jsLeft.gif

R0lGODlhHgARANUAAOTk5H+evcTe+LnU7uLi4vDw8PLy8tzc3Pz8/Hyr2Ofn5+fm5dLS0pnI9trk
7G+Vuu3t7WSLso7F/ODg4Nra2nefyOft8+3z9/r59+7t6rXH2Yq/9ff08/7+/tfX1+vr6/n5+erq
6tXV1fT09NnZ2fb29t/f3/v7+/3+/fbz8cnY5oq56aHM97bQ65Ktx+np6ebo6ePj4/78+/z9/v39
/f/+/fX19e/v79bW1vf3997e3tjY2Pj4+Ozs7Pr6+v///yH5BAAAAAAALAAAAAAeABEAAAb/wN+v
BOkZj8iksgfxCX9Fnm9KrVqvPlsP9AN9nuCweOwLdQqjsXr9O71ANxsbPHNouOHsKxef/3wqLhEa
YR1ZBQt8cmsWGgERERUXYIY2BT0AimoOLg8RDxUJLWA0PiOXCgSahTWBoAkrGwI1NDQIPCM3Hwox
E6s/tiA8PDI8Di0NEhINFxg5JQYQIQsEJjo8fR0nOTYGBQUGBhwcFgIsGwMpBTc9CgAEOgcH2DYd
uAbsHx8h/CEZGS9UtICx690EeTvm3TAAAt+HFwsASJw4cUGMiwQOHiDhAce8Eh+ivTCoo6TJkyXl
ccQhoqWJDj8UyIxh4sCOjjhy6tzZkoFPJ58eDAhB8KGXPAo7kipdutSDUxI6hIJBkKNq1WFYs2rl
kQMETCFBAAA7

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_Themes/NewsDurham/images/btn_jsRight.gif

R0lGODlhHgARANUAAHmbvOTk5LbI2uLi4nCYwvT09P39/fLy8puzy+7z9tzc3Ojo6Obm5tLS0u/v
74Cz49Da4oqz3P7+/uDg4Nra2uzs7N7m7pDE+Ym67N/f3/79++jn5vf4+tfX1+vr6/n5+erq6tXV
1fHx8dnZ2fv7+/P3+r/Q4qvD24anyIit1Km/1u/t6vTy8ff08afG5qjR+3OgzYa35+rt8O7t7Mzi
+NTk8tbW1vDw8N7e3vX19ff399jY2Pj4+O3t7fr6+v///yH5BAAAAAAALAAAAAAeABEAAAb/wN9P
5+gZj8iksufwCX+OCs9HrVqvWF+u8vl9PM+weEz2gSSiAnnN/pEWn1uObREk2kLtQidncwAAKhZr
Elo3DHxzbCYEMDAIEBxhhTk3FQGJbQkRGDGOKAIlPwY+BZYbA5liEgYGPwkpGBcXMREnMgY8BQ4e
GwETqqMGHzw6PBoCBA8XLzQJGloHPSAMAxk4PH0SJDo5ByIiBx4ABC41Ny0sIjdRCwEDOAoK2TkS
ugdRHh49EJArKx5ACAThbsAEeTvm3TjwYZeHBQwCSJywwZfEi+8OKhjRwca8HB4K9Cg4AYfJkyhN
yuNoI4TLDBJ+LKgYIIOCHR1t6NzJ02WDKJ8/OxwQYsDDL3kUdihdypRph6cjcAwNY0CHVas8smrd
ylXHh5hCggAAOw==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://media.durhamregion.topscms.com/images/38/d2/68c14ff94667a9c8c8804e61a59c.jpeg

/9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABGASwDAREA
AhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAAAAUEBgIDBwgB/8QASBAAAQMDAgIDDQMJBwUBAQAA
AQIDBAAFEQYhEjETQVEHFBUWIlNVYYGSk9HSMnGyIzVCUnN0kaGxMzY3YnLB8CR1gsLhlLP/xAAa
AQEAAwEBAQAAAAAAAAAAAAAAAQIDBAUG/8QANREAAgIBAwEFBwMDBAMAAAAAAAECEQMSITEEIjJB
UXETFGGBkcHRBTOxodLwIyRCklJT4f/aAAwDAQACEQMRAD8AqU+/3FidOaZlpUESFJSFfaSOLGMZ
+7lUO2tiHcTZbtVanjOoMdlMkZBLTsJLgXvy4lA8P8aqnJMJre0WhFmv93S2/FusdLz6BI71QkJL
aVKI6jjhByPZW60eKLU2hbN0bqhhLCEXNTilDAUmW4MZAOVdX6Qo9D+BNbUQOh1clKQIkpTXCCHB
xHP86wc4LxI7fkT27u7b1tsyo0mQuQ0ElYUr8krmo4zjY8z2Z7azTbvc0dKthpf4Mjw46BJdZaID
bTbC1JHEd+M46scqy1STqzsag4JpD5ltlyC4ytpzpAnyXEjkPWRvWSnO+f6kvHGuP6FPfVc0MqdQ
H3AgZ4UKOTj/AIK9hafFHjNuyqy9XylthKXXWpBVuOkUAP51ao+RKTvk9WeBbX6Mh/AT8q5jYPAt
r9GQ/gJ+VAHgW1+jIfwE/KgDwLa/RkP4CflQB4FtfoyH8BPyoA8C2v0ZD+An5UAeBbX6Mh/AT8qA
PAtr9GQ/gJ+VAHgW1+jIfwE/KgDwLa/RkP4CflQB4FtfoyH8BPyoA8C2v0ZD+An5UAeBbX6Mh/AT
8qAPAtr9GQ/gJ+VAHgW1+jIfwE/KgDwLa/RkP4CflQB4FtfoyH8BPyoA8C2v0ZD+An5UAeBbX6Mh
/AT8qAPAtr9GQ/gJ+VAHgW1+jIfwE/KgDwLa/RkP4CflQB4FtfoyH8BPyoA8C2v0ZD+An5UAeBbX
6Mh/AT8qAPAtr9GQ/gJ+VAHgW1+jIfwE/KgKJrSLHi3llEZhplBjpJS2gJBPErfAFAcUfvk/SGo5
khUdS2ZUkqLZVjjRxE5Sr9EjO3Zmqrkl2x5H7oEqQgNz3ktQgElxTjrm6j6knr69sUSUirbJbGrW
UvtusxoS3mwUtPRpi45cSTn8oBjPMn762WGTW0joWWNbx3Mr1qx4wu+EPXNl5XJpT7TzSj1+WQFD
YevlURTjJKW6EnBxbWzNTWtblp+FHQu5qTkAoaQBw8OOR2+6ufQpSdEOemkxEdVXC6atjzlvuuFK
OAhaQMIzkjA2xv8A0qzgoxKRncy5rv8AbNSaqeucIOtx2GkRuFwY4lJG6+HPZgf+NZZVRpintRuc
1E/bFFDXCCs+SSOQrBQZ1LJFckC9XKLEtM63WxEl2UWuJxTgHClJ58q9CclBpy8Tz8WCWdS0+ByN
uWmQ+ElvhJI+yMpO/XXRZlR7frmNBfPkuM9E2zwh1wk8ShkJSOZx19Q9tcvU5pQqMOX/AB5m+DEp
XKXC/n/P4Fqpz6SR4Qke439Nec+pmn+4/ov7TuWCDXcX1f5Me/3/AEg/7rf01HvU/wD2P+n9pPsI
/wDgv6/kyTOeKseEH/cb+mpXUzb/AHH9F/aQ8EEu4vq/yMLfMceccYeALjYBCwMBaTyPqPb/AMx3
9NnlNuE+V9Gv/nD/AMriz4YxSnDh+HkMq7DnCgCgCgCgCgEOqNV2/SMGNLuKJC25EhMZHQICjxKB
IzkjbY1KTZDdD6oJCgCgCgCgCgCgCgCgCgPhIAyTQC+LfLXOkBiLPjvOkZCELBJxVnCSVtFVOLdJ
jGqlgoDnevfz6x+7J/EqgKe7hcZaVBKsBXMZx5deZNvVL5nTBbIGQ2uckFtsgL60j11nbLNbDCFO
hSYS4bwZbkIJQCoABQz2/dX0/u0oxjOO6aR4seohKUoSdNN/yLJLVuYbeS6kLSnISgAK3BI9mSDW
mCc8skorcpnUccHKXBIlx5jrALNsVxFocDkcAqG3tNeU8+OU5Rvff+TujiyaVKvIsaFx27dboE1C
VOlABD2OlcWE5KtuzfnXLlcYttb0bwhKSS4s0y5khgrid6dGQMokNt/knB6/1Vc9q4pTko2mekoq
6aOOandlvL6NtpbSZLpR0h2HPfFduBppbnJkhJy45IWkEKVb5rxcUcOgeUeeBW+V7o5oWrOjxBBn
qjTFojKdYVltSBgjbrFVs2VM73WxgJ7wcS437Jz+qK83rn24+j+x3dIuxL1X3ELaUvzmGV5KHHQF
b9VePjismaMJeL3PSm3DFKS5SGEuyLQSuEviT5lZ3H+k/OvS6j9LlHtYX8vwziw/qEZdnKvn+V+B
WFlL3RqBQ4k7oUMEV5NuMtMlTR6FJx1LdD20nNwV+w/9q9noXeV+n3PO6tViXr9h7XqnmhQBQBQB
QBQHL+7j/dizf93Z/Cqr4+WUnwWK9WfVErWtouFtvKY1lYTiXEOcuHJztyOQQOrGKhNUWadluqpI
UAUAUAUAUAUAUAUBg7/ZL/0mhDOOdz3++TP+hz+ld2fuHFg752auE7goDnevfz6x+7J/EqgOfy7n
EjJcYdkobc38lW2cqzXm5IT1y2OlOkrJEKQ2uU2tDiVJVuCDz3NZVRZsgyxwdMtSgkbniPIV9xdd
Gnddn7HysVq6yqvtfcXW6BLdQueHVuR3UlTiz1q4iPbvmvH/AEyLXUQerwv5+R7P6m17CS08P/GX
KJcGZRiXFxvghR0hSpIeKA3jycbdeeVeVPBJZJV5s7seWPsot+H4N0JyLdrk1KkNvKXHK0oCHeP7
QxlSsAcWN8CtIYkm35nNPNKl8CI/a77NU+Z0lEG1xweOS+rCUoHWEjmeysF0zlLc7pdQkkyptLj6
iuUtpTzqsE96dKkDCBsNh18if/lbTx+ypxMVklKVyZXbc4mzwHYiClzjUVcSuYNatanZklRZbg1b
7A5CD6JaWpUduSw8y8FofB6yk4Kcdmdv4Urcumq5PS9aGQkvZxLjfsnf6orzOv78fSX2PQ6NdiXq
vuIYis3aIO14f0NeR0rvqYep6WZf7efobb3rWFbZCocJCp9wG3Qs7hB/zK5CvqM/U4sEdWRnz+Hp
smaVQX4Xq/ASsP3m4SUyrvJbGP7OMy2kJb/8uZ/jXzXV9b7zJVGkvPk93p+lXTxfatvnyLfZjm4K
/YD8Veh0D/1H6fc4+s/aXr9jk2grNqruhaWVMuWsLnEjsvLbj97rwtauZUtWckAnAHq6q9yTUXwe
RFNrkz0k1rDXrk+yXTU0qFFsjhjuPQ/JekucRxxK7AEn+X30emO9chW9rLDoK83Ox3/U+mL5cnbg
zZ0CSzLeOV9GRkgk78iP51WSTSaJi2m0xBanrl3SOnvN11muw21Tqkw4MSSlpYSDjK9x/PPsqzqO
yVkK3vY30lqK56d123pK531u+W+Y0XIM7pApaCMngUQT1A8z2duKhpNWlRKbToi286i7rN1uE1m+
y7LpuK8WI6IauFx8j9Ikew+0UdRXxIVyEXdJsuotNQbTb5d5dvFlduDS2npQ/LMOJz5JV1pIJ/h1
dcxafqRK0X3Vd2uEXutaPt8ea81DlId6dlKsJcwDjI66qktLLN9pCu73LUGvddz9M2W6O2m0WoAT
ZTH9o4s/og8+eR7DUpKKtkNuTpC7WVk1doDSsubadU3C4QVJCH0S1cTrGVDC218+eAR66Jxk90Gm
lsxxqC5z06D0zKE2QmQ+whTriXCFLJbBySOda4EnJ2jLO2oqmL2rfqS86XNwNwWqJGCylpTiuJYG
6j6+vn2Vo5QhOq5M0pyjdmGm7jqK5ByyW+cpKXE8RccUctJHPhPMZ2/+VOSMI9pojG5y7KZETMuu
ldSFt+U4VsuDpQFlSXEnfr55FTUZw2RFyhLdm+deL1rC997xFuhC1EMsIXwpSntV7OZqIwhjjbJc
55JUgvLGp9NsMxpc19MdauJtTT5Iz1jOx9lIPHN2kRNTgqbCZqW6N6bt0NEt9PSBxx10rJUvyyAO
LngYqVjjrbol5JaUrG2mLImTLiSmtSJd8npHoyHFJc5Z4dzvvz9tZ5J0mtJfHC2nqKzp9FxdvaWb
UsIluhSAs7cII3Oeratp6VG5GMNTlUSVcm75pK9IDk5ZfwHEuJcUpKwe3PPr51WLhkjwWkpY5cnZ
4Env23RpWOHpmkOY7MjNcLVNo7k7SZRNe/n1j92T+JVQScK1WtK5TiXeLCVOFPEOWFEbVjDFKM5N
+PB3dT1OKeKEYd5UmQNLQ7Q9KW7dw+I7KQVLacxwg58rGCTjarT1aXpOJO3udbt1/st3REtS2JAi
RWll1x0DLjSW8DYdo3qXJtKzHKqprzNsbVMK9yI0RMKUxMeOyOjykDPWdtgME7dvZWsJxbLzjJbs
5k7NuPSyWIy1uYkKQUhniV9o4HLf1f71nLtcEtOIztF311auFVvbuCGUkKU0qLwNKP8AmPDUK0wm
qdoy1FY5MKUtl4bkBzpUjnxb1KjGXwLOUoi9mbMg28pdZS4lB4uNGELUN8nJ32B/lV6S2ZZTd2K5
LEq3XfvB9KkqI42XQNlJ7c/8665smFq2dWLPFtIc2AtxpReMKMzMKsoWnywR7eWfV21RY5Ou1sTk
yw0taal8D1XXWcIlvSD3zFUfslLjeexR4SPwmvO66Lcov1XzdUd/Ry7Ml6P5b3/JWpMB1ZUkhaex
STg/xrwXiyxlqj4HrRywcafiRYVkbt7XRxo4QOs43P3mqzhlnLVPdkrJCK0x2RNbhvFY8k86RwTb
4EssEuR9Z2l9+vLH2G2w0Vdqs5I9le70MGpt+So8rrJr2aXi3fyKl3CP8M2f3p3+tevk7x5cODR3
JPz9rn/ux/qqk+EIcshwIXhPuva/t4VwmTbEs57OJCR/vUt1FBK5MrWgoOgUQXrJrG2w4d+gurbd
MtSkdKM7EHIH/Aeupk5corFR4ZZNOnQszX6LdpfTaHxGZUty7R1K4GFkYwM7HY4z6+vBqHq07ssq
vZEfuaaihaHdumjNSPIgSo0tbrDr3koeQrG4Vy6sj76TWrdERenZkDuua4td8TarNZ30zENT2npM
hocTbZ3CU8XLJyo+yphFrdibT2RZNZ/416F/0Pf0NVXdZL7yFtru7Hc87q2oIt9UY1vvi++osxY8
jiySQT1faI9g7RUtaoqvAJ1J2be6z3QLK/o2ZZ7TMauEyWgBYjHjS02CCpSiNh2D76Qi7ticlVH3
UP8AhzpL92R//NNbYO9Iwz91Fq0x/ho5+wf/APaqZP3foWx/tFY7mH95JH7sr8Sa26jumfT94g68
R0mtpSMgcXRjJ6spTU4e4iubvsjWyZK0bqYqkR+JbWW3GyccST1g/wACKtJLJDYiLeOe5M1fq8ak
aYZYirZYaVxErOSpWMdXLrquLFo3bJy5dfCPsC8WA2ODbLvCdf6PpFF5o4U0So7dWdsGkoT1OUWS
pw0qMkJ1tNuX5KLAZKklY6ArHlg+z21dN6e2ZtLV2Bv3Pc+OTOSCeBzl91Uz9wvg75P7qP58h/u3
/sar03dZbqe8jo1i/u7bP3Vr8Arkn3mdUO6ima9/PrH7sn8SqgscFvjcqTqOQzGt8mQtK1pKUoUQ
vJKtuznV2/AokTI2g5TSWVSJyW47uC60WlFf3bbEio0liML4y1eI7JPQxIeW3FqTwFa0ggHrJyf6
CsnFm0HFNbGt+6hEpbjjTsl0t9I2+lxRIPrA2qsFZfK9TMoV2vWlJQU3EcW1LPSLaBPCpJzghQ5E
E8/V11ZPzMHY/a1rJ4k+GFttxUFOy21KUVduAds432O9WSiyE5ITW653OTIdC5ankOLPD0vlKSM/
o55ZqqZdpDF1graWjoVqChuSkkmlrzCTHNxmW1/ufMT0toXMc4Y6FKcPE2r7K8DPYFfxrok7hsYJ
dspoluNXJkNo4UAbbc651wbPY9f1cqa3WW321NOoC21DBSoZBqsoqScZLYmMnFqUXRB8Bwf1X/ZJ
c+qub3LD5P6y/J0++5vNfSP4DwHB7JH/AOp36qe44PJ/9n+R77m+H/WP4DwHB/Vf9slz6qLosPk/
q/yPfc3mvpH8E5llthpLTSAhtIwEpGAK6YwUUoxWxzSlKTcpOxMzKsOnW12+I03EZZPE43GjK6No
q61FIwnPrxWmlvczcorYYQbZb4Kn3oESOyqUrpHVsoCelV+sSOZqrbLJIGbXAj3F+4Mw2G5r6Ql1
9LYC3AOQKuZpbFEC9aR0/qJaXLvaIstxIwHFo8oDs4hvUptcBpMm2uz26yxBFtkFiIwDngZQEgn1
451DbfISSI960xZNRISm72yNM4PsqcR5SfuPMfxqU2uA0nyLoVp0gbbb4EW2Qe85CunjNd7eSpSR
9vcfaAPM71L1Ju/AqnF1XiO37XAkz485+Ew7Ljghl9bYK288+E8xUWWoi3WDZb4sWi6xI8wlvpgy
81xYTnHEDjY5x15orStBtN0R4Oi9M22C/CiWOE3HkDheQWgrpBzwoncj76NthJIYuWi2vRmYzkGM
thgYabU2ClA5bDqopSXDIcU+UbmoUZiL3qyw0iOQR0SUgJwee1Q2278SUklRqi2m3QHS7EhR2HCO
EqabCSR7Ks5SlyyFGMeEYv2a2SpBfkQIzrxxlxbQKjjlvRTklSYcIt20RnoNm1JGS69GaktpUpCV
qSUkFJwRnY8walSlB80Q1Ga8zYjT9obipjC2xuhSriCFNgjPbv11DnK7sKEaqj4/puzSI6WHbZGL
afshLYTj7iNxRZJJ3YcItVRnAsVrtWTChNMqIwVAZUR953pKcpcslQjHhGcaz2yG8Ho0CMy6AQFt
thJGfuo5yapsKEU7SMpdqt89xLkuFHfWBgKcbCiB7ahSlHhhxjLlEltpDLSW20hCEAJSlIwAB1VH
JZbHP9e/n1j92T+JVATJNzasWjTdXQ64iLES4pCXCnIwNhWUlRdMr2k+6RE1deRaYtvlsqU2pwrW
+MJSOfL7xVEpEppnHtQOlVxloeaUlTE2QgcSef5VR/3q0rTLQqjKNNC2gkDJxWTR0J2PbZq9Nktg
S030ykZDanFFJJ6+LtSCSBjng12qCaT4ON5JRtFWuNzlXiS9KubqnnXlZKierq+77q1pGNiixolu
6jhC3BCpoeCmcHbI339W29cmRKUWmbxelpo9CaOvMme69GkuNNyWCQ90J4gVbHYn9EpUNvUa8V9N
GE68Drnlco2cImQbc1e5aYq3VsIeUlkuncpHXtjrzXrKc3BN7Gfs4KVLdFjmPPXJk214oU5CAUjy
fKUn9bPqrmhLTLX5nXlg5R0eKPVdeieUFAFAFAFAFAV55mdZJUydEaTLhvr6d9gHhdQrhAJQeSth
9k+znV01JJPYzdxbaMJ+pWkvQmYsuHHTKY7574mKwhKNsADIyo55ZHI1Kxum2uCHkVpJ8mjxtS3b
JLilxHpDMhEZLrTn5BZXuF8WThIGc79RqfZbryI9psyTbb+X7siA7Ot8wutqWhyEfslOMpUOJXbs
c9RqJQpXRMZ26snXi4PQm4zUVttcqU8GWg4Twg4JJON8AA1WMU7vgtJtVRFRPujGoI1ul96OMvsu
OB1ptSDlJTtgqOOfb19WN5cYuLaIuSkkxPY/7HSH7B/8FaT/AOXyKQ/4/MfamDp0zc+icQj/AKZw
qK0FWU8ByBgjB9e/3Gs8dakaZL0sTs+ERqK3ttOxi+q1nicU0rhSnjT+jxZJ5D7XafVV3p0P1M1q
1L0N7upX4ttfMlMZMxud3iFlRQyVYCuM5yUjhOSMnlULGm9vKyXkaW5Itd+75u5t7k23zONoutuw
zsMEApUniVjmMHPbUShSuqLRnbqyfdZztvMR4JQYyn0tSCQcpCtgoHP63Dn76pFKVotJtUxTc7o4
7Dubio0V+HHksx20vN8QWrjSFk742KsD1pNXjHdblJStPbgmCdcp8+Y1bzFaZiLDSlPoUsuOcIUQ
MEcIAI33+6q0opWWttuhJbb2q2adgoKo7EiXLkJ45C8NNYcWVEnbOOQGRnNazjcn8DKM9MV8Rgzq
ltpFwD78SYqK0HkuQjlLgJwE4yrCs+s8xVXjuq2suslXZIk3C72uMmdPTDXGBHTtMpUFtAkDIUSQ
rGd9hVUlJ0iW5RVs1tXqW/fHYQcgslt/gEV8KS6435xKs4Od8AJ9oqdC02QpNuix1mahQBQHO9e/
n1j92T+JVAFuu9jvNpdt0osOsxwiO+3IKeFxYSDwgE5Vg7cuY66yb3ZdIRXObatMOuPaXsVvZnoI
ZfUW+BYSocXkp6+Wezas5SrgsolL7odyF3SkNyu+VxCri6VQCiOvh6vXitqtIhNxZzxi5vxnQAGy
M9SRVHBMupSR9Ekk5WeJWdsnlXWnsjlatmlUkuKI3AA545VNiqLB3OlsW3X0F+ewOhYDhJWnibCu
A44vZ/tXHknKMLitzbHCLlTdHVZN5jL1SyYSoiVAcJRHQEDhKfJ+/nXlzeSUtUo/BHc4QjCk9zkr
kZh20KlqCkyfKKWkkEYJ39ea7dUlOvAezjLHq8fIgNy5TE9mYVKUttPBwH9JPZXXLFCUKRxrNNST
e/ge0asZBQBQBQBQBQCZ+1XFZktsXYojyCSUuM9ItvPMIVxAAdmQcVZSW1oo4vemC7IGDDctz4jP
RWe90lbfSJU3t5KhkHmAcgjr7anVd2NFVRk9aZEyGpuZPLj/AEqXWnG2ggMqScjhG5O/PJNQpJPZ
BxbW7N8WNcUyA5LuDbqAnAaZj9GkntOVKP8AAiotVsiUne7C6W4XFloJeUy+w4HWXQM8KhkcusEE
gj10jKhKNkVmzyzembnLuCXVtNLbDTbPAgBWNxlROdt9+zlira1p0pEKD1amzGFp/vNu0J764/By
Fo/s8dJxDHbt/Okp3e3JChVb8DG4xO/7ZKh8fB07KmuPGeHiBGcdfOqxdNMtJWmiM1aeiuzE/ps9
FDMXg4cZ8pJ4s5/y8vXUuVxohR7Vmhen0qblf9SpLrs3v1lxKBlpYSkDY8+Rz2gmp18bfAjRzuTI
0e4Jf6SXPbdSE4DTMfo0n1nKlHP3EVVtVsiyTvdm+XFanQ3ozwy06goUB2GoTadolq1TFztiSvTz
dqQ+U8BbUXSnJUpKwskjPNRB/jV1Ptairh2dJ9XapTUyS/b5yI6ZR4nUOMdIOPGOJPlDBwBzyNuV
RqTSTXAcWm2mRo2m1RbdEZamq76iPOOtSFN5zxlWQpOdwQrB3HLqqXktt1yQsdJK+CYbZIlx5LF0
lpkNPo4C2010SUjtG5Vn2+yoUkmnFE6W01JmhVlmSmm41wuQkREEFSAxwLdwcgLVxEHcb4AzTUlu
kNLezYSrLJnSmlSpzbkdmQJDSe9wHE4OQkLBxw7fq59dFJLhEOLb3Y8qpoFAFAc717+fWP3ZP4lU
ByO5aRuM65uyUymmmy8XEqbcUlaOeCPJ5+vNUiu0zVyTSTQ1sbGp4E0+FJcW5RynoiXnFqcSjGAU
kp2OCRjOPKNMkdW6NMWTS68BbqfRYvDba4KI0aS2AM5IStH+bA5iqYlKLpvYrmcW9kVk9zK9YH/U
2/lz6Rf0Vs+DFclz1Dphu9MWwMtRo7saKlp0pGAo7csDflzOOdZQi99yZciNXc8X3o6kPtqeUcJy
tQQgYznAG5/lVm2uCqSfJYLbZpzbMlE1xjKyOEsknhwNuYqy4Ilyh2WG0Mt9EAFoBwcYySnGa2Wy
2M2txXpywtWltS5bbTkhaipbifKyc+sDavPy4ZylV7HoYs0FG0g1LZGrw0x3m0y0627xFaxg47AR
V8GCcJO2Uz5oySaOuePtr8xM9xP1V0HOHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/
MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7
a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAH
j7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9V
AHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAHj7a/MTPcT9VAVTUt2j3q5N
yY7bqUJZCCHMA5yT1E9tAf/Z

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://media.durhamregion.topscms.com/images/3f/29/4cde395a44b9bb9e82c596dcc54e.jpeg

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

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/Newsdurhamregion/;pos=1;tile=3;sz=160x600;ord=123456789?

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
3Vdg3CVNS4Pmf//Z

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_Themes/NewsDurham/images/ad_line.gif

R0lGODlhLAEHAJEAAP///+zs7MzMzO/v7yH5BAAAAAAALAAAAAAsAQcAAAKMhI+py+0Po5xHJEsN
zrz7D4biSJamtQEptJatCcfyTNcdqgm4lue6rvL1VD/g8Ed82ZbMpvPJ2BgxO2qQF0xZrVneFgpm
BsbksvmMTqvX7Lb77R74kNcqUoqd3vPJ6nUAFyg4SFjYFoZYI8XlV+F45YXACFlHmXiJmalpWfQo
tJhllFRZB7SltJnqUAAAOw==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/durhamregion/dr/front;kw=pos=1;sz=1x1;ord=[timestamp]?

R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/durhamregion/dr/front;kw=pos=2;sz=1x1;ord=[timestamp]?

R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/durhamregion/dr/front;kw=pos=3;sz=1x1;ord=[timestamp]?

R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw==

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://durhamregion.com/images/logo_sna.gif

R0lGODlhRwAZANUAAPLY25e2yyNpmOiHk8HS3uNZamiXtu/DyFSKrfPp6tvj6s3a4/Ph4xtjlARU
ioSpw7XK2avD1OBFWMXV4Dd2oe65v+br7uyZo9Le5bnN2xJdkOvv8d40Sd84Te7w8t0uRPDN0uyj
rPDGywxZjvXy8r7Q3euzuEF9pXWfvPDy8+EmPvX09aG80ODn7PDAxeyQmujs794wRed8iQdWiw9b
j/Tv8PPn6PDLz+JPYfLz9PP09PG3vY+xyN0qQPX19QBRiCH5BAAAAAAALAAAAABHABkAAAb/QJ9Q
WAOAjjfQbSk6NF3QhE+3mEwIJetmyPVtrOCwtUQAlwmZ0rbLZbwksZ58Tq+7vI2ffn9qsX0Te4KC
AhSDew9/QhUSdY6PdxY0hz8UCmyBlHsoAZoUigdxj6NzdzAamgIYXQsOmnoELSOUM6tdCY2kuncb
eam2Qhgzrw0ePieaiV0hus28Aq8/AgtDra8GQjyaJytdBc27PjC+xCVC1poZQgqzh7VduXUxHPQd
HfX2+Qfi5K8a6sJSGROCjFKALh0eVQDAkIFDBglq1EhgwwYJL9Ci6aEBocUwStiGdKJ0AuEjHAVS
qkwpo0K3IRsyavwx4kG7Q+qGsBvkSoOf/yE4wDnCYWLIuJmCDGSAwLRphhxdrlwpswDDg4NDBgh9
dEGIhX4zNURQRHZICRolhwAQtZXODjxIB/EoqwjCrBmXhlxoWwdHjRQy4+pRRneI3T0sumjlO0eE
j8B7RqBw9Yow3cN7ELAx8Y2vChMrwOpxoICFRst1b+rRYOEPiAsDYsuO3bnOi8eUHFBj8TGZDrIR
VO8Z64NERRsRSURE/pCBjEe3IY+m5iPCpFRQFSHQpNkHiHz5OHSY9yFGjA+jukr/oXtIhuuHUJQ1
TUmAMRGM7eA+1N49Kp4TlNXCfzj5gF9+cnSQAGC5UTcEAQTqYZ8i2W1HiXwHICjHAD54sFJef1xM
EFhI8wmUIYI4SOFhg39gIBMEhVkQoSATgIBgAQwI0YsmBCjSgiECpFDYMZqg8B14SCbZQQEh1CDE
Ch5QoMGUVE7pIBs/dlcYC1VWeUIQADs=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_Themes/NewsDurham/images/MMG76x50.jpg

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

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/tops-counter?uid=132249&counter=

R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/css/NewsDurham/main.css

BODY {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FONT-FAMILY: Verdana, Arial, Helvetica, Sans-Serif; BACKGROUND: =
url(/App_Themes/NewsDurham/images/bg_gradient3.gif) #fff repeat-x; =
COLOR: #333; FONT-SIZE: 11px; PADDING-TOP: 0px
}
A {
	COLOR: #369; TEXT-DECORATION: none
}
A:visited {
	COLOR: #369; TEXT-DECORATION: none
}
A:active {
	COLOR: #369; TEXT-DECORATION: none
}
A:hover {
	TEXT-DECORATION: underline
}
IMG {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: =
0px
}
HR {
	HEIGHT: 1px; COLOR: #eee
}
UL {
=09
}
UL.listNoStyle {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
FORM {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; PADDING-TOP: 0px
}
INPUT {
	FONT-FAMILY: Verdana, Arial, Helvetica, Sans-Serif; FONT-SIZE: 11px
}
SELECT {
	FONT-FAMILY: Verdana, Arial, Helvetica, Sans-Serif; FONT-SIZE: 11px
}
H1 {
	PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; FONT-FAMILY: Arial, Verdana, Helvetica, Sans-Serif; =
COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px
}
H2 {
	PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; FONT-FAMILY: Arial, Verdana, Helvetica, Sans-Serif; =
COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px
}
H3 {
	PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; FONT-FAMILY: Arial, Verdana, Helvetica, Sans-Serif; =
COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px
}
H4 {
	PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; FONT-FAMILY: Arial, Verdana, Helvetica, Sans-Serif; =
COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px
}
H5 {
	PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; FONT-FAMILY: Arial, Verdana, Helvetica, Sans-Serif; =
COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px
}
.homeHeading {
	BORDER-BOTTOM: #dbe3eb 1px solid; BORDER-LEFT: #eb4600 2px solid; =
PADDING-BOTTOM: 5px; LINE-HEIGHT: 15px; TEXT-TRANSFORM: uppercase; =
MARGIN-TOP: 15px; PADDING-LEFT: 20px; PADDING-RIGHT: 5px; FONT-FAMILY: =
Arial, Verdana, Sans-Serif; LETTER-SPACING: 1px; HEIGHT: 15px; COLOR: =
#000; FONT-SIZE: 12px; BORDER-TOP: #dbe3eb 1px solid; FONT-WEIGHT: bold; =
BORDER-RIGHT: #dbe3eb 1px solid; PADDING-TOP: 5px
}
.homeHeading A {
	COLOR: #000
}
.homeHeading A:hover {
	COLOR: #000; TEXT-DECORATION: none
}
.homeHeading A:visited {
	COLOR: #000
}
H1 {
	FONT-SIZE: 18px
}
H2 {
	FONT-SIZE: 16px
}
H3 {
	MARGIN-TOP: 6px; MARGIN-LEFT: 4px; FONT-SIZE: 14px
}
H4 {
	LINE-HEIGHT: 24px; COLOR: #000; FONT-SIZE: 23px
}
H5 {
	FONT-SIZE: 11px
}
H6 {
	PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Verdana, Arial, =
Helvetica, Sans-Serif; COLOR: #666; FONT-SIZE: 10px; FONT-WEIGHT: bold; =
PADDING-TOP: 0px
}
.linkRed {
	PADDING-LEFT: 12px; BACKGROUND: =
url(/App_Themes/Olympics/standard/images/arwRed.gif) no-repeat
}
.linkGreen {
	PADDING-LEFT: 12px; BACKGROUND: =
url(/App_Themes/Olympics/standard/images/arwGreen.gif) no-repeat
}
#wrapper {
	BORDER-BOTTOM: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; =
BACKGROUND-COLOR: #fff; MARGIN: 0px auto 10px; WIDTH: 980px; BORDER-TOP: =
#dadada 1px solid; BORDER-RIGHT: #dadada 1px solid
}
#header {
	BORDER-BOTTOM: #dadada 1px solid; WIDTH: 978px; MARGIN-BOTTOM: 5px; =
BACKGROUND: =
url(../../App_Themes/NewsDurham/images/news_durham_header.gif) #ffffff =
no-repeat
}
#body {
	PADDING-BOTTOM: 8px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 100px; =
PADDING-LEFT: 8px; WIDTH: 640px; PADDING-RIGHT: 8px; MARGIN-BOTTOM: 5px; =
FLOAT: left; PADDING-TOP: 8px
}
#rightColumn {
	PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 8px; WIDTH: =
300px; PADDING-RIGHT: 8px; MARGIN-BOTTOM: 5px; FLOAT: right; =
PADDING-TOP: 8px
}
#footer {
	PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 50px; =
PADDING-LEFT: 10px; WIDTH: 958px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: =
10px; CLEAR: both; PADDING-TOP: 10px
}
#topAd {
	MARGIN: 10px 0px 10px 10px; WIDTH: 728px; FLOAT: left; HEIGHT: 90px
}
#weather {
	MARGIN: 10px 10px 10px 0px; WIDTH: 220px; FLOAT: right; HEIGHT: 90px
}
#newsBanner {
	MARGIN: 5px auto; WIDTH: 960px; HEIGHT: 60px; CLEAR: both
}
#logos {
	MARGIN: 0px auto 5px; WIDTH: 960px; HEIGHT: 40px; CLEAR: both
}
#logos IMG {
	FILTER: alpha(opacity=3D50); -moz-opacity: .50; opacity: .50
}
#logos IMG:hover {
	FILTER: alpha(opacity=3D100); -moz-opacity: 1; opacity: 1
}
#logos LI.selected IMG {
	FILTER: alpha(opacity=3D100); -moz-opacity: 1; opacity: 1
}
#logos UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px auto 0px; =
PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: =
none; PADDING-TOP: 0px
}
#logos LI {
	WIDTH: 50px; DISPLAY: inline
}
.breaking {
	BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; =
PADDING-BOTTOM: 5px; MARGIN: 0px auto 10px; PADDING-LEFT: 5px; WIDTH: =
628px; PADDING-RIGHT: 5px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: =
#999 1px solid; PADDING-TOP: 5px
}
.breaking .related A {
	COLOR: #336699
}
.breaking .related IMG {
	VERTICAL-ALIGN: middle; MARGIN-RIGHT: 5px
}
#menu_block {
	MARGIN: 0px auto; WIDTH: 978px
}
#menu {
	BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; =
LINE-HEIGHT: 30px; BACKGROUND-COLOR: #fff; MARGIN: 0px auto; WIDTH: =
960px; HEIGHT: 30px; FONT-SIZE: 12px; BORDER-TOP: #dddddd 1px solid; =
FONT-WEIGHT: bold; BORDER-RIGHT: #dddddd 1px solid
}
#menu UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; WIDTH: 100%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; =
PADDING-TOP: 0px
}
#menu LI {
	FLOAT: left
}
#menu A {
	PADDING-BOTTOM: 8px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; =
BACKGROUND: url(../../App_Themes/NewsDurham/images/menu_spacer.gif) =
no-repeat 100% 0%; COLOR: #eb4600; FONT-WEIGHT: bold; PADDING-TOP: 8px
}
#menu LI:hover {
	BACKGROUND: =
url(../../App_Themes/NewsDurham/images/menu_selected_bg.gif) repeat-x 0% =
50%
}
#menu LI A:hover {
	BACKGROUND: =
url(../../App_Themes/NewsDurham/images/menu_selected_bg.gif) repeat-x 0% =
50%
}
#menu LI:hover {
	COLOR: #fff
}
#menu A:hover {
	COLOR: #fff; TEXT-DECORATION: none
}
#menu LI.selected {
	BACKGROUND: =
url(../../App_Themes/NewsDurham/images/menu_selected_bg.gif) repeat-x 0% =
50%
}
#menu LI.selected A {
	COLOR: #fff
}
#submenu {
	BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; =
LINE-HEIGHT: 24px; BACKGROUND-COLOR: #dceeff; MARGIN: 0px auto; WIDTH: =
960px; HEIGHT: 24px; FONT-SIZE: 11px; BORDER-RIGHT: #dddddd 1px solid
}
#submenu UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; WIDTH: 100%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; =
PADDING-TOP: 0px
}
#submenu LI {
	FLOAT: left
}
#submenu A {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; COLOR: =
#000; PADDING-TOP: 5px
}
#submenu LI:hover {
	BACKGROUND-COLOR: #39f; COLOR: #000
}
#submenu A:hover {
	COLOR: #000; TEXT-DECORATION: none
}
#submenu LI.selected {
=09
}
#submenu LI.selected A {
	COLOR: #000; FONT-WEIGHT: bold
}
#x_menu {
	TEXT-ALIGN: center; LINE-HEIGHT: 28px; MARGIN: 0px auto 10px; WIDTH: =
100%; BACKGROUND: url(../../App_Themes/NewsDurham/images/xmenu_bg.gif) =
#fff repeat-x 0% 50%; HEIGHT: 28px; COLOR: #6c6c6c; FONT-SIZE: 12px; =
OVERFLOW: hidden
}
#x_menu A {
	COLOR: #fff
}
#x_menu A:hover {
	COLOR: #eb4600; TEXT-DECORATION: none
}
.specialContent {
	WIDTH: 300px; MARGIN-BOTTOM: 5px; BACKGROUND: =
url(../../App_Themes/NewsDurham/images/pumpbg.gif) #ffffff no-repeat; =
HEIGHT: 92px
}
.specialGraphic {
	TEXT-ALIGN: center; BACKGROUND-COLOR: #fff; WIDTH: 300px; =
MARGIN-BOTTOM: 5px
}
.breakingNews_sidebar {
	TEXT-ALIGN: left; BACKGROUND-COLOR: #fff; WIDTH: 300px; MARGIN-BOTTOM: =
5px
}
.ad_300x250 {
	BACKGROUND-COLOR: #dfdfdf; WIDTH: 300px; MARGIN-BOTTOM: 5px; HEIGHT: =
250px
}
.topletContainer {
	BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; =
BACKGROUND-COLOR: #fff; MIN-HEIGHT: 200px; WIDTH: 300px; MARGIN-BOTTOM: =
5px; BORDER-TOP: #3399ff 3px solid; BORDER-RIGHT: #dddddd 1px solid
}
.topletContainer_regborder {
	BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; =
BACKGROUND-COLOR: #fff; MIN-HEIGHT: 200px; WIDTH: 300px; MARGIN-BOTTOM: =
5px; BORDER-TOP: #dddddd 1px solid; BORDER-RIGHT: #dddddd 1px solid
}
.blogs_skyscraper {
	MIN-HEIGHT: 100px; MARGIN-BOTTOM: 5px
}
.blogs_skyscraper .blogs {
	BORDER-BOTTOM: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; =
WIDTH: 130px; FLOAT: left; HEIGHT: 597px; OVERFLOW: hidden; BORDER-TOP: =
#39f 3px solid; BORDER-RIGHT: #dadada 1px solid
}
.blogs_skyscraper .skyscraper {
	WIDTH: 160px; FLOAT: right
}
.blogListing {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
MARGIN-BOTTOM: 10px; PADDING-TOP: 4px
}
.tagcloud {
	PADDING-BOTTOM: 5px; MARGIN: 0px auto; PADDING-LEFT: 5px; WIDTH: 80%; =
PADDING-RIGHT: 5px; PADDING-TOP: 5px
}
.section_left {
	BACKGROUND-COLOR: #fff; WIDTH: 405px; FLOAT: left
}
.section_right {
	BORDER-BOTTOM: #dbe3eb 1px solid; BORDER-LEFT: #dbe3eb 1px solid; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #fafbfc; PADDING-LEFT: 5px; =
WIDTH: 210px; PADDING-RIGHT: 5px; MARGIN-BOTTOM: 5px; FLOAT: right; =
BORDER-TOP: #dbe3eb 1px solid; BORDER-RIGHT: #dbe3eb 1px solid; =
PADDING-TOP: 5px
}
.section_right_sub {
	BORDER-BOTTOM: #dbe3eb 1px solid; BORDER-LEFT: #dbe3eb 1px solid; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #fafbfc; PADDING-LEFT: 5px; =
WIDTH: 210px; PADDING-RIGHT: 5px; MARGIN-BOTTOM: 5px; FLOAT: right; =
CLEAR: right; BORDER-TOP: #3399ff 3px solid; BORDER-RIGHT: #dbe3eb 1px =
solid; PADDING-TOP: 5px
}
.home_left {
	WIDTH: 305px; FLOAT: left
}
.home_right {
	WIDTH: 305px; FLOAT: right
}
.newsItem {
	PADDING-BOTTOM: 2px; MARGIN: 10px 0px; PADDING-LEFT: 2px; WIDTH: 100%; =
PADDING-RIGHT: 2px; CLEAR: both; PADDING-TOP: 2px
}
.newsItem .category {
	FONT-FAMILY: Verdana; COLOR: #eb4600; FONT-SIZE: 9px
}
.newsItem P {
	MARGIN: 2px 0px 0px; FONT-FAMILY: Verdana, Arial, Sans-Serif; =
FONT-SIZE: 11px
}
.newsItem .thumb {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 4px; FLOAT: =
left; PADDING-TOP: 4px
}
.newsItem .thumb IMG {
	BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; BORDER-TOP: =
#999 1px solid; BORDER-RIGHT: #999 1px solid
}
.newsItem A.title {
	PADDING-BOTTOM: 4px; FONT-FAMILY: Arial; COLOR: #336699; FONT-SIZE: =
14px; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
.newsItem A.TopStory {
	PADDING-BOTTOM: 4px; FONT-FAMILY: Arial; COLOR: #336699; FONT-SIZE: =
16px; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
.newsItem .author {
	FONT-FAMILY: Verdana, Arial, Sans-Serif; COLOR: #888; FONT-SIZE: 11px
}
.newsItem A {
	COLOR: #336699; FONT-WEIGHT: lighter
}
.related {
	LINE-HEIGHT: 12px; MARGIN-TOP: 4px; FONT-FAMILY: Verdana, Arial, =
Sans-Serif; COLOR: #000; FONT-SIZE: 11px
}
.related A {
	COLOR: #336699
}
.newsItem .related {
	LINE-HEIGHT: 12px; MARGIN-TOP: 4px; FONT-FAMILY: Arial; COLOR: #336699
}
.newsItem .related A {
	COLOR: #336699
}
.newsItem .related IMG {
	VERTICAL-ALIGN: middle; MARGIN-RIGHT: 5px
}
.newsItem .textLinks {
	FONT-FAMILY: Arial; COLOR: #336699; FONT-SIZE: 12px; FONT-WEIGHT: bold; =
TEXT-DECORATION: none
}
#weather_box {
	FONT-FAMILY: Verdana; HEIGHT: 90px
}
#weather_top {
	TEXT-ALIGN: center; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: =
5px
}
#weather_info {
	TEXT-ALIGN: center; COLOR: #999; FONT-SIZE: 26px; FONT-WEIGHT: bolder; =
PADDING-TOP: 2px
}
#weather_temp {
	TEXT-ALIGN: right; PADDING-RIGHT: 60px
}
#weather_desc {
	TEXT-ALIGN: left; TEXT-INDENT: 65px; MARGIN-BOTTOM: 8px; COLOR: #999; =
FONT-SIZE: 10px; FONT-WEIGHT: normal
}
#weather_bottom {
	TEXT-ALIGN: center; MARGIN: 0px auto; FONT-SIZE: 11px; FONT-WEIGHT: =
normal
}
#weather_bottom .right {
	TEXT-ALIGN: right; MARGIN-LEFT: 5px
}
#weather_bottom .left {
	TEXT-ALIGN: left; MARGIN-RIGHT: 5px
}
.horizontalBar {
	BORDER-BOTTOM: #dbe3eb 1px solid; BORDER-LEFT: #eb4600 2px solid; =
LINE-HEIGHT: 24px; MARGIN: 5px auto; WIDTH: 100%; FONT-FAMILY: Arial, =
Verdana, Sans-Serif; HEIGHT: 24px; FONT-SIZE: 12px; BORDER-TOP: #dbe3eb =
1px solid; BORDER-RIGHT: #dbe3eb 1px solid
}
.horizontalBar UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; WIDTH: 100%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; =
PADDING-TOP: 0px
}
.horizontalBar LI {
	FLOAT: left
}
.horizontalBar LI.heading {
	PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 10px; =
PADDING-RIGHT: 10px; COLOR: #000; FONT-SIZE: 12px; FONT-WEIGHT: bold; =
PADDING-TOP: 0px
}
.horizontalBar LI A {
	PADDING-BOTTOM: 6px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; COLOR: =
#000; FONT-SIZE: 14px; PADDING-TOP: 6px
}
.horizontalBar LI A:hover {
	TEXT-DECORATION: underline
}
.hotlistings {
	TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 8px; WIDTH: 340px; =
PADDING-RIGHT: 8px; DISPLAY: inline; FONT-FAMILY: Arial, Verdana, =
Sans-Serif; FLOAT: left; COLOR: #666; FONT-SIZE: 11px; PADDING-TOP: 8px
}
.hotlistings A {
	FONT-SIZE: 11px
}
.txtadsBorder {
=09
}
.mapInfoWinConents {
	MARGIN: 4px
}
.mapMarkerLabel {
	WIDTH: 150px
}
.mapMarkerLabel IMG {
	DISPLAY: none
}
.google_bubble {
	MARGIN-RIGHT: 25px
}
.google_bubble A {
	FONT-SIZE: 14px; FONT-WEIGHT: bold; PADDING-TOP: 20px
}
.google_bubble IMG {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; MARGIN: =
4px; WIDTH: 70px; FLOAT: left; HEIGHT: 70px; BORDER-TOP: #000 1px solid; =
BORDER-RIGHT: #000 1px solid
}
#mapControls {
	PADDING-BOTTOM: 4px; MARGIN: 2px auto; PADDING-LEFT: 4px; WIDTH: 100%; =
PADDING-RIGHT: 4px; FONT-SIZE: 10px; PADDING-TOP: 4px
}
#mapControls .map_btn_off {
	TEXT-ALIGN: center; MARGIN: 2px; WIDTH: 100px; BACKGROUND: =
url(/App_Themes/NewsDurham/images/blue_100px_btn.gif) no-repeat 0% 50%; =
FLOAT: left; HEIGHT: 25px
}
#mapControls .map_btn_on {
	TEXT-ALIGN: center; MARGIN: 2px; WIDTH: 100px; BACKGROUND: =
url(/App_Themes/NewsDurham/images/orange_100px_btn.gif) no-repeat 0% =
50%; FLOAT: left; HEIGHT: 25px
}
#mapControls A {
	LINE-HEIGHT: 25px; COLOR: #fff; FONT-WEIGHT: bold
}
#wrapperArticleBody {
	LINE-HEIGHT: 18px
}
#articleBody {
	TEXT-ALIGN: left
}
#theArticle {
=09
}
#wrapperArticleImage {
	TEXT-ALIGN: left; PADDING-BOTTOM: 5px; MARGIN: 0px 0px 10px; =
PADDING-LEFT: 5px; WIDTH: 370px; PADDING-RIGHT: 5px; FLOAT: right; =
PADDING-TOP: 5px
}
.articleImage {
	TEXT-ALIGN: center; MARGIN: 0px 0px 10px 15px; WIDTH: 405px; FLOAT: =
right; OVERFLOW: hidden
}
.articleImage IMG {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; WIDTH: =
365px; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid
}
#articleMap {
	MARGIN: 0px 0px 10px 15px; WIDTH: 370px; FLOAT: right; CLEAR: right
}
#articleMap > DIV {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: =
#000 1px solid; BORDER-RIGHT: #000 1px solid
}
DIV.credit {
	POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=3D50); =
PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #000000; PADDING-LEFT: 10px; =
BOTTOM: 0px; PADDING-RIGHT: 5px; COLOR: #fff; FONT-SIZE: 10px; RIGHT: =
0px; PADDING-TOP: 2px; -moz-opacity: .50; opacity: .50
}
DIV.caption {
	BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 5px; LINE-HEIGHT: 12px; =
BACKGROUND-COLOR: #f5f5f5; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
MARGIN-BOTTOM: 5px; COLOR: #666; CLEAR: right; FONT-SIZE: 9px; =
PADDING-TOP: 5px
}
.imgCredit {
	TEXT-ALIGN: right; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; =
PADDING-LEFT: 0px; WIDTH: 405px; PADDING-RIGHT: 0px; COLOR: #666; =
FONT-SIZE: 10px; PADDING-TOP: 3px
}
.date {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; COLOR: #808080; PADDING-TOP: 0px
}
.author {
	PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 9px; =
PADDING-TOP: 0px
}
SPAN.comment {
	COLOR: #777; FONT-SIZE: 11px
}
#wrapperArticleSideLinks {
	PADDING-BOTTOM: 0px; MARGIN: 0px 5px 10px 10px; PADDING-LEFT: 0px; =
WIDTH: 218px; PADDING-RIGHT: 0px; FLOAT: right; CLEAR: right; =
PADDING-TOP: 0px
}
.subTitle {
	BORDER-LEFT: #eb4600 2px solid; PADDING-BOTTOM: 5px; FONT-STYLE: =
italic; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; COLOR: #000; FONT-SIZE: =
12px; PADDING-TOP: 5px
}
A.smallTitle {
	PADDING-BOTTOM: 2px; FONT-FAMILY: Arial; COLOR: #336699; FONT-SIZE: =
12px; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
.moreStories {
	PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.articleSideHeader {
	BORDER-BOTTOM: #eb4600 1px dotted; TEXT-ALIGN: left; LINE-HEIGHT: 26px; =
WIDTH: 100%; MARGIN-BOTTOM: 4px; COLOR: #eb4600; FONT-SIZE: 14px; =
FONT-WEIGHT: bold
}
.articleSideContainer {
	BORDER-BOTTOM: #dadada 1px solid; BORDER-LEFT: #dadada 1px solid; =
PADDING-BOTTOM: 10px; PADDING-LEFT: 15px; WIDTH: 188px; PADDING-RIGHT: =
15px; MARGIN-BOTTOM: 10px; BORDER-TOP: #3399ff 3px solid; BORDER-RIGHT: =
#dadada 1px solid; PADDING-TOP: 0px
}
.articleTools {
	LIST-STYLE-TYPE: none
}
.articleTools LI {
	PADDING-BOTTOM: 3px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: =
block; PADDING-TOP: 1px
}
.articleTools LI.textSize {
	BACKGROUND: url(/App_Themes/NewsDurham/images/icoTextSize.gif) =
no-repeat left 50%
}
.articleTools LI.emailArticle {
	BACKGROUND: url(/App_Themes/NewsDurham/images/icoEmailArticle.gif) =
no-repeat left 50%
}
.articleTools LI.emailAuthor {
	BACKGROUND: url(/App_Themes/NewsDurham/images/icoEmailAuthor.gif) =
no-repeat left 50%
}
.articleTools LI.print {
	BACKGROUND: url(/App_Themes/NewsDurham/images/icoPrint.gif) no-repeat =
left 50%
}
.articleTools LI.typo {
	BACKGROUND: url(/App_Themes/NewsDurham/images/icoTypo.gif) no-repeat =
left 50%
}
.articleTools LI.license {
	BACKGROUND: url(/App_Themes/NewsDurham/images/icoLicense.gif) no-repeat =
left 50%
}
.articleTools LI.bookmark {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 15px
}
.articleTools LI.bookmark IMG {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: =
0px
}
SPAN.textSize {
	COLOR: #369; CURSOR: pointer
}
SPAN.textSize:hover {
	TEXT-DECORATION: underline
}
.relatedList {
	LINE-HEIGHT: 16px
}
.pointer {
	CURSOR: pointer
}
.relatedMedia {
	LIST-STYLE-TYPE: none
}
.relatedMedia LI {
	PADDING-BOTTOM: 3px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: =
block; PADDING-TOP: 1px
}
.relatedMedia LI.video {
	BACKGROUND: =
url(/App_Themes/NewsDurham/images/mediaIcons/icon_video.gif) no-repeat =
left 50%
}
.relatedMedia LI.audio {
	BACKGROUND: =
url(/App_Themes/NewsDurham/images/mediaIcons/icon_audio2.gif) no-repeat =
left 50%
}
.relatedMedia LI.swf {
	BACKGROUND: url(/App_Themes/NewsDurham/images/mediaIcons/icon_swf.gif) =
no-repeat left 50%
}
.relatedMedia LI.pdf {
	BACKGROUND: url(/App_Themes/NewsDurham/images/mediaIcons/icon_pdf.gif) =
no-repeat left 50%
}
DIV#footerWrapper {
	MARGIN: 10px auto; WIDTH: 775px; FONT: 12px Arial, Helvetica, =
sans-serif; PADDING-TOP: 10px
}
DIV#footerWrapper UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
DIV#footerWrapper UL LI A {
	COLOR: #999; TEXT-DECORATION: none
}
DIV#footerWrapper UL LI A:hover {
	COLOR: blue; TEXT-DECORATION: underline
}
#footerWrapper .footerSection {
	LINE-HEIGHT: 16px; WIDTH: 143px; FLOAT: left; MARGIN-LEFT: 15px; =
FONT-SIZE: 10px
}
LI.footerHeader {
	FONT: bold 12px Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 0.5em; =
COLOR: #666
}
#footerWrapper .first {
	MARGIN: 0px
}
#global_footer_grey {
	BORDER-BOTTOM: #e3e3e3 1px solid; BORDER-LEFT: #e3e3e3 1px solid; =
BACKGROUND-COLOR: #f5f5f5; MARGIN: 10px auto 5px; PADDING-LEFT: 15px; =
WIDTH: 743px; PADDING-RIGHT: 15px; FONT-SIZE: 10px; BORDER-TOP: #e3e3e3 =
1px solid; BORDER-RIGHT: #e3e3e3 1px solid; PADDING-TOP: 15px
}
#global_footer {
	WIDTH: 775px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: =
#515151; MARGIN-LEFT: auto; FONT-SIZE: 10px; MARGIN-RIGHT: auto
}
#global_footer A {
	COLOR: #0098d6; FONT-SIZE: 10px; TEXT-DECORATION: none
}
#global_footer A:link {
	COLOR: #0098d6; FONT-SIZE: 10px; TEXT-DECORATION: none
}
#global_footer A:active {
	COLOR: #0098d6; FONT-SIZE: 10px; TEXT-DECORATION: none
}
#global_footer A:visited {
	COLOR: #0098d6; FONT-SIZE: 10px; TEXT-DECORATION: none
}
#global_footer A:hover {
	TEXT-DECORATION: underline
}
#global_footer SELECT {
	BORDER-BOTTOM: #e3e3e3 1px solid; BORDER-LEFT: #e3e3e3 1px solid; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #ffffff; PADDING-LEFT: 5px; =
WIDTH: 175px; PADDING-RIGHT: 5px; BORDER-TOP: #e3e3e3 1px solid; =
BORDER-RIGHT: #e3e3e3 1px solid; PADDING-TOP: 5px
}
#footerWrapper #copyright {
	FLOAT: right; COLOR: #808080
}
#footerWrapper #logos {
	FLOAT: left
}
.home_rss {
	MARGIN-TOP: 2px; FLOAT: right; MARGIN-RIGHT: 5px
}
.weatherMain {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 740px; PADDING-RIGHT: =
10px; FLOAT: left; PADDING-TOP: 10px
}
.extendedweather {
	PADDING-BOTTOM: 10px; MARGIN: 10px; PADDING-LEFT: 10px; WIDTH: 180px; =
PADDING-RIGHT: 10px; DISPLAY: inline; FLOAT: left; PADDING-TOP: 10px
}
.fivedayforecast {
	WIDTH: 460px; FLOAT: right
}
.todayforecast {
	TEXT-ALIGN: left; WIDTH: 210px; FLOAT: left; MARGIN-LEFT: 30px
}
.todayforecastborder {
	PADDING-BOTTOM: 10px; MARGIN-TOP: 10px; PADDING-LEFT: 0px; WIDTH: =
210px; PADDING-RIGHT: 18px; FLOAT: left; PADDING-TOP: 10px
}
#wrapperFinder {
	PADDING-BOTTOM: 5px
}
#wrapperFinder .finderOption {
	PADDING-BOTTOM: 2px; MARGIN: 0px auto; PADDING-LEFT: 5px; WIDTH: 250px; =
PADDING-RIGHT: 5px; PADDING-TOP: 2px
}
#wrapperFinder .finderOption SELECT {
	WIDTH: 250px; MARGIN-BOTTOM: 1px
}
.findButton {
	BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; MARGIN: 0px =
auto; WIDTH: 80px; BACKGROUND: =
url(/App_Themes/NewsDurham/images/blue_find_ico.gif) no-repeat; HEIGHT: =
20px; COLOR: #fff; FONT-SIZE: 10px; BORDER-TOP: 0px; CURSOR: pointer; =
FONT-WEIGHT: bold; BORDER-RIGHT: 0px
}
.finderContainer {
	BORDER-BOTTOM: #dddddd 1px solid; BORDER-LEFT: #dddddd 1px solid; =
PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: =
0px; MARGIN-BOTTOM: 5px; BACKGROUND: =
url(/App_Themes/NewsDurham/images/finderbg2.jpg) no-repeat 0% 50%; =
BORDER-TOP: #3399ff 3px solid; BORDER-RIGHT: #dddddd 1px solid; =
PADDING-TOP: 5px
}
.mediahome {
	BORDER-BOTTOM: #39f 1px solid; BORDER-LEFT: medium none; =
BACKGROUND-COLOR: #ededed; MARGIN-TOP: 15px; HEIGHT: 360px; FONT-SIZE: =
11px; BORDER-TOP: #39f 1px solid; MARGIN-RIGHT: 4px
}
.mediahome_left {
	WIDTH: 400px; FLOAT: left; HEIGHT: 100%
}
.mediahome_right {
	BORDER-LEFT: #fff 1px solid; WIDTH: 230px; FLOAT: right; HEIGHT: 100%
}
.mediahome_photoitem {
	LINE-HEIGHT: 15px; MARGIN: 0px auto 10px; WIDTH: 190px; COLOR: #000
}
.mediahome_photo {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; WIDTH: =
190px; HEIGHT: 95px; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px =
solid
}
.weatherWarning {
	BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #999 1px =
solid; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #fff; WIDTH: 300px; =
MARGIN-BOTTOM: 5px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px =
solid
}
.weatherWarning H3 {
	TEXT-ALIGN: center; PADDING-BOTTOM: 4px; LINE-HEIGHT: 14px; =
BACKGROUND-COLOR: #336699; MARGIN: 0px; PADDING-LEFT: 4px; =
PADDING-RIGHT: 4px; COLOR: #fff; FONT-SIZE: 14px; PADDING-TOP: 4px
}
.weatherWarning .inner {
	TEXT-ALIGN: left; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; COLOR: #000; FONT-SIZE: 12px; PADDING-TOP: 5px
}
.lbon {
	MARGIN: 0px 4px; COLOR: #ffc600; FONT-SIZE: 10px; FONT-WEIGHT: bold
}
.lboff {
	MARGIN: 0px 4px; COLOR: #fff; FONT-SIZE: 10px; FONT-WEIGHT: normal
}
.customize_bar {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; =
PADDING-BOTTOM: 0px; LINE-HEIGHT: 15px; MARGIN: 0px 0px 5px; =
PADDING-LEFT: 8px; WIDTH: 624px; PADDING-RIGHT: 8px; BACKGROUND: =
url(/App_Themes/NewsDurham/images/customize_bar.gif) #ffffff repeat-x; =
HEIGHT: 18px; CLEAR: both; BORDER-TOP: #000 1px solid; BORDER-RIGHT: =
#000 1px solid; PADDING-TOP: 0px
}
.customize_bar A:visited {
	COLOR: #fff
}
.myhome_bar {
	PADDING-BOTTOM: 0px; LINE-HEIGHT: 16px; MARGIN: 5px 0px; PADDING-LEFT: =
8px; WIDTH: 626px; PADDING-RIGHT: 8px; FONT-FAMILY: Arial, Verdana, =
Sans-Serif; HEIGHT: 16px; CLEAR: both; PADDING-TOP: 0px
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/css/NewsDurham/search.css

.imgBorder {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: =
#000 1px solid; BORDER-RIGHT: #000 1px solid
}
.wrapperSearchBox {
	FLOAT: right; MARGIN-RIGHT: 15px
}
#wrapperSearch {
	PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; WIDTH: 276px; PADDING-RIGHT: =
8px; PADDING-TOP: 3px
}
#wrapperSearch DIV#assetTypes {
	PADDING-LEFT: 3px; MARGIN-BOTTOM: 3px; COLOR: #fff; FONT-SIZE: 9px
}
#wrapperSearch DIV#assetType A {
	COLOR: #000; CURSOR: pointer; TEXT-DECORATION: none
}
#wrapperSearch DIV#assetType A:active {
	COLOR: #000; CURSOR: pointer; TEXT-DECORATION: none
}
#wrapperSearch DIV#assetType A:visited {
	COLOR: #000; CURSOR: pointer; TEXT-DECORATION: none
}
#wrapperSearch DIV#assetType A:hover {
	TEXT-DECORATION: underline
}
#wrapperSearch DIV#assetType .assetDiv {
	COLOR: #dadada; FONT-SIZE: 9px
}
#wrapperSearch DIV#wrapperTextButton {
	BORDER-BOTTOM: #39f 1px solid; BORDER-LEFT: #39f 1px solid; =
PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MARGIN: 2px; PADDING-LEFT: =
0px; WIDTH: 270px; PADDING-RIGHT: 0px; HEIGHT: 27px; BORDER-TOP: #39f =
1px solid; BORDER-RIGHT: #39f 1px solid; PADDING-TOP: 0px
}
#wrapperSearch DIV#wrapperText {
	WIDTH: 244px; FLOAT: left; MARGIN-RIGHT: 1px
}
#wrapperSearch DIV#wrapperText .textField {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px =
0px 2px 2px; PADDING-LEFT: 3px; WIDTH: 242px; PADDING-RIGHT: 0px; =
FONT-FAMILY: Arial, Verdana, Helvetica, Sans-Serif; BACKGROUND: =
url(/App_Themes/Olympics/standard/images/bgSearchMain.gif) repeat-x; =
HEIGHT: 21px; FONT-SIZE: 16px; BORDER-TOP: 0px; FONT-WEIGHT: bold; =
BORDER-RIGHT: 0px; PADDING-TOP: 2px
}
#wrapperSearch DIV#wrapperButton {
	WIDTH: 21px; FLOAT: left; PADDING-TOP: 3px
}
#wrapperSearch DIV#wrapperButton .button {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 21px; BACKGROUND: =
url(/App_Themes/NewsDurham/images/green_search_ico.gif) no-repeat; =
HEIGHT: 21px; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px
}
#wrapperRadio DIV {
=09
}
.radio1 {
	POSITION: relative; MARGIN: 0px; WIDTH: 13px; FLOAT: left; PADDING-TOP: =
0px; LEFT: -5px
}
.radio3 {
	POSITION: relative; MARGIN: 0px; WIDTH: 13px; FLOAT: left; PADDING-TOP: =
0px; LEFT: -5px
}
.radio2 {
	POSITION: relative; FLOAT: left; COLOR: #000; FONT-SIZE: 9px; TOP: 3px; =
FONT-WEIGHT: bold; LEFT: 6px
}
.radio4 {
	POSITION: relative; FLOAT: left; COLOR: #000; FONT-SIZE: 9px; TOP: 3px; =
FONT-WEIGHT: bold; LEFT: 6px
}
.radio2 {
	WIDTH: 110px
}
.radio4 {
	WIDTH: 60px
}
UL.searchRelatedList {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
#wrapperBodySearch {
	TEXT-ALIGN: left; PADDING-BOTTOM: 25px; BACKGROUND-COLOR: #fff; MARGIN: =
0px auto; PADDING-LEFT: 15px; WIDTH: 945px; PADDING-RIGHT: 10px; =
PADDING-TOP: 0px
}
#innerBodySearch {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; BACKGROUND: =
url(/App_Themes/Olympics/standard/images/bgInnerBodySearch.gif); =
PADDING-TOP: 0px
}
#wrapperColumnSearchLeft {
	PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; WIDTH: =
755px; PADDING-RIGHT: 0px; FLOAT: left; MARGIN-RIGHT: 10px; PADDING-TOP: =
10px
}
#wrapperColumnSearchRight {
	WIDTH: 160px; FLOAT: left; PADDING-TOP: 10px
}
#wrapperSearchRefine {
	PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; PADDING-LEFT: 0px; WIDTH: =
165px; PADDING-RIGHT: 0px; FLOAT: left; MARGIN-RIGHT: 10px; PADDING-TOP: =
3px
}
#wrapperSearchRefine H2 {
	BORDER-BOTTOM: #eee 1px solid; PADDING-BOTTOM: 1px; WIDTH: 165px; =
MARGIN-BOTTOM: 10px
}
#wrapperSearchBody {
	WIDTH: 580px; FLOAT: left
}
#wrapperSearchResultsHeader {
	BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; =
PADDING-BOTTOM: 15px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f5f5; =
PADDING-LEFT: 15px; WIDTH: 723px; PADDING-RIGHT: 15px; MARGIN-BOTTOM: =
15px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; =
PADDING-TOP: 15px
}
.wrapperSearchPagination {
	BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; =
BACKGROUND-COLOR: #f5f5f5; WIDTH: 578px; MARGIN-BOTTOM: 15px; HEIGHT: =
30px; COLOR: #000; FONT-SIZE: 10px; FONT-WEIGHT: bold; BORDER-RIGHT: =
#ddd 1px solid
}
.searchPaginationbottom {
	BORDER-TOP: #ddd 1px solid
}
.wrapperSearchPagination DIV.results {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 7px; WIDTH: 143px; PADDING-RIGHT: =
0px; FLOAT: left; PADDING-TOP: 9px
}
.wrapperSearchPagination DIV.pagination {
	TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: =
250px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 21px; PADDING-TOP: 9px
}
.wrapperSearchPagination DIV.pagination A {
	BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; =
PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 4px; =
PADDING-RIGHT: 4px; FONT-SIZE: 10px; BORDER-TOP: #ddd 1px solid; =
FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 3px
}
.wrapperSearchPagination DIV.pagination A:hover {
	BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; =
BACKGROUND-COLOR: #cc0000; COLOR: #fff; BORDER-TOP: #ddd 1px solid; =
BORDER-RIGHT: #ddd 1px solid; TEXT-DECORATION: none
}
.wrapperSearchPagination DIV.sortBy {
	TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: =
142px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 6px
}
.wrapperSearchPagination .sortBy SELECT {
	FONT-SIZE: 11px; FONT-WEIGHT: normal
}
.wrapperSearchResultsEvents {
	BORDER-BOTTOM: #eee 1px solid; PADDING-BOTTOM: 15px; MARGIN-BOTTOM: =
15px
}
#wrapperSearchTabs {
	WIDTH: 580px; BACKGROUND: =
url(/App_Themes/Olympics/standard/images/search/bgSearchTabs.gif) =
repeat-x; HEIGHT: 27px
}
UL#searchTabs {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
#searchTabs LI {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 8px; WIDTH: 103px; PADDING-RIGHT: =
0px; BACKGROUND: =
url(/App_Themes/Olympics/standard/images/search/searchTabOff.gif) =
no-repeat; FLOAT: left; HEIGHT: 21px; COLOR: #fff; FONT-SIZE: 10px; =
FONT-WEIGHT: bold; PADDING-TOP: 6px
}
#searchTabs LI A {
	COLOR: #369
}
#searchTabs LI.On {
	BACKGROUND: =
url(/App_Themes/Olympics/standard/images/search/searchTabOn.gif) =
no-repeat; COLOR: #000
}
.searchResult {
	BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; PADDING-BOTTOM: 15px; =
LINE-HEIGHT: 16px; MARGIN-BOTTOM: 15px
}
.searchResult .left {
	MAX-WIDTH: 202px; FLOAT: left; MARGIN-RIGHT: 10px
}
.searchResult .right {
	WIDTH: 368px; FLOAT: left
}
.searchResult .right H3 {
	MARGIN-BOTTOM: 0px
}
.searchResult IMG {
	FLOAT: left; MARGIN-RIGHT: 10px
}
.search_skyscraper {
	WIDTH: 160px; FLOAT: right; MARGIN-RIGHT: 20px
}
.searchVerticalPromo {
	WIDTH: 160px; FLOAT: left
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/css/NewsDurham/mmVideoWidget.css

.jsVideoWrapper {
	Z-INDEX: 10; BORDER-BOTTOM: #dadada 1px solid; POSITION: relative; =
BORDER-LEFT: #dadada 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 298px; =
MARGIN-BOTTOM: 5px; COLOR: #000; FONT-SIZE: 11px; OVERFLOW: hidden; =
BORDER-TOP: #dadada 1px solid; BORDER-RIGHT: #dadada 1px solid
}
.jsVideoWrapper .slide {
	Z-INDEX: 5; WIDTH: 3000px; HEIGHT: 104px; OVERFLOW: hidden
}
.jsVideoWrapper .jsBase {
	TEXT-ALIGN: right; LINE-HEIGHT: 20px; MARGIN-TOP: 4px; MARGIN-BOTTOM: =
5px; HEIGHT: 20px; COLOR: #666; VERTICAL-ALIGN: middle
}
.jsVideoWrapper .jsThumb {
	BORDER-BOTTOM: #dadada 2px solid; BORDER-LEFT: #dadada 2px solid; =
FLOAT: left; BORDER-TOP: #dadada 2px solid; MARGIN-RIGHT: 5px; =
BORDER-RIGHT: #dadada 2px solid
}
.jsVideoWrapper .jsItem {
	MARGIN: 10px; WIDTH: 278px; DISPLAY: inline; FLOAT: left; HEIGHT: 120px
}
.jsVideoWrapper .jsItem A {
	COLOR: #336699; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
.jsVideoWrapper .jsHeader {
	BORDER-BOTTOM: #dadada 2px solid; HEIGHT: 40px
}
.jsVideoWrapper #jsCurrent {
	WIDTH: 30px; DISPLAY: inline; VERTICAL-ALIGN: super
}
.jsVideoWrapper #jsTotal {
	WIDTH: 30px; DISPLAY: inline; VERTICAL-ALIGN: super
}
.jsVideoWrapper .jsLogo {
	FLOAT: left; MARGIN-LEFT: 10px; FONT-SIZE: 10px; VERTICAL-ALIGN: super
}
.jsVideoWrapper .jsControls {
	FLOAT: right; FONT-SIZE: 11px; MARGIN-RIGHT: 10px
}
.jsVideoWrapper .mm_slide {
	Z-INDEX: 5; WIDTH: 3000px; HEIGHT: 104px; OVERFLOW: hidden
}
.jsVideoWrapper .jsHeader {
	BORDER-BOTTOM: #dadada 2px solid; HEIGHT: 40px
}
.jsVideoWrapper #mm_jsCurrent {
	WIDTH: 30px; DISPLAY: inline; VERTICAL-ALIGN: super
}
.jsVideoWrapper #mm_jsTotal {
	WIDTH: 30px; DISPLAY: inline; VERTICAL-ALIGN: super
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/plugins/gasPrices/assets/gas_styles.css

.gasPrice_mainPage {
	BACKGROUND-IMAGE: url(images/homepage_bar_blue.jpg); BORDER-BOTTOM: =
black 1px solid; TEXT-ALIGN: center; BORDER-LEFT: black 1px solid; =
PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 298px; PADDING-RIGHT: =
0px; BACKGROUND-REPEAT: repeat-x; MARGIN-BOTTOM: 5px; HEIGHT: 50px; =
COLOR: #000000; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px =
solid; PADDING-TOP: 0px
}
.sponsor_bar {
	MARGIN: 4px auto
}
.gas_listings {
	LINE-HEIGHT: normal; MARGIN: 0px auto; WIDTH: 460px; FONT-FAMILY: =
Arial, Times New Roman, Sans-Serif; FONT-SIZE: 12px
}
.gas_listings TABLE {
	MARGIN: 0px auto
}
.gas_listings .listingtable {
	BORDER-BOTTOM: #ffffff 1px solid; TEXT-ALIGN: left; BORDER-LEFT: =
#ffffff 1px solid; WIDTH: 400px; BORDER-COLLAPSE: collapse; FONT-SIZE: =
12px; BORDER-TOP: #ffffff 1px solid; BORDER-RIGHT: #ffffff 1px solid
}
.gas_listings .listingtable TD {
	BORDER-BOTTOM: #ffffff 1px solid; BORDER-LEFT: #ffffff 1px solid; =
PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: =
#ffffff 1px solid; BORDER-RIGHT: #ffffff 1px solid; PADDING-TOP: 4px
}
.gas_listings .listingtable TH {
	BACKGROUND-IMAGE: url(images/table_header.jpg); BORDER-BOTTOM: #ffffff =
1px solid; BORDER-LEFT: #ffffff 1px solid; PADDING-BOTTOM: 5px; =
PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND-REPEAT: repeat-x; =
COLOR: #ffffff; FONT-SIZE: 14px; BORDER-TOP: #ffffff 1px solid; =
BORDER-RIGHT: #ffffff 1px solid; PADDING-TOP: 5px
}
.gas_listings .listingtable .footer {
	BACKGROUND-IMAGE: url(images/table_header.jpg); BACKGROUND-REPEAT: =
repeat-x; COLOR: #ffffff; FONT-SIZE: 14px
}
.listingtable .odd_row {
	BACKGROUND-COLOR: #ffffff
}
.listingtable .even_row {
	BACKGROUND-COLOR: #dfdfdf
}
.gaslisting_header_img {
	MARGIN: 0px auto
}
.gas_listings H1 {
	TEXT-ALIGN: center; COLOR: #205193; FONT-SIZE: 32px
}
.gas_listings .reported_date {
	COLOR: #004d00; FONT-SIZE: 10px
}
.gas_listings A {
	TEXT-ALIGN: center
}
.highest {
	TEXT-ALIGN: center; FONT-SIZE: 30px; FONT-WEIGHT: bold
}
.lowest {
	TEXT-ALIGN: center; FONT-SIZE: 30px; FONT-WEIGHT: bold
}
.highlow {
	BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; =
MARGIN: 0px auto; WIDTH: 300px; BORDER-COLLAPSE: collapse; BORDER-TOP: =
#000000 1px solid; BORDER-RIGHT: #000000 1px solid
}
.highlow .low {
	BACKGROUND-IMAGE: url(images/highlow_blue_bg.jpg); BACKGROUND-REPEAT: =
repeat-x; HEIGHT: 36px; COLOR: #ffffff
}
.highlow .high {
	BACKGROUND-IMAGE: url(images/highlow_red_bg.jpg); BACKGROUND-REPEAT: =
repeat-x; HEIGHT: 36px; COLOR: #ffffff
}
.highlow TD {
	BORDER-BOTTOM: #000000 1px solid; TEXT-ALIGN: center; BORDER-LEFT: =
#000000 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; =
PADDING-RIGHT: 4px; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 =
1px solid; PADDING-TOP: 4px
}
.highlow .title {
	PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #000000; PADDING-LEFT: 2px; =
PADDING-RIGHT: 2px; COLOR: #ffffff; FONT-WEIGHT: bold; PADDING-TOP: 2px
}
.highlow .location {
	LINE-HEIGHT: 10px; BACKGROUND-COLOR: #000000; COLOR: white; FONT-SIZE: =
10px
}
.highlow .congrats {
	PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #000000; PADDING-LEFT: 2px; =
PADDING-RIGHT: 2px; COLOR: #ffffff; PADDING-TOP: 2px
}
.gas_listings .heading {
	TEXT-ALIGN: center; MARGIN-BOTTOM: 12px
}
.highlow A {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.linkbuttons {
	FONT-FAMILY: Verdana; FONT-SIZE: 14px; FONT-WEIGHT: bold
}
.linkbuttons:hover {
	COLOR: #ff1500
}
.blueText {
	COLOR: #0066cc; FONT-SIZE: 14px; FONT-WEIGHT: bold
}
.blueText A {
	COLOR: #0066cc; FONT-SIZE: 14px; FONT-WEIGHT: bold
}
.redText {
	COLOR: #ff1500; FONT-SIZE: 14px; FONT-WEIGHT: bold
}
.redText A {
	COLOR: #ff1500; FONT-SIZE: 12px; FONT-WEIGHT: bold
}
.redText:visited {
	COLOR: #ff1500; FONT-SIZE: 12px; FONT-WEIGHT: bold
}
.pumpPriceWatch {
	TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 3px; PADDING-LEFT: =
3px; PADDING-RIGHT: 3px; COLOR: #0066cc; FONT-SIZE: 11px; =
TEXT-DECORATION: none; PADDING-TOP: 3px
}
.formTable {
	BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; =
PADDING-BOTTOM: 8px; MARGIN: 0px auto; PADDING-LEFT: 8px; PADDING-RIGHT: =
8px; FONT-FAMILY: Verdana, Arial, Sans-Serif; FONT-SIZE: 12px; =
BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; PADDING-TOP: =
8px
}
.formTable INPUT {
	FONT-SIZE: 11px
}
.formTable SELECT {
	FONT-SIZE: 12px
}
.formTable TD {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
PADDING-TOP: 5px
}
.formTable TH {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
PADDING-TOP: 5px
}
.list {
	TEXT-ALIGN: center; MARGIN: 10px auto; FONT-FAMILY: Verdana, Arial, =
Sans-Serif
}
.list UL {
	LIST-STYLE-TYPE: none; MARGIN: 0px auto; WIDTH: 160px; COLOR: #000
}
.list LI {
	BORDER-BOTTOM: #dfdfdf 1px solid; TEXT-ALIGN: left; BORDER-LEFT: =
#dfdfdf 1px solid; PADDING-BOTTOM: 4px; MARGIN: 2px; PADDING-LEFT: 4px; =
PADDING-RIGHT: 4px; BORDER-TOP: #dfdfdf 1px solid; BORDER-RIGHT: #dfdfdf =
1px solid; PADDING-TOP: 4px
}
.list LI:hover {
	BACKGROUND-COLOR: #dfdfdf; TEXT-DECORATION: none
}
.list LI A {
	MARGIN: 0px 0px 0px 10px; COLOR: #000; FONT-WEIGHT: bold; =
TEXT-DECORATION: none
}
.list LI A:hover {
	COLOR: #900
}
.login_box {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; =
LINE-HEIGHT: 22px; TEXT-INDENT: 10px; MARGIN: 5px auto; WIDTH: 160px; =
BACKGROUND: url(images/table_header_blue.jpg) #fff repeat-x left top; =
HEIGHT: 22px; COLOR: #fff; BORDER-TOP: #000 1px solid; FONT-WEIGHT: =
bold; BORDER-RIGHT: #000 1px solid
}
.login_box A {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; COLOR: =
#fff; FONT-WEIGHT: bold; PADDING-TOP: 0px
}
.login_box A:hover {
	COLOR: #fff; FONT-WEIGHT: bold
}
.login_box:hover {
	BACKGROUND: url(images/table_header.jpg) #fff repeat-x left top
}
.congrats_outer {
	BORDER-BOTTOM: #000 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #000 1px =
solid; BACKGROUND-COLOR: #fff; MARGIN: 5px auto; WIDTH: 300px; =
BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid
}
.inner_title {
	BORDER-BOTTOM: #000 1px solid; LINE-HEIGHT: 22px; TEXT-INDENT: 10px; =
WIDTH: 100%; BACKGROUND: url(images/title_bg.gif) #fff repeat-x left =
top; HEIGHT: 22px; COLOR: #fff; FONT-WEIGHT: bold
}
.inner_content {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; HEIGHT: =
100%; PADDING-TOP: 5px
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/news/Polling/css/style.css

#Polling .header {
	FONT-SIZE: 14px
}
#Polling H2 {
	FONT-SIZE: 11px; FONT-WEIGHT: normal
}
#Polling .pollBody {
	MARGIN: 0px auto
}
.polltitlestyle {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
FONT-FAMILY: Verdana, Helvetica, Sans-Serif; HEIGHT: 20px; COLOR: =
#6699cc; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: 5px
}
.textstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: #6699cc; FONT-SIZE: =
11px
}
.textstyle SPAN {
	FONT-WEIGHT: bold
}
.errorMSG {
	MARGIN-TOP: 10px; PADDING-LEFT: 15px; FONT-FAMILY: Verdana, Helvetica, =
Sans-Serif; COLOR: #6699cc; FONT-SIZE: 10px; FONT-WEIGHT: bold
}
.errorMSG SPAN {
	COLOR: #ff3300; FONT-WEIGHT: bold
}
.buttonStyle {
	BORDER-BOTTOM: #efefef 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: =
2px; PADDING-RIGHT: 2px; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; =
COLOR: #6699cc; FONT-SIZE: 10px; BORDER-TOP: #efefef 1px solid; =
FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px
}
.pollQuestionstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; FONT-SIZE: 11px; =
VERTICAL-ALIGN: inherit; TEXT-DECORATION: none
}
.pollWrapper {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
WIDTH: 300px; BACKGROUND: #efefef; BORDER-TOP: #6699cc 1px solid; =
BORDER-RIGHT: #6699cc 1px solid
}
.pollInnerContainer {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
MARGIN: 0px 10px 10px; WIDTH: 278px; BACKGROUND: #ffffff; BORDER-TOP: =
#6699cc 1px solid; BORDER-RIGHT: #6699cc 1px solid
}
.pollAnswerWrapper {
=09
}
.pollAnswerWrapper LABEL {
	DISPLAY: inline; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: =
#6699cc; FONT-SIZE: 11px
}
.pollResultBarWrapper {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
MARGIN-BOTTOM: 5px; PADDING-TOP: 0px
}
.voteresultWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 10px
}
.voteresultWrapper A {
	PADDING-RIGHT: 15px
}
.voteNumberWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 45px
}
.resultPollBar {
	BACKGROUND: url(/TopletsResources/Polling/images/pollbar3.jpg) =
repeat-x; FLOAT: left; HEIGHT: 10px
}
.voteButton {
	MARGIN: 5px
}
.resultsButton {
	BOTTOM: 10px; FLOAT: right; RIGHT: 0px
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/news/Polling/css/style.css

#Polling .header {
	FONT-SIZE: 14px
}
#Polling H2 {
	FONT-SIZE: 11px; FONT-WEIGHT: normal
}
#Polling .pollBody {
	MARGIN: 0px auto
}
.polltitlestyle {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
FONT-FAMILY: Verdana, Helvetica, Sans-Serif; HEIGHT: 20px; COLOR: =
#6699cc; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: 5px
}
.textstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: #6699cc; FONT-SIZE: =
11px
}
.textstyle SPAN {
	FONT-WEIGHT: bold
}
.errorMSG {
	MARGIN-TOP: 10px; PADDING-LEFT: 15px; FONT-FAMILY: Verdana, Helvetica, =
Sans-Serif; COLOR: #6699cc; FONT-SIZE: 10px; FONT-WEIGHT: bold
}
.errorMSG SPAN {
	COLOR: #ff3300; FONT-WEIGHT: bold
}
.buttonStyle {
	BORDER-BOTTOM: #efefef 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: =
2px; PADDING-RIGHT: 2px; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; =
COLOR: #6699cc; FONT-SIZE: 10px; BORDER-TOP: #efefef 1px solid; =
FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px
}
.pollQuestionstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; FONT-SIZE: 11px; =
VERTICAL-ALIGN: inherit; TEXT-DECORATION: none
}
.pollWrapper {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
WIDTH: 300px; BACKGROUND: #efefef; BORDER-TOP: #6699cc 1px solid; =
BORDER-RIGHT: #6699cc 1px solid
}
.pollInnerContainer {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
MARGIN: 0px 10px 10px; WIDTH: 278px; BACKGROUND: #ffffff; BORDER-TOP: =
#6699cc 1px solid; BORDER-RIGHT: #6699cc 1px solid
}
.pollAnswerWrapper {
=09
}
.pollAnswerWrapper LABEL {
	DISPLAY: inline; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: =
#6699cc; FONT-SIZE: 11px
}
.pollResultBarWrapper {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
MARGIN-BOTTOM: 5px; PADDING-TOP: 0px
}
.voteresultWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 10px
}
.voteresultWrapper A {
	PADDING-RIGHT: 15px
}
.voteNumberWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 45px
}
.resultPollBar {
	BACKGROUND: url(/TopletsResources/Polling/images/pollbar3.jpg) =
repeat-x; FLOAT: left; HEIGHT: 10px
}
.voteButton {
	MARGIN: 5px
}
.resultsButton {
	BOTTOM: 10px; FLOAT: right; RIGHT: 0px
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/news/Polling/css/style.css

#Polling .header {
	FONT-SIZE: 14px
}
#Polling H2 {
	FONT-SIZE: 11px; FONT-WEIGHT: normal
}
#Polling .pollBody {
	MARGIN: 0px auto
}
.polltitlestyle {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
FONT-FAMILY: Verdana, Helvetica, Sans-Serif; HEIGHT: 20px; COLOR: =
#6699cc; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: 5px
}
.textstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: #6699cc; FONT-SIZE: =
11px
}
.textstyle SPAN {
	FONT-WEIGHT: bold
}
.errorMSG {
	MARGIN-TOP: 10px; PADDING-LEFT: 15px; FONT-FAMILY: Verdana, Helvetica, =
Sans-Serif; COLOR: #6699cc; FONT-SIZE: 10px; FONT-WEIGHT: bold
}
.errorMSG SPAN {
	COLOR: #ff3300; FONT-WEIGHT: bold
}
.buttonStyle {
	BORDER-BOTTOM: #efefef 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: =
2px; PADDING-RIGHT: 2px; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; =
COLOR: #6699cc; FONT-SIZE: 10px; BORDER-TOP: #efefef 1px solid; =
FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px
}
.pollQuestionstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; FONT-SIZE: 11px; =
VERTICAL-ALIGN: inherit; TEXT-DECORATION: none
}
.pollWrapper {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
WIDTH: 300px; BACKGROUND: #efefef; BORDER-TOP: #6699cc 1px solid; =
BORDER-RIGHT: #6699cc 1px solid
}
.pollInnerContainer {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
MARGIN: 0px 10px 10px; WIDTH: 278px; BACKGROUND: #ffffff; BORDER-TOP: =
#6699cc 1px solid; BORDER-RIGHT: #6699cc 1px solid
}
.pollAnswerWrapper {
=09
}
.pollAnswerWrapper LABEL {
	DISPLAY: inline; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: =
#6699cc; FONT-SIZE: 11px
}
.pollResultBarWrapper {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
MARGIN-BOTTOM: 5px; PADDING-TOP: 0px
}
.voteresultWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 10px
}
.voteresultWrapper A {
	PADDING-RIGHT: 15px
}
.voteNumberWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 45px
}
.resultPollBar {
	BACKGROUND: url(/TopletsResources/Polling/images/pollbar3.jpg) =
repeat-x; FLOAT: left; HEIGHT: 10px
}
.voteButton {
	MARGIN: 5px
}
.resultsButton {
	BOTTOM: 10px; FLOAT: right; RIGHT: 0px
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/news/Polling/css/style.css

#Polling .header {
	FONT-SIZE: 14px
}
#Polling H2 {
	FONT-SIZE: 11px; FONT-WEIGHT: normal
}
#Polling .pollBody {
	MARGIN: 0px auto
}
.polltitlestyle {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
FONT-FAMILY: Verdana, Helvetica, Sans-Serif; HEIGHT: 20px; COLOR: =
#6699cc; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: 5px
}
.textstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: #6699cc; FONT-SIZE: =
11px
}
.textstyle SPAN {
	FONT-WEIGHT: bold
}
.errorMSG {
	MARGIN-TOP: 10px; PADDING-LEFT: 15px; FONT-FAMILY: Verdana, Helvetica, =
Sans-Serif; COLOR: #6699cc; FONT-SIZE: 10px; FONT-WEIGHT: bold
}
.errorMSG SPAN {
	COLOR: #ff3300; FONT-WEIGHT: bold
}
.buttonStyle {
	BORDER-BOTTOM: #efefef 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: =
2px; PADDING-RIGHT: 2px; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; =
COLOR: #6699cc; FONT-SIZE: 10px; BORDER-TOP: #efefef 1px solid; =
FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px
}
.pollQuestionstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; FONT-SIZE: 11px; =
VERTICAL-ALIGN: inherit; TEXT-DECORATION: none
}
.pollWrapper {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
WIDTH: 300px; BACKGROUND: #efefef; BORDER-TOP: #6699cc 1px solid; =
BORDER-RIGHT: #6699cc 1px solid
}
.pollInnerContainer {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
MARGIN: 0px 10px 10px; WIDTH: 278px; BACKGROUND: #ffffff; BORDER-TOP: =
#6699cc 1px solid; BORDER-RIGHT: #6699cc 1px solid
}
.pollAnswerWrapper {
=09
}
.pollAnswerWrapper LABEL {
	DISPLAY: inline; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: =
#6699cc; FONT-SIZE: 11px
}
.pollResultBarWrapper {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
MARGIN-BOTTOM: 5px; PADDING-TOP: 0px
}
.voteresultWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 10px
}
.voteresultWrapper A {
	PADDING-RIGHT: 15px
}
.voteNumberWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 45px
}
.resultPollBar {
	BACKGROUND: url(/TopletsResources/Polling/images/pollbar3.jpg) =
repeat-x; FLOAT: left; HEIGHT: 10px
}
.voteButton {
	MARGIN: 5px
}
.resultsButton {
	BOTTOM: 10px; FLOAT: right; RIGHT: 0px
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/news/Polling/css/style.css

#Polling .header {
	FONT-SIZE: 14px
}
#Polling H2 {
	FONT-SIZE: 11px; FONT-WEIGHT: normal
}
#Polling .pollBody {
	MARGIN: 0px auto
}
.polltitlestyle {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
FONT-FAMILY: Verdana, Helvetica, Sans-Serif; HEIGHT: 20px; COLOR: =
#6699cc; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: 5px
}
.textstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: #6699cc; FONT-SIZE: =
11px
}
.textstyle SPAN {
	FONT-WEIGHT: bold
}
.errorMSG {
	MARGIN-TOP: 10px; PADDING-LEFT: 15px; FONT-FAMILY: Verdana, Helvetica, =
Sans-Serif; COLOR: #6699cc; FONT-SIZE: 10px; FONT-WEIGHT: bold
}
.errorMSG SPAN {
	COLOR: #ff3300; FONT-WEIGHT: bold
}
.buttonStyle {
	BORDER-BOTTOM: #efefef 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: =
2px; PADDING-RIGHT: 2px; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; =
COLOR: #6699cc; FONT-SIZE: 10px; BORDER-TOP: #efefef 1px solid; =
FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px
}
.pollQuestionstyle {
	FONT-FAMILY: Verdana, Helvetica, Sans-Serif; FONT-SIZE: 11px; =
VERTICAL-ALIGN: inherit; TEXT-DECORATION: none
}
.pollWrapper {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
WIDTH: 300px; BACKGROUND: #efefef; BORDER-TOP: #6699cc 1px solid; =
BORDER-RIGHT: #6699cc 1px solid
}
.pollInnerContainer {
	BORDER-BOTTOM: #6699cc 1px solid; BORDER-LEFT: #6699cc 1px solid; =
MARGIN: 0px 10px 10px; WIDTH: 278px; BACKGROUND: #ffffff; BORDER-TOP: =
#6699cc 1px solid; BORDER-RIGHT: #6699cc 1px solid
}
.pollAnswerWrapper {
=09
}
.pollAnswerWrapper LABEL {
	DISPLAY: inline; FONT-FAMILY: Verdana, Helvetica, Sans-Serif; COLOR: =
#6699cc; FONT-SIZE: 11px
}
.pollResultBarWrapper {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
MARGIN-BOTTOM: 5px; PADDING-TOP: 0px
}
.voteresultWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 10px
}
.voteresultWrapper A {
	PADDING-RIGHT: 15px
}
.voteNumberWrapper {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 45px
}
.resultPollBar {
	BACKGROUND: url(/TopletsResources/Polling/images/pollbar3.jpg) =
repeat-x; FLOAT: left; HEIGHT: 10px
}
.voteButton {
	MARGIN: 5px
}
.resultsButton {
	BOTTOM: 10px; FLOAT: right; RIGHT: 0px
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/Login/css/AjaxLogin.css

.loginBar {
	TEXT-ALIGN: left; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; FLOAT: left; COLOR: #5d5d5d; PADDING-TOP: 5px
}
.loginBar UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.loginBar LI {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 15px; PADDING-RIGHT: 0px; =
BACKGROUND: url(/App_Themes/NewsDurham/images/login_arrow_ico.gif) =
no-repeat; PADDING-TOP: 0px
}
.loginBar A {
	COLOR: #5d5d5d; TEXT-DECORATION: none
}
.loginBar A:hover {
	COLOR: #eb4600; TEXT-DECORATION: underline
}
.loginBar A:visited {
	COLOR: #5d5d5d
}
.loginBar .LoginHyperLink A {
	COLOR: #336699; TEXT-DECORATION: underline
}
.loginWindow {
	Z-INDEX: 1000; BORDER-BOTTOM: #333 2px solid; BORDER-LEFT: #333 2px =
solid; BACKGROUND-COLOR: #333; WIDTH: 250px; COLOR: #000; BORDER-TOP: =
#333 2px solid; BORDER-RIGHT: #333 2px solid
}
.loginTop {
=09
}
.titlebar {
	BACKGROUND-COLOR: #333
}
.TitleBar .Label {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FLOAT: =
left; COLOR: #fff; FONT-WEIGHT: bold; PADDING-TOP: 5px
}
.TitleBar .Close {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FLOAT: =
right; COLOR: #eb4600; CLEAR: none; CURSOR: pointer; FONT-WEIGHT: bold; =
PADDING-TOP: 5px
}
.TitleBar .Close A {
	COLOR: #fff; TEXT-DECORATION: underline
}
.loginWindow .Body {
	TEXT-ALIGN: center; BACKGROUND-COLOR: #dadada; MARGIN: 0px 4px 0px 0px; =
WIDTH: 100%; DISPLAY: block; CLEAR: both
}
.resetPassw {
	PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; =
PADDING-TOP: 10px
}
.resetPassw .userProfileHeader {
	FONT-WEIGHT: normal
}
.activationComment {
	CLEAR: both; FONT-SIZE: 11px
}
.loginWindow TABLE {
	MARGIN: 0px auto
}
.loginWindow TABLE TD {
	TEXT-ALIGN: center
}
.resetPassw {
	TEXT-ALIGN: center; PADDING-BOTTOM: 20px; PADDING-LEFT: 20px; =
PADDING-RIGHT: 20px; PADDING-TOP: 20px
}
.RegisterUserWindow {
	Z-INDEX: 1000; BORDER-BOTTOM: #333 2px solid; POSITION: absolute; =
BORDER-LEFT: #333 2px solid; BACKGROUND-COLOR: #dadada; WIDTH: 250px; =
DISPLAY: none; OVERFLOW: auto; BORDER-TOP: #333 2px solid; BORDER-RIGHT: =
#333 2px solid
}
.TopBar {
	BACKGROUND-COLOR: #333
}
.RegisterUserWindow .Title {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FLOAT: =
left; COLOR: #fff; FONT-WEIGHT: bold; PADDING-TOP: 5px
}
.RegisterUserWindow .CloseButton {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FLOAT: =
right; COLOR: #fff; CLEAR: none; CURSOR: pointer; FONT-WEIGHT: bold; =
PADDING-TOP: 5px
}
.RegisterUserWindow .CloseButton A {
	COLOR: #fff; TEXT-DECORATION: underline
}
.RegisterUserWindow .Body {
	TEXT-ALIGN: center; BACKGROUND-COLOR: #dadada; MARGIN: 0px 4px 0px 0px; =
HEIGHT: 100%; CLEAR: both; VERTICAL-ALIGN: top; OVERFLOW: auto
}
.RegisterUserWindow TABLE {
	MARGIN: 0px auto
}
.RegisterUserWindow TABLE TD {
	TEXT-ALIGN: center
}
.btnSignUp {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 62px; BACKGROUND: =
url(/App_Themes/standard/images/btnSignUp.gif) no-repeat; FLOAT: left; =
HEIGHT: 27px; MARGIN-LEFT: 45%; BORDER-TOP: 0px; CURSOR: pointer; =
BORDER-RIGHT: 0px
}
.userProfileHeader {
	TEXT-ALIGN: center
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/topletsresources/news/mostpopular/css/mostpopular.css

.mostpopular {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 0px
}
.counters {
	BACKGROUND: =
url(/TopletsResources/news/MostPopular/images/mostreadtab_bg.gif) =
repeat-x left 50%
}
.counters A {
	PADDING-BOTTOM: 5px; LINE-HEIGHT: 25px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; FONT-FAMILY: Verdana, Arial, Helvetica, Sans-serif; =
COLOR: #fff; FONT-SIZE: 11px; MARGIN-RIGHT: 5px; TEXT-DECORATION: none; =
PADDING-TOP: 5px
}
.counters A:hover {
	TEXT-DECORATION: underline
}
.counters A.active {
	Z-INDEX: 100000; PADDING-BOTTOM: 6px; FONT-FAMILY: Verdana, Arial, =
Helvetica, Sans-serif; BACKGROUND: =
url(/TopletsResources/news/MostPopular/images/tab_bg.gif) repeat-x left =
bottom; HEIGHT: 25px; COLOR: #000; FONT-SIZE: 11px; FONT-WEIGHT: bold
}
.ranges {
	BORDER-BOTTOM: #39f 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 4px; =
PADDING-RIGHT: 4px; PADDING-TOP: 8px
}
.ranges A {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; =
FONT-FAMILY: Verdana, Arial, Helvetica, Sans-serif; COLOR: #5f94b3; =
FONT-SIZE: 11px; TEXT-DECORATION: none; PADDING-TOP: 10px
}
.ranges A:hover {
	TEXT-DECORATION: underline
}
.ranges A.active {
	BACKGROUND: url(/App_Themes/NewsDurham/images/login_arrow_ico.gif) =
no-repeat 0% 50%; COLOR: #eb4600
}
.data {
	BACKGROUND-COLOR: #fff; MARGIN: 0px auto; COLOR: #ff1500
}
.mostreadviews {
	FONT-FAMILY: Verdana, Arial, Helvetica, Sans-serif; FLOAT: right; =
COLOR: #999; FONT-SIZE: 11px
}
.mostpopular UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
.mostpopular LI {
	PADDING-BOTTOM: 4px; LINE-HEIGHT: 14px; PADDING-LEFT: 0px; WIDTH: 100%; =
PADDING-RIGHT: 0px; HEIGHT: 14px; CLEAR: left; PADDING-TOP: 4px
}
.mostpopular LI.even {
	BACKGROUND-COLOR: #ededed
}
.mostpopular LI.odd {
	BACKGROUND-COLOR: #fff
}
.mostpopular LI .mostread_title {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; FLOAT: =
left; CLEAR: left; PADDING-TOP: 0px
}
.mostpopular LI .mostReadViews {
	FLOAT: right; COLOR: #39f; CLEAR: right; FONT-SIZE: 10px
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/WebResource.axd?d=LnvhgTo-96yyUSYl08MQFg2&t=633595190073246099

function WebForm_PostBackOptions(eventTarget, eventArgument, validation, =
validationGroup, actionUrl, trackFocus, clientSubmit) {
    this.eventTarget =3D eventTarget;
    this.eventArgument =3D eventArgument;
    this.validation =3D validation;
    this.validationGroup =3D validationGroup;
    this.actionUrl =3D actionUrl;
    this.trackFocus =3D trackFocus;
    this.clientSubmit =3D clientSubmit;
}
function WebForm_DoPostBackWithOptions(options) {
    var validationResult =3D true;
    if (options.validation) {
        if (typeof(Page_ClientValidate) =3D=3D 'function') {
            validationResult =3D =
Page_ClientValidate(options.validationGroup);
        }
    }
    if (validationResult) {
        if ((typeof(options.actionUrl) !=3D "undefined") && =
(options.actionUrl !=3D null) && (options.actionUrl.length > 0)) {
            theForm.action =3D options.actionUrl;
        }
        if (options.trackFocus) {
            var lastFocus =3D theForm.elements["__LASTFOCUS"];
            if ((typeof(lastFocus) !=3D "undefined") && (lastFocus !=3D =
null)) {
                if (typeof(document.activeElement) =3D=3D "undefined") {
                    lastFocus.value =3D options.eventTarget;
                }
                else {
                    var active =3D document.activeElement;
                    if ((typeof(active) !=3D "undefined") && (active =
!=3D null)) {
                        if ((typeof(active.id) !=3D "undefined") && =
(active.id !=3D null) && (active.id.length > 0)) {
                            lastFocus.value =3D active.id;
                        }
                        else if (typeof(active.name) !=3D "undefined") {
                            lastFocus.value =3D active.name;
                        }
                    }
                }
            }
        }
    }
    if (options.clientSubmit) {
        __doPostBack(options.eventTarget, options.eventArgument);
    }
}
var __pendingCallbacks =3D new Array();
var __synchronousCallBackIndex =3D -1;
function WebForm_DoCallback(eventTarget, eventArgument, eventCallback, =
context, errorCallback, useAsync) {
    var postData =3D __theFormPostData +
                "__CALLBACKID=3D" + WebForm_EncodeCallback(eventTarget) =
+
                "&__CALLBACKPARAM=3D" + =
WebForm_EncodeCallback(eventArgument);
    if (theForm["__EVENTVALIDATION"]) {
        postData +=3D "&__EVENTVALIDATION=3D" + =
WebForm_EncodeCallback(theForm["__EVENTVALIDATION"].value);
    }
    var xmlRequest,e;
    try {
        xmlRequest =3D new XMLHttpRequest();
    }
    catch(e) {
        try {
            xmlRequest =3D new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e) {
        }
    }
    var setRequestHeaderMethodExists =3D true;
    try {
        setRequestHeaderMethodExists =3D (xmlRequest && =
xmlRequest.setRequestHeader);
    }
    catch(e) {}
    var callback =3D new Object();
    callback.eventCallback =3D eventCallback;
    callback.context =3D context;
    callback.errorCallback =3D errorCallback;
    callback.async =3D useAsync;
    var callbackIndex =3D =
WebForm_FillFirstAvailableSlot(__pendingCallbacks, callback);
    if (!useAsync) {
        if (__synchronousCallBackIndex !=3D -1) {
            __pendingCallbacks[__synchronousCallBackIndex] =3D null;
        }
        __synchronousCallBackIndex =3D callbackIndex;
    }
    if (setRequestHeaderMethodExists) {
        xmlRequest.onreadystatechange =3D WebForm_CallbackComplete;
        callback.xmlRequest =3D xmlRequest;
        xmlRequest.open("POST", theForm.action, true);
        xmlRequest.setRequestHeader("Content-Type", =
"application/x-www-form-urlencoded; charset=3Dutf-8");
        xmlRequest.send(postData);
        return;
    }
    callback.xmlRequest =3D new Object();
    var callbackFrameID =3D "__CALLBACKFRAME" + callbackIndex;
    var xmlRequestFrame =3D document.frames[callbackFrameID];
    if (!xmlRequestFrame) {
        xmlRequestFrame =3D document.createElement("IFRAME");
        xmlRequestFrame.width =3D "1";
        xmlRequestFrame.height =3D "1";
        xmlRequestFrame.frameBorder =3D "0";
        xmlRequestFrame.id =3D callbackFrameID;
        xmlRequestFrame.name =3D callbackFrameID;
        xmlRequestFrame.style.position =3D "absolute";
        xmlRequestFrame.style.top =3D "-100px"
        xmlRequestFrame.style.left =3D "-100px";
        try {
            if (callBackFrameUrl) {
                xmlRequestFrame.src =3D callBackFrameUrl;
            }
        }
        catch(e) {}
        document.body.appendChild(xmlRequestFrame);
    }
    var interval =3D window.setInterval(function() {
        xmlRequestFrame =3D document.frames[callbackFrameID];
        if (xmlRequestFrame && xmlRequestFrame.document) {
            window.clearInterval(interval);
            xmlRequestFrame.document.write("");
            xmlRequestFrame.document.close();
            xmlRequestFrame.document.write('<html><body><form =
method=3D"post"><input type=3D"hidden" name=3D"__CALLBACKLOADSCRIPT" =
value=3D"t"></form></body></html>');
            xmlRequestFrame.document.close();
            xmlRequestFrame.document.forms[0].action =3D theForm.action;
            var count =3D __theFormPostCollection.length;
            var element;
            for (var i =3D 0; i < count; i++) {
                element =3D __theFormPostCollection[i];
                if (element) {
                    var fieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
                    fieldElement.type =3D "hidden";
                    fieldElement.name =3D element.name;
                    fieldElement.value =3D element.value;
                    =
xmlRequestFrame.document.forms[0].appendChild(fieldElement);
                }
            }
            var callbackIdFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
            callbackIdFieldElement.type =3D "hidden";
            callbackIdFieldElement.name =3D "__CALLBACKID";
            callbackIdFieldElement.value =3D eventTarget;
            =
xmlRequestFrame.document.forms[0].appendChild(callbackIdFieldElement);
            var callbackParamFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
            callbackParamFieldElement.type =3D "hidden";
            callbackParamFieldElement.name =3D "__CALLBACKPARAM";
            callbackParamFieldElement.value =3D eventArgument;
            =
xmlRequestFrame.document.forms[0].appendChild(callbackParamFieldElement);=

            if (theForm["__EVENTVALIDATION"]) {
                var callbackValidationFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
                callbackValidationFieldElement.type =3D "hidden";
                callbackValidationFieldElement.name =3D =
"__EVENTVALIDATION";
                callbackValidationFieldElement.value =3D =
theForm["__EVENTVALIDATION"].value;
                =
xmlRequestFrame.document.forms[0].appendChild(callbackValidationFieldElem=
ent);
            }
            var callbackIndexFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
            callbackIndexFieldElement.type =3D "hidden";
            callbackIndexFieldElement.name =3D "__CALLBACKINDEX";
            callbackIndexFieldElement.value =3D callbackIndex;
            =
xmlRequestFrame.document.forms[0].appendChild(callbackIndexFieldElement);=

            xmlRequestFrame.document.forms[0].submit();
        }
    }, 10);
}
function WebForm_CallbackComplete() {
    for (var i =3D 0; i < __pendingCallbacks.length; i++) {
        callbackObject =3D __pendingCallbacks[i];
        if (callbackObject && callbackObject.xmlRequest && =
(callbackObject.xmlRequest.readyState =3D=3D 4)) {
            WebForm_ExecuteCallback(callbackObject);
            if (!__pendingCallbacks[i].async) {
                __synchronousCallBackIndex =3D -1;
            }
            __pendingCallbacks[i] =3D null;
            var callbackFrameID =3D "__CALLBACKFRAME" + i;
            var xmlRequestFrame =3D =
document.getElementById(callbackFrameID);
            if (xmlRequestFrame) {
                xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
            }
        }
    }
}
function WebForm_ExecuteCallback(callbackObject) {
    var response =3D callbackObject.xmlRequest.responseText;
    if (response.charAt(0) =3D=3D "s") {
        if ((typeof(callbackObject.eventCallback) !=3D "undefined") && =
(callbackObject.eventCallback !=3D null)) {
            callbackObject.eventCallback(response.substring(1), =
callbackObject.context);
        }
    }
    else if (response.charAt(0) =3D=3D "e") {
        if ((typeof(callbackObject.errorCallback) !=3D "undefined") && =
(callbackObject.errorCallback !=3D null)) {
            callbackObject.errorCallback(response.substring(1), =
callbackObject.context);
        }
    }
    else {
        var separatorIndex =3D response.indexOf("|");
        if (separatorIndex !=3D -1) {
            var validationFieldLength =3D parseInt(response.substring(0, =
separatorIndex));
            if (!isNaN(validationFieldLength)) {
                var validationField =3D =
response.substring(separatorIndex + 1, separatorIndex + =
validationFieldLength + 1);
                if (validationField !=3D "") {
                    var validationFieldElement =3D =
theForm["__EVENTVALIDATION"];
                    if (!validationFieldElement) {
                        validationFieldElement =3D =
document.createElement("INPUT");
                        validationFieldElement.type =3D "hidden";
                        validationFieldElement.name =3D =
"__EVENTVALIDATION";
                        theForm.appendChild(validationFieldElement);
                    }
                    validationFieldElement.value =3D validationField;
                }
                if ((typeof(callbackObject.eventCallback) !=3D =
"undefined") && (callbackObject.eventCallback !=3D null)) {
                    =
callbackObject.eventCallback(response.substring(separatorIndex + =
validationFieldLength + 1), callbackObject.context);
                }
            }
        }
    }
}
function WebForm_FillFirstAvailableSlot(array, element) {
    var i;
    for (i =3D 0; i < array.length; i++) {
        if (!array[i]) break;
    }
    array[i] =3D element;
    return i;
}
var __nonMSDOMBrowser =3D =
(window.navigator.appName.toLowerCase().indexOf('explorer') =3D=3D -1);
var __theFormPostData =3D "";
var __theFormPostCollection =3D new Array();
function WebForm_InitCallback() {
    var count =3D theForm.elements.length;
    var element;
    for (var i =3D 0; i < count; i++) {
        element =3D theForm.elements[i];
        var tagName =3D element.tagName.toLowerCase();
        if (tagName =3D=3D "input") {
            var type =3D element.type;
            if ((type =3D=3D "text" || type =3D=3D "hidden" || type =
=3D=3D "password" ||
                ((type =3D=3D "checkbox" || type =3D=3D "radio") && =
element.checked)) &&
                (element.id !=3D "__EVENTVALIDATION")) {
                WebForm_InitCallbackAddField(element.name, =
element.value);
            }
        }
        else if (tagName =3D=3D "select") {
            var selectCount =3D element.options.length;
            for (var j =3D 0; j < selectCount; j++) {
                var selectChild =3D element.options[j];
                if (selectChild.selected =3D=3D true) {
                    WebForm_InitCallbackAddField(element.name, =
element.value);
                }
            }
        }
        else if (tagName =3D=3D "textarea") {
            WebForm_InitCallbackAddField(element.name, element.value);
        }
    }
}
function WebForm_InitCallbackAddField(name, value) {
    var nameValue =3D new Object();
    nameValue.name =3D name;
    nameValue.value =3D value;
    __theFormPostCollection[__theFormPostCollection.length] =3D =
nameValue;
    __theFormPostData +=3D WebForm_EncodeCallback(name) + "=3D" + =
WebForm_EncodeCallback(value) + "&";
}
function WebForm_EncodeCallback(parameter) {
    if (encodeURIComponent) {
        return encodeURIComponent(parameter);
    }
    else {
        return escape(parameter);
    }
}
var __disabledControlArray =3D new Array();
function WebForm_ReEnableControls() {
    if (typeof(__enabledControlArray) =3D=3D 'undefined') {
        return false;
    }
    var disabledIndex =3D 0;
    for (var i =3D 0; i < __enabledControlArray.length; i++) {
        var c;
        if (__nonMSDOMBrowser) {
            c =3D document.getElementById(__enabledControlArray[i]);
        }
        else {
            c =3D document.all[__enabledControlArray[i]];
        }
        if ((typeof(c) !=3D "undefined") && (c !=3D null) && (c.disabled =
=3D=3D true)) {
            c.disabled =3D false;
            __disabledControlArray[disabledIndex++] =3D c;
        }
    }
    setTimeout("WebForm_ReDisableControls()", 0);
    return true;
}
function WebForm_ReDisableControls() {
    for (var i =3D 0; i < __disabledControlArray.length; i++) {
        __disabledControlArray[i].disabled =3D true;
    }
}
function WebForm_FireDefaultButton(event, target) {
    if (event.keyCode =3D=3D 13) {
        var src =3D event.srcElement || event.target;
        if (!src || (src.tagName.toLowerCase() !=3D "textarea")) {
            var defaultButton;
            if (__nonMSDOMBrowser) {
               defaultButton =3D document.getElementById(target);
            }
            else {
                defaultButton =3D document.all[target];
            }
            if (defaultButton && typeof(defaultButton.click) !=3D =
"undefined") {
                defaultButton.click();
                event.cancelBubble =3D true;
                if (event.stopPropagation) event.stopPropagation();
                return false;
            }
        }
    }
    return true;
}
function WebForm_GetScrollX() {
    if (__nonMSDOMBrowser) {
        return window.pageXOffset;
    }
    else {
        if (document.documentElement && =
document.documentElement.scrollLeft) {
            return document.documentElement.scrollLeft;
        }
        else if (document.body) {
            return document.body.scrollLeft;
        }
    }
    return 0;
}
function WebForm_GetScrollY() {
    if (__nonMSDOMBrowser) {
        return window.pageYOffset;
    }
    else {
        if (document.documentElement && =
document.documentElement.scrollTop) {
            return document.documentElement.scrollTop;
        }
        else if (document.body) {
            return document.body.scrollTop;
        }
    }
    return 0;
}
function WebForm_SaveScrollPositionSubmit() {
    if (__nonMSDOMBrowser) {
        theForm.elements['__SCROLLPOSITIONY'].value =3D =
window.pageYOffset;
        theForm.elements['__SCROLLPOSITIONX'].value =3D =
window.pageXOffset;
    }
    else {
        theForm.__SCROLLPOSITIONX.value =3D WebForm_GetScrollX();
        theForm.__SCROLLPOSITIONY.value =3D WebForm_GetScrollY();
    }
    if ((typeof(this.oldSubmit) !=3D "undefined") && (this.oldSubmit =
!=3D null)) {
        return this.oldSubmit();
    }
    return true;
}
function WebForm_SaveScrollPositionOnSubmit() {
    theForm.__SCROLLPOSITIONX.value =3D WebForm_GetScrollX();
    theForm.__SCROLLPOSITIONY.value =3D WebForm_GetScrollY();
    if ((typeof(this.oldOnSubmit) !=3D "undefined") && (this.oldOnSubmit =
!=3D null)) {
        return this.oldOnSubmit();
    }
    return true;
}
function WebForm_RestoreScrollPosition() {
    if (__nonMSDOMBrowser) {
        window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, =
theForm.elements['__SCROLLPOSITIONY'].value);
    }
    else {
        window.scrollTo(theForm.__SCROLLPOSITIONX.value, =
theForm.__SCROLLPOSITIONY.value);
    }
    if ((typeof(theForm.oldOnLoad) !=3D "undefined") && =
(theForm.oldOnLoad !=3D null)) {
        return theForm.oldOnLoad();
    }
    return true;
}
function WebForm_TextBoxKeyHandler(event) {
    if (event.keyCode =3D=3D 13) {
        var target;
        if (__nonMSDOMBrowser) {
            target =3D event.target;
        }
        else {
            target =3D event.srcElement;
        }
        if ((typeof(target) !=3D "undefined") && (target !=3D null)) {
            if (typeof(target.onchange) !=3D "undefined") {
                target.onchange();
                event.cancelBubble =3D true;
                if (event.stopPropagation) event.stopPropagation();
                return false;
            }
        }
    }
    return true;
}
function WebForm_TrimString(value) {
    return value.replace(/^\s+|\s+$/g, '')
}
function WebForm_AppendToClassName(element, className) {
    var currentClassName =3D ' ' + WebForm_TrimString(element.className) =
+ ' ';
    className =3D WebForm_TrimString(className);
    var index =3D currentClassName.indexOf(' ' + className + ' ');
    if (index =3D=3D=3D -1) {
        element.className =3D (element.className =3D=3D=3D '') ? =
className : element.className + ' ' + className;
    }
}
function WebForm_RemoveClassName(element, className) {
    var currentClassName =3D ' ' + WebForm_TrimString(element.className) =
+ ' ';
    className =3D WebForm_TrimString(className);
    var index =3D currentClassName.indexOf(' ' + className + ' ');
    if (index >=3D 0) {
        element.className =3D =
WebForm_TrimString(currentClassName.substring(0, index) + ' ' +
            currentClassName.substring(index + className.length + 1, =
currentClassName.length));
    }
}
function WebForm_GetElementById(elementId) {
    if (document.getElementById) {
        return document.getElementById(elementId);
    }
    else if (document.all) {
        return document.all[elementId];
    }
    else return null;
}
function WebForm_GetElementByTagName(element, tagName) {
    var elements =3D WebForm_GetElementsByTagName(element, tagName);
    if (elements && elements.length > 0) {
        return elements[0];
    }
    else return null;
}
function WebForm_GetElementsByTagName(element, tagName) {
    if (element && tagName) {
        if (element.getElementsByTagName) {
            return element.getElementsByTagName(tagName);
        }
        if (element.all && element.all.tags) {
            return element.all.tags(tagName);
        }
    }
    return null;
}
function WebForm_GetElementDir(element) {
    if (element) {
        if (element.dir) {
            return element.dir;
        }
        return WebForm_GetElementDir(element.parentNode);
    }
    return "ltr";
}
function WebForm_GetElementPosition(element) {
    var result =3D new Object();
    result.x =3D 0;
    result.y =3D 0;
    result.width =3D 0;
    result.height =3D 0;
    if (element.offsetParent) {
        result.x =3D element.offsetLeft;
        result.y =3D element.offsetTop;
        var parent =3D element.offsetParent;
        while (parent) {
            result.x +=3D parent.offsetLeft;
            result.y +=3D parent.offsetTop;
            var parentTagName =3D parent.tagName.toLowerCase();
            if (parentTagName !=3D "table" &&
                parentTagName !=3D "body" &&=20
                parentTagName !=3D "html" &&=20
                parentTagName !=3D "div" &&=20
                parent.clientTop &&=20
                parent.clientLeft) {
                result.x +=3D parent.clientLeft;
                result.y +=3D parent.clientTop;
            }
            parent =3D parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x =3D element.left;
        result.y =3D element.top;
    }
    else {
        if (element.x) {
            result.x =3D element.x;
        }
        if (element.y) {
            result.y =3D element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) {
        result.width =3D element.offsetWidth;
        result.height =3D element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && =
element.style.pixelHeight) {
        result.width =3D element.style.pixelWidth;
        result.height =3D element.style.pixelHeight;
    }
    return result;
}
function WebForm_GetParentByTagName(element, tagName) {
    var parent =3D element.parentNode;
    var upperTagName =3D tagName.toUpperCase();
    while (parent && (parent.tagName.toUpperCase() !=3D upperTagName)) {
        parent =3D parent.parentNode ? parent.parentNode : =
parent.parentElement;
    }
    return parent;
}
function WebForm_SetElementHeight(element, height) {
    if (element && element.style) {
        element.style.height =3D height + "px";
    }
}
function WebForm_SetElementWidth(element, width) {
    if (element && element.style) {
        element.style.width =3D width + "px";
    }
}
function WebForm_SetElementX(element, x) {
    if (element && element.style) {
        element.style.left =3D x + "px";
    }
}
function WebForm_SetElementY(element, y) {
    if (element && element.style) {
        element.style.top =3D y + "px";
    }
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/ScriptResource.axd?d=qXo0sjdh9Q2rdRlvYsYaFG-HgTAWbrA6UcG0APePZibwdnh50mccxd_s2AZ8Y99V0&t=633718480760000000

=EF=BB=BF//--------------------------------------------------------------=
---------
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------=

// MicrosoftAjax.js
// Microsoft AJAX Framework.


Function.__typeName =3D 'Function';
Function.__class =3D true;

Function.createCallback =3D function Function$createCallback(method, =
context) {
    /// <param name=3D"method" type=3D"Function"></param>
    /// <param name=3D"context" mayBeNull=3D"true"></param>
    /// <returns type=3D"Function"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "method", type: Function},
        {name: "context", mayBeNull: true}
    ]);
    if (e) throw e;


       =20
    return function() {
        var l =3D arguments.length;
        if (l > 0) {
                        var args =3D [];
            for (var i =3D 0; i < l; i++) {
                args[i] =3D arguments[i];
            }
            args[l] =3D context;
            return method.apply(this, args);
        }
        return method.call(this, context);
    }
}

Function.createDelegate =3D function Function$createDelegate(instance, =
method) {
    /// <param name=3D"instance" mayBeNull=3D"true"></param>
    /// <param name=3D"method" type=3D"Function"></param>
    /// <returns type=3D"Function"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true},
        {name: "method", type: Function}
    ]);
    if (e) throw e;


       =20
    return function() {
        return method.apply(instance, arguments);
    }
}

Function.emptyFunction =3D Function.emptyMethod =3D function =
Function$emptyMethod() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
}

Function._validateParams =3D function Function$_validateParams(params, =
expectedParams) {
                                                                         =
                                                          =20
    var e;

    e =3D Function._validateParameterCount(params, expectedParams);
    if (e) {
        e.popStackFrame();
        return e;
    }

    for (var i=3D0; i < params.length; i++) {
                                var expectedParam =3D =
expectedParams[Math.min(i, expectedParams.length - 1)];

        var paramName =3D expectedParam.name;
        if (expectedParam.parameterArray) {
                        paramName +=3D "[" + (i - expectedParams.length =
+ 1) + "]";
        }

        e =3D Function._validateParameter(params[i], expectedParam, =
paramName);
        if (e) {
            e.popStackFrame();
            return e;
        }
    }


    return null;
}

Function._validateParameterCount =3D function =
Function$_validateParameterCount(params, expectedParams) {
    var maxParams =3D expectedParams.length;
    var minParams =3D 0;
    for (var i=3D0; i < expectedParams.length; i++) {
        if (expectedParams[i].parameterArray) {
            maxParams =3D Number.MAX_VALUE;
        }
        else if (!expectedParams[i].optional) {
            minParams++;
        }
    }

    if (params.length < minParams || params.length > maxParams) {
        var e =3D Error.parameterCount();
        e.popStackFrame();
        return e;
    }

    return null;
}

Function._validateParameter =3D function =
Function$_validateParameter(param, expectedParam, paramName) {
    var e;

    var expectedType =3D expectedParam.type;
    var expectedInteger =3D !!expectedParam.integer;
    var expectedDomElement =3D !!expectedParam.domElement;
    var mayBeNull =3D !!expectedParam.mayBeNull;

    e =3D Function._validateParameterType(param, expectedType, =
expectedInteger, expectedDomElement, mayBeNull, paramName);
    if (e) {
        e.popStackFrame();
        return e;
    }

        var expectedElementType =3D expectedParam.elementType;
    var elementMayBeNull =3D !!expectedParam.elementMayBeNull;
    if (expectedType =3D=3D=3D Array && typeof(param) !=3D=3D =
"undefined" && param !=3D=3D null &&
        (expectedElementType || !elementMayBeNull)) {
        var expectedElementInteger =3D !!expectedParam.elementInteger;
        var expectedElementDomElement =3D =
!!expectedParam.elementDomElement;
        for (var i=3D0; i < param.length; i++) {
            var elem =3D param[i];
            e =3D Function._validateParameterType(elem, =
expectedElementType,
                expectedElementInteger, expectedElementDomElement, =
elementMayBeNull,
                paramName + "[" + i + "]");
            if (e) {
                e.popStackFrame();
                return e;
            }
        }
    }

    return null;
}

Function._validateParameterType =3D function =
Function$_validateParameterType(param, expectedType, expectedInteger, =
expectedDomElement, mayBeNull, paramName) {
    var e;

    if (typeof(param) =3D=3D=3D "undefined") {
        if (mayBeNull) {
            return null;
        }
        else {
            e =3D Error.argumentUndefined(paramName);
            e.popStackFrame();
            return e;
        }
    }

    if (param =3D=3D=3D null) {
        if (mayBeNull) {
            return null;
        }
        else {
            e =3D Error.argumentNull(paramName);
            e.popStackFrame();
            return e;
        }
    }

    if (expectedType && expectedType.__enum) {
        if (typeof(param) !=3D=3D 'number') {
            e =3D Error.argumentType(paramName, Object.getType(param), =
expectedType);
            e.popStackFrame();
            return e;
        }
        if ((param % 1) =3D=3D=3D 0) {
            var values =3D expectedType.prototype;
            if (!expectedType.__flags || (param =3D=3D=3D 0)) {
                for (var i in values) {
                    if (values[i] =3D=3D=3D param) return null;
                }
            }
            else {
                var v =3D param;
                for (var i in values) {
                    var vali =3D values[i];
                    if (vali =3D=3D=3D 0) continue;
                    if ((vali & param) =3D=3D=3D vali) {
                        v -=3D vali;
                    }
                    if (v =3D=3D=3D 0) return null;
                }
            }
        }
        e =3D Error.argumentOutOfRange(paramName, param, =
String.format(Sys.Res.enumInvalidValue, param, expectedType.getName()));
        e.popStackFrame();
        return e;
    }

                    if (expectedDomElement && (param !=3D=3D window) && =
(param !=3D=3D document) &&
        !(window.HTMLElement && (param instanceof HTMLElement)) &&
        (typeof(param.nodeName) !=3D=3D 'string')) {

        e =3D Error.argument(paramName, Sys.Res.argumentDomElement);
        e.popStackFrame();
        return e;
    }

        if (expectedType && !expectedType.isInstanceOfType(param)) {
        e =3D Error.argumentType(paramName, Object.getType(param), =
expectedType);
        e.popStackFrame();
        return e;
    }

    if (expectedType =3D=3D=3D Number && expectedInteger) {
                        if ((param % 1) !=3D=3D 0) {
            e =3D Error.argumentOutOfRange(paramName, param, =
Sys.Res.argumentInteger);
            e.popStackFrame();
            return e;
        }
    }

    return null;
}
Error.__typeName =3D 'Error';
Error.__class =3D true;

Error.create =3D function Error$create(message, errorInfo) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"errorInfo" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"Error"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: =
true},
        {name: "errorInfo", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


            var e =3D new Error(message);
    e.message =3D message;

    if (errorInfo) {
        for (var v in errorInfo) {
            e[v] =3D errorInfo[v];
        }
    }

    e.popStackFrame();
    return e;
}

Error.argument =3D function Error$argument(paramName, message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: =
true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


    var displayMessage =3D "Sys.ArgumentException: " + (message ? =
message : Sys.Res.argument);
    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

    var e =3D Error.create(displayMessage, { name: =
"Sys.ArgumentException", paramName: paramName });
    e.popStackFrame();
    return e;
}

Error.argumentNull =3D function Error$argumentNull(paramName, message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: =
true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


    var displayMessage =3D "Sys.ArgumentNullException: " + (message ? =
message : Sys.Res.argumentNull);
    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

    var e =3D Error.create(displayMessage, { name: =
"Sys.ArgumentNullException", paramName: paramName });
    e.popStackFrame();
    return e;
}

Error.argumentOutOfRange =3D function =
Error$argumentOutOfRange(paramName, actualValue, message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"actualValue" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D 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 =3D "Sys.ArgumentOutOfRangeException: " + =
(message ? message : Sys.Res.argumentOutOfRange);
    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

                if (typeof(actualValue) !=3D=3D "undefined" && =
actualValue !=3D=3D null) {
        displayMessage +=3D "\n" + String.format(Sys.Res.actualValue, =
actualValue);
    }

    var e =3D Error.create(displayMessage, {
        name: "Sys.ArgumentOutOfRangeException",
        paramName: paramName,
        actualValue: actualValue
    });
    e.popStackFrame();
    return e;
}

Error.argumentType =3D function Error$argumentType(paramName, =
actualType, expectedType, message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"actualType" type=3D"Type" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"expectedType" type=3D"Type" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D 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 =3D "Sys.ArgumentTypeException: ";
    if (message) {
        displayMessage +=3D message;
    }
    else if (actualType && expectedType) {
        displayMessage +=3D
            String.format(Sys.Res.argumentTypeWithTypes, =
actualType.getName(), expectedType.getName());
    }
    else {
        displayMessage +=3D Sys.Res.argumentType;
    }

    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

    var e =3D Error.create(displayMessage, {
        name: "Sys.ArgumentTypeException",
        paramName: paramName,
        actualType: actualType,
        expectedType: expectedType
    });
    e.popStackFrame();
    return e;
}

Error.argumentUndefined =3D function Error$argumentUndefined(paramName, =
message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: =
true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


    var displayMessage =3D "Sys.ArgumentUndefinedException: " + (message =
? message : Sys.Res.argumentUndefined);
    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

    var e =3D Error.create(displayMessage, { name: =
"Sys.ArgumentUndefinedException", paramName: paramName });
    e.popStackFrame();
    return e;
}

Error.format =3D function Error$format(message) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage =3D "Sys.FormatException: " + (message ? message =
: Sys.Res.format);
    var e =3D Error.create(displayMessage, {name: =
'Sys.FormatException'});
    e.popStackFrame();
    return e;
}

Error.invalidOperation =3D function Error$invalidOperation(message) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage =3D "Sys.InvalidOperationException: " + (message =
? message : Sys.Res.invalidOperation);

    var e =3D Error.create(displayMessage, {name: =
'Sys.InvalidOperationException'});
    e.popStackFrame();
    return e;
}

Error.notImplemented =3D function Error$notImplemented(message) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage =3D "Sys.NotImplementedException: " + (message ? =
message : Sys.Res.notImplemented);

    var e =3D Error.create(displayMessage, {name: =
'Sys.NotImplementedException'});
    e.popStackFrame();
    return e;
}

Error.parameterCount =3D function Error$parameterCount(message) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


    var displayMessage =3D "Sys.ParameterCountException: " + (message ? =
message : Sys.Res.parameterCount);
    var e =3D Error.create(displayMessage, {name: =
'Sys.ParameterCountException'});
    e.popStackFrame();
    return e;
}

Error.prototype.popStackFrame =3D function Error$popStackFrame() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();

                           =20
    if (typeof(this.stack) =3D=3D=3D "undefined" || this.stack =3D=3D=3D =
null ||
        typeof(this.fileName) =3D=3D=3D "undefined" || this.fileName =
=3D=3D=3D null ||
        typeof(this.lineNumber) =3D=3D=3D "undefined" || this.lineNumber =
=3D=3D=3D null) {
        return;
    }

    var stackFrames =3D this.stack.split("\n");

                var currentFrame =3D stackFrames[0];
    var pattern =3D this.fileName + ":" + this.lineNumber;
    while(typeof(currentFrame) !=3D=3D "undefined" &&
          currentFrame !=3D=3D null &&
          currentFrame.indexOf(pattern) =3D=3D=3D -1) {
        stackFrames.shift();
        currentFrame =3D stackFrames[0];
    }

    var nextFrame =3D stackFrames[1];

        if (typeof(nextFrame) =3D=3D=3D "undefined" || nextFrame =
=3D=3D=3D null) {
        return;
    }

        var nextFrameParts =3D nextFrame.match(/@(.*):(\d+)$/);
    if (typeof(nextFrameParts) =3D=3D=3D "undefined" || nextFrameParts =
=3D=3D=3D null) {
        return;
    }

    this.fileName =3D nextFrameParts[1];

        this.lineNumber =3D parseInt(nextFrameParts[2]);

    stackFrames.shift();
    this.stack =3D stackFrames.join("\n");
}
if (!window) this.window =3D this;

window.Type =3D Function;

window.__rootNamespaces =3D [];
window.__registeredTypes =3D {};

Type.__fullyQualifiedIdentifierRegExp =3D new RegExp("^[^.0-9 =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
Type.__identifierRegExp =3D new RegExp("^[^.0-9 =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");

Type.prototype.callBaseMethod =3D function Type$callBaseMethod(instance, =
name, baseArguments) {
    /// <param name=3D"instance"></param>
    /// <param name=3D"name" type=3D"String"></param>
    /// <param name=3D"baseArguments" type=3D"Array" optional=3D"true" =
mayBeNull=3D"true" elementMayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D 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 =3D this.getBaseMethod(instance, name);
    if (!baseMethod) throw =
Error.invalidOperation(String.format(Sys.Res.methodNotFound, name));
    if (!baseArguments) {
        return baseMethod.apply(instance);
    }
    else {
        return baseMethod.apply(instance, baseArguments);
    }
}

Type.prototype.getBaseMethod =3D function Type$getBaseMethod(instance, =
name) {
    /// <param name=3D"instance"></param>
    /// <param name=3D"name" type=3D"String"></param>
    /// <returns type=3D"Function" mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance"},
        {name: "name", type: String}
    ]);
    if (e) throw e;

    if (!this.isInstanceOfType(instance)) throw =
Error.argumentType('instance', Object.getType(instance), this);
    var baseType =3D this.getBaseType();
    if (baseType) {
        var baseMethod =3D baseType.prototype[name];
        return (baseMethod instanceof Function) ? baseMethod : null;
    }

    return null;
}

Type.prototype.getBaseType =3D function Type$getBaseType() {
    /// <returns type=3D"Type" mayBeNull=3D"true"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return (typeof(this.__baseType) =3D=3D=3D "undefined") ? null : =
this.__baseType;
}

Type.prototype.getInterfaces =3D function Type$getInterfaces() {
    /// <returns type=3D"Array" elementType=3D"Type" mayBeNull=3D"false" =
elementMayBeNull=3D"false"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    var result =3D [];
    var type =3D this;
    while(type) {
        var interfaces =3D type.__interfaces;
        if (interfaces) {
            for (var i =3D 0, l =3D interfaces.length; i < l; i++) {
                var interfaceType =3D interfaces[i];
                if (!Array.contains(result, interfaceType)) {
                    result[result.length] =3D interfaceType;
                }
            }
        }
        type =3D type.__baseType;
    }
    return result;
}

Type.prototype.getName =3D function Type$getName() {
    /// <returns type=3D"String"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return (typeof(this.__typeName) =3D=3D=3D "undefined") ? "" : =
this.__typeName;
}

Type.prototype.implementsInterface =3D function =
Type$implementsInterface(interfaceType) {
    /// <param name=3D"interfaceType" type=3D"Type"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "interfaceType", type: Type}
    ]);
    if (e) throw e;

    this.resolveInheritance();

    var interfaceName =3D interfaceType.getName();
    var cache =3D this.__interfaceCache;
    if (cache) {
        var cacheEntry =3D cache[interfaceName];
        if (typeof(cacheEntry) !=3D=3D 'undefined') return cacheEntry;
    }
    else {
        cache =3D this.__interfaceCache =3D {};
    }

    var baseType =3D this;
    while (baseType) {
        var interfaces =3D baseType.__interfaces;
        if (interfaces) {
            if (Array.indexOf(interfaces, interfaceType) !=3D=3D -1) {
                return cache[interfaceName] =3D true;
            }
        }

        baseType =3D baseType.__baseType;
    }

    return cache[interfaceName] =3D false;
}

Type.prototype.inheritsFrom =3D function Type$inheritsFrom(parentType) {
    /// <param name=3D"parentType" type=3D"Type"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "parentType", type: Type}
    ]);
    if (e) throw e;

    this.resolveInheritance();
    var baseType =3D this.__baseType;
    while (baseType) {
        if (baseType =3D=3D=3D parentType) {
            return true;
        }
        baseType =3D baseType.__baseType;
    }

    return false;
}

Type.prototype.initializeBase =3D function Type$initializeBase(instance, =
baseArguments) {
    /// <param name=3D"instance"></param>
    /// <param name=3D"baseArguments" type=3D"Array" optional=3D"true" =
mayBeNull=3D"true" elementMayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance"},
        {name: "baseArguments", type: Array, mayBeNull: true, optional: =
true, elementMayBeNull: true}
    ]);
    if (e) throw e;

    if (!this.isInstanceOfType(instance)) throw =
Error.argumentType('instance', Object.getType(instance), this);

    this.resolveInheritance();
    if (this.__baseType) {
        if (!baseArguments) {
            this.__baseType.apply(instance);
        }
        else {
            this.__baseType.apply(instance, baseArguments);
        }
    }

    return instance;
}

Type.prototype.isImplementedBy =3D function =
Type$isImplementedBy(instance) {
    /// <param name=3D"instance" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true}
    ]);
    if (e) throw e;

    if (typeof(instance) =3D=3D=3D "undefined" || instance =3D=3D=3D =
null) return false;

    var instanceType =3D Object.getType(instance);
    return !!(instanceType.implementsInterface && =
instanceType.implementsInterface(this));
}

Type.prototype.isInstanceOfType =3D function =
Type$isInstanceOfType(instance) {
    /// <param name=3D"instance" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true}
    ]);
    if (e) throw e;

    if (typeof(instance) =3D=3D=3D "undefined" || instance =3D=3D=3D =
null) return false;

    if (instance instanceof this) return true;

    var instanceType =3D Object.getType(instance);
    return !!(instanceType =3D=3D=3D this) ||
           (instanceType.inheritsFrom && =
instanceType.inheritsFrom(this)) ||
           (instanceType.implementsInterface && =
instanceType.implementsInterface(this));
}

Type.prototype.registerClass =3D function Type$registerClass(typeName, =
baseType, interfaceTypes) {
    /// <param name=3D"typeName" type=3D"String"></param>
    /// <param name=3D"baseType" type=3D"Type" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"interfaceTypes" parameterArray=3D"true" =
type=3D"Type"></param>
    /// <returns type=3D"Type"></returns>
    var e =3D 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 =3D eval(typeName);
    }
    catch(e) {
        throw Error.argument('typeName', Sys.Res.argumentTypeName);
    }
    if (parsedName !=3D=3D this) throw Error.argument('typeName', =
Sys.Res.badTypeName);
        if (window.__registeredTypes[typeName]) throw =
Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, =
typeName));

            if ((arguments.length > 1) && (typeof(baseType) =3D=3D=3D =
'undefined')) throw Error.argumentUndefined('baseType');
    if (baseType && !baseType.__class) throw Error.argument('baseType', =
Sys.Res.baseNotAClass);

    this.prototype.constructor =3D this;
    this.__typeName =3D typeName;
    this.__class =3D true;
    if (baseType) {
        this.__baseType =3D baseType;
        this.__basePrototypePending =3D true;
    }
        if (!window.__classes) window.__classes =3D {};
    window.__classes[typeName.toUpperCase()] =3D this;

                if (interfaceTypes) {
        this.__interfaces =3D [];
        for (var i =3D 2; i < arguments.length; i++) {
            var interfaceType =3D arguments[i];
            if (!interfaceType.__interface) throw =
Error.argument('interfaceTypes[' + (i - 2) + ']', =
Sys.Res.notAnInterface);
            this.resolveInheritance();
            for (var methodName in interfaceType.prototype) {
                var method =3D interfaceType.prototype[methodName];
                if (!this.prototype[methodName]) {
                    this.prototype[methodName] =3D method;
                }
            }
            this.__interfaces.push(interfaceType);
        }
    }
    window.__registeredTypes[typeName] =3D true;

    return this;
}

Type.prototype.registerInterface =3D function =
Type$registerInterface(typeName) {
    /// <param name=3D"typeName" type=3D"String"></param>
    /// <returns type=3D"Type"></returns>
    var e =3D 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 =3D eval(typeName);
    }
    catch(e) {
        throw Error.argument('typeName', Sys.Res.argumentTypeName);
    }
    if (parsedName !=3D=3D this) throw Error.argument('typeName', =
Sys.Res.badTypeName);
        if (window.__registeredTypes[typeName]) throw =
Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, =
typeName));
    this.prototype.constructor =3D this;
    this.__typeName =3D typeName;
    this.__interface =3D true;
    window.__registeredTypes[typeName] =3D true;

    return this;
}

Type.prototype.resolveInheritance =3D function Type$resolveInheritance() =
{
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();

    if (this.__basePrototypePending) {
        var baseType =3D this.__baseType;

        baseType.resolveInheritance();

        for (var memberName in baseType.prototype) {
            var memberValue =3D baseType.prototype[memberName];
            if (!this.prototype[memberName]) {
                this.prototype[memberName] =3D memberValue;
            }
        }
        delete this.__basePrototypePending;
    }
}

Type.getRootNamespaces =3D function Type$getRootNamespaces() {
    /// <returns type=3D"Array"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return Array.clone(window.__rootNamespaces);
}

Type.isClass =3D function Type$isClass(type) {
    /// <param name=3D"type" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(type) =3D=3D=3D 'undefined') || (type =3D=3D=3D null)) =
return false;
    return !!type.__class;
}

Type.isInterface =3D function Type$isInterface(type) {
    /// <param name=3D"type" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(type) =3D=3D=3D 'undefined') || (type =3D=3D=3D null)) =
return false;
    return !!type.__interface;
}

Type.isNamespace =3D function Type$isNamespace(object) {
    /// <param name=3D"object" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "object", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(object) =3D=3D=3D 'undefined') || (object =3D=3D=3D =
null)) return false;
    return !!object.__namespace;
}

Type.parse =3D function Type$parse(typeName, ns) {
    /// <param name=3D"typeName" type=3D"String" =
mayBeNull=3D"true"></param>
    /// <param name=3D"ns" optional=3D"true" mayBeNull=3D"true"></param>
    /// <returns type=3D"Type" mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "typeName", type: String, mayBeNull: true},
        {name: "ns", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var fn;
    if (ns) {
        if (!window.__classes) return null;
        fn =3D window.__classes[ns.getName().toUpperCase() + '.' + =
typeName.toUpperCase()];
        return fn || null;
    }
    if (!typeName) return null;
    if (!Type.__htClasses) {
        Type.__htClasses =3D {};
    }
    fn =3D Type.__htClasses[typeName];
    if (!fn) {
        fn =3D eval(typeName);
        if (typeof(fn) !=3D=3D 'function') throw =
Error.argument('typeName', Sys.Res.notATypeName);
        Type.__htClasses[typeName] =3D fn;
    }
    return fn;
}

Type.registerNamespace =3D function =
Type$registerNamespace(namespacePath) {
    /// <param name=3D"namespacePath" type=3D"String"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "namespacePath", type: String}
    ]);
    if (e) throw e;

    if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) =
throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
    var rootObject =3D window;
    var namespaceParts =3D namespacePath.split('.');

    for (var i =3D 0; i < namespaceParts.length; i++) {
        var currentPart =3D namespaceParts[i];
        var ns =3D rootObject[currentPart];
        if (ns && !ns.__namespace) {
            throw =
Error.invalidOperation(String.format(Sys.Res.namespaceContainsObject, =
namespaceParts.splice(0, i + 1).join('.')));
        }
        if (!ns) {
            ns =3D rootObject[currentPart] =3D {};
            if (i =3D=3D=3D 0) {
                window.__rootNamespaces[window.__rootNamespaces.length] =
=3D ns;
            }
            ns.__namespace =3D true;
            ns.__typeName =3D namespaceParts.slice(0, i + 1).join('.');
            var parsedName;
            try {
                parsedName =3D eval(ns.__typeName);
            }
            catch(e) {
                parsedName =3D null;
            }
            if (parsedName !=3D=3D ns) {
                delete rootObject[currentPart];
                throw Error.argument('namespacePath', =
Sys.Res.invalidNameSpace);
            }
            ns.getName =3D function ns$getName() {return =
this.__typeName;}
        }
        rootObject =3D ns;
    }
}
Object.__typeName =3D 'Object';
Object.__class =3D true;

Object.getType =3D function Object$getType(instance) {
    /// <param name=3D"instance"></param>
    /// <returns type=3D"Type"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance"}
    ]);
    if (e) throw e;

    var ctor =3D instance.constructor;
    if (!ctor || (typeof(ctor) !=3D=3D "function") || !ctor.__typeName =
|| (ctor.__typeName =3D=3D=3D 'Object')) {
        return Object;
    }
    return ctor;
}

Object.getTypeName =3D function Object$getTypeName(instance) {
    /// <param name=3D"instance"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance"}
    ]);
    if (e) throw e;

    return Object.getType(instance).getName();
}
Boolean.__typeName =3D 'Boolean';
Boolean.__class =3D true;

Boolean.parse =3D function Boolean$parse(value) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String}
    ]);
    if (e) throw e;

    var v =3D value.trim().toLowerCase();
    if (v =3D=3D=3D 'false') return false;
    if (v =3D=3D=3D 'true') return true;
    throw Error.argumentOutOfRange('value', value, =
Sys.Res.boolTrueOrFalse);
}
Date.__typeName =3D 'Date';
Date.__class =3D true;

Date._appendPreOrPostMatch =3D function =
Date$_appendPreOrPostMatch(preMatch, strBuilder) {
                var quoteCount =3D 0;
    var escaped =3D false;
    for (var i =3D 0, il =3D preMatch.length; i < il; i++) {
        var c =3D preMatch.charAt(i);
        switch (c) {
        case '\'':
            if (escaped) strBuilder.append("'");
            else quoteCount++;
            escaped =3D false;
            break;
        case '\\':
            if (escaped) strBuilder.append("\\");
            escaped =3D !escaped;
            break;
        default:
            strBuilder.append(c);
            escaped =3D false;
            break;
        }
    }
    return quoteCount;
}

Date._expandFormat =3D function Date$_expandFormat(dtf, format) {
        if (!format) {
        format =3D "F";
    }
    if (format.length =3D=3D=3D 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.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);
        }
    }
    return format;
}

Date._expandYear =3D function Date$_expandYear(dtf, year) {
        if (year < 100) {
        var curr =3D new Date().getFullYear();
        year +=3D curr - (curr % 100);
        if (year > dtf.Calendar.TwoDigitYearMax) {
            return year - 100;
        }
    }
    return year;
}

Date._getParseRegExp =3D function Date$_getParseRegExp(dtf, format) {
                if (!dtf._parseRegExp) {
        dtf._parseRegExp =3D {};
    }
    else if (dtf._parseRegExp[format]) {
        return dtf._parseRegExp[format];
    }

        var expFormat =3D Date._expandFormat(dtf, format);
    expFormat =3D expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, =
"\\\\$1");

    var regexp =3D new Sys.StringBuilder("^");
    var groups =3D [];
    var index =3D 0;
    var quoteCount =3D 0;
    var tokenRegExp =3D Date._getTokenRegExp();
    var match;

        while ((match =3D tokenRegExp.exec(expFormat)) !=3D=3D null) {
        var preMatch =3D expFormat.slice(index, match.index);
        index =3D tokenRegExp.lastIndex;

                quoteCount +=3D Date._appendPreOrPostMatch(preMatch, =
regexp);
        if ((quoteCount%2) =3D=3D=3D 1) {
            regexp.append(match[0]);
            continue;
        }

                switch (match[0]) {
            case 'dddd': case 'ddd':
            case 'MMMM': case 'MMM':
                regexp.append("(\\D+)");
                break;
            case 'tt': case 't':
                regexp.append("(\\D*)");
                break;
            case 'yyyy':
                regexp.append("(\\d{4})");
                break;
            case 'fff':
                regexp.append("(\\d{3})");
                break;
            case 'ff':
                regexp.append("(\\d{2})");
                break;
            case 'f':
                regexp.append("(\\d)");
                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':
                regexp.append("(\\d\\d?)");
                break;
            case 'zzz':
                regexp.append("([+-]?\\d\\d?:\\d{2})");
                break;
            case 'zz': case 'z':
                regexp.append("([+-]?\\d\\d?)");
                break;
        }
        Array.add(groups, match[0]);
    }
    Date._appendPreOrPostMatch(expFormat.slice(index), regexp);
    regexp.append("$");
        var regexpStr =3D regexp.toString().replace(/\s+/g, "\\s+");
    var parseRegExp =3D {'regExp': regexpStr, 'groups': groups};
        dtf._parseRegExp[format] =3D parseRegExp;
    return parseRegExp;
}

Date._getTokenRegExp =3D 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/g;
}

Date.parseLocale =3D function Date$parseLocale(value, formats) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <param name=3D"formats" parameterArray=3D"true" =
optional=3D"true" mayBeNull=3D"true"></param>
    /// <returns type=3D"Date"></returns>
    var e =3D 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);
}

Date.parseInvariant =3D function Date$parseInvariant(value, formats) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <param name=3D"formats" parameterArray=3D"true" =
optional=3D"true" mayBeNull=3D"true"></param>
    /// <returns type=3D"Date"></returns>
    var e =3D 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);
}

Date._parse =3D function Date$_parse(value, cultureInfo, args) {
            var custom =3D false;
    for (var i =3D 1, il =3D args.length; i < il; i++) {
        var format =3D args[i];
        if (format) {
            custom =3D true;
            var date =3D Date._parseExact(value, format, cultureInfo);
            if (date) return date;
        }
    }
        if (! custom) {
        var formats =3D cultureInfo._getDateTimeFormats();
        for (var i =3D 0, il =3D formats.length; i < il; i++) {
            var date =3D Date._parseExact(value, formats[i], =
cultureInfo);
            if (date) return date;
        }
    }
    return null;
}

Date._parseExact =3D function Date$_parseExact(value, format, =
cultureInfo) {
            value =3D value.trim();
    var dtf =3D cultureInfo.dateTimeFormat;

            var parseInfo =3D Date._getParseRegExp(dtf, format);
    var match =3D new RegExp(parseInfo.regExp).exec(value);
        if (match !=3D=3D null) {
        var groups =3D parseInfo.groups;
        var year =3D null, month =3D null, date =3D null, weekDay =3D =
null;
        var hour =3D 0, min =3D 0, sec =3D 0, msec =3D 0, tzMinOffset =
=3D null;
        var pmHour =3D false;
                for (var j =3D 0, jl =3D groups.length; j < jl; j++) {
            var matchGroup =3D match[j+1];
            if (matchGroup) {
                switch (groups[j]) {
                    case 'dd': case 'd':
                                                date =3D =
Date._parseInt(matchGroup);
                                                if ((date < 1) || (date =
> 31)) return null;
                        break;
                    case 'MMMM':
                                                month =3D =
cultureInfo._getMonthIndex(matchGroup);
                        if ((month < 0) || (month > 11)) return null;
                        break;
                    case 'MMM':
                                                month =3D =
cultureInfo._getAbbrMonthIndex(matchGroup);
                        if ((month < 0) || (month > 11)) return null;
                        break;
                    case 'M': case 'MM':
                                                var month =3D =
Date._parseInt(matchGroup) - 1;
                        if ((month < 0) || (month > 11)) return null;
                        break;
                    case 'y': case 'yy':
                                                year =3D =
Date._expandYear(dtf,Date._parseInt(matchGroup));
                        if ((year < 0) || (year > 9999)) return null;
                        break;
                    case 'yyyy':
                                                year =3D =
Date._parseInt(matchGroup);
                        if ((year < 0) || (year > 9999)) return null;
                        break;
                    case 'h': case 'hh':
                                                hour =3D =
Date._parseInt(matchGroup);
                        if (hour =3D=3D=3D 12) hour =3D 0;
                        if ((hour < 0) || (hour > 11)) return null;
                        break;
                    case 'H': case 'HH':
                                                hour =3D =
Date._parseInt(matchGroup);
                        if ((hour < 0) || (hour > 23)) return null;
                        break;
                    case 'm': case 'mm':
                                                min =3D =
Date._parseInt(matchGroup);
                        if ((min < 0) || (min > 59)) return null;
                        break;
                    case 's': case 'ss':
                                                sec =3D =
Date._parseInt(matchGroup);
                        if ((sec < 0) || (sec > 59)) return null;
                        break;
                    case 'tt': case 't':
                                                var upperToken =3D =
matchGroup.toUpperCase();
                        pmHour =3D (upperToken =3D=3D=3D =
dtf.PMDesignator.toUpperCase());
                        if (!pmHour && (upperToken !=3D=3D =
dtf.AMDesignator.toUpperCase())) return null;
                        break;
                    case 'f':
                                                msec =3D =
Date._parseInt(matchGroup) * 100;
                        if ((msec < 0) || (msec > 999)) return null;
                        break;
                    case 'ff':
                                                msec =3D =
Date._parseInt(matchGroup) * 10;
                        if ((msec < 0) || (msec > 999)) return null;
                        break;
                    case 'fff':
                                                msec =3D =
Date._parseInt(matchGroup);
                        if ((msec < 0) || (msec > 999)) return null;
                        break;
                    case 'dddd':
                                                weekDay =3D =
cultureInfo._getDayIndex(matchGroup);
                        if ((weekDay < 0) || (weekDay > 6)) return null;
                        break;
                    case 'ddd':
                                                weekDay =3D =
cultureInfo._getAbbrDayIndex(matchGroup);
                        if ((weekDay < 0) || (weekDay > 6)) return null;
                        break;
                    case 'zzz':
                                                var offsets =3D =
matchGroup.split(/:/);
                        if (offsets.length !=3D=3D 2) return null;
                        var hourOffset =3D Date._parseInt(offsets[0]);
                        if ((hourOffset < -12) || (hourOffset > 13)) =
return null;
                        var minOffset =3D Date._parseInt(offsets[1]);
                        if ((minOffset < 0) || (minOffset > 59)) return =
null;
                        tzMinOffset =3D (hourOffset * 60) + =
(matchGroup.startsWith('-')? -minOffset : minOffset);
                        break;
                    case 'z': case 'zz':
                                                var hourOffset =3D =
Date._parseInt(matchGroup);
                        if ((hourOffset < -12) || (hourOffset > 13)) =
return null;
                        tzMinOffset =3D hourOffset * 60;
                        break;
                }
            }
        }
        var result =3D new Date();
        if (year =3D=3D=3D null) {
            year =3D result.getFullYear();
        }
        if (month =3D=3D=3D null) {
            month =3D result.getMonth();
        }
        if (date =3D=3D=3D null) {
            date =3D result.getDate();
        }
                result.setFullYear(year, month, date);
                if (result.getDate() !=3D=3D date) return null;
                if ((weekDay !=3D=3D null) && (result.getDay() !=3D=3D =
weekDay)) {
            return null;
        }
                if (pmHour && (hour < 12)) {
            hour +=3D 12;
        }
        result.setHours(hour, min, sec, msec);
        if (tzMinOffset !=3D=3D null) {
                        var adjustedMin =3D result.getMinutes() - =
(tzMinOffset + result.getTimezoneOffset());
                                                =
result.setHours(result.getHours() + parseInt(adjustedMin/60), =
adjustedMin%60);
        }
        return result;
    }
}

Date._parseInt =3D function Date$_parseInt(value) {
        return parseInt(value.replace(/^[\s0]+(\d+)$/,"$1"));
}

Date.prototype.format =3D function Date$format(format) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;

    return this._toFormattedString(format, =
Sys.CultureInfo.InvariantCulture);
}

Date.prototype.localeFormat =3D function Date$localeFormat(format) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;

    return this._toFormattedString(format, =
Sys.CultureInfo.CurrentCulture);
}

Date.prototype._toFormattedString =3D function =
Date$_toFormattedString(format, cultureInfo) {
    if (!format || (format.length =3D=3D=3D 0) || (format =3D=3D=3D =
'i')) {
        if (cultureInfo && (cultureInfo.name.length > 0)) {
            return this.toLocaleString();
        }
        else {
            return this.toString();
        }
    }

    var dtf =3D cultureInfo.dateTimeFormat;
    format =3D Date._expandFormat(dtf, format);

        var ret =3D new Sys.StringBuilder();
    var hour;

    function addLeadingZero(num) {
        if (num < 10) {
            return '0' + num;
        }
        return num.toString();
    }

    function addLeadingZeros(num) {
        if (num < 10) {
            return '00' + num;
        }
        if (num < 100) {
            return '0' + num;
        }
        return num.toString();
    }

    var quoteCount =3D 0;
    var tokenRegExp =3D Date._getTokenRegExp();
    for (;;) {

                var index =3D tokenRegExp.lastIndex;

                var ar =3D tokenRegExp.exec(format);

                var preMatch =3D format.slice(index, ar ? ar.index : =
format.length);
        quoteCount +=3D Date._appendPreOrPostMatch(preMatch, ret);

        if (!ar) break;

                if ((quoteCount%2) =3D=3D=3D 1) {
            ret.append(ar[0]);
            continue;
        }

        switch (ar[0]) {
        case "dddd":
                        ret.append(dtf.DayNames[this.getDay()]);
            break;
        case "ddd":
                        =
ret.append(dtf.AbbreviatedDayNames[this.getDay()]);
            break;
        case "dd":
                        ret.append(addLeadingZero(this.getDate()));
            break;
        case "d":
                        ret.append(this.getDate());
            break;
        case "MMMM":
                        ret.append(dtf.MonthNames[this.getMonth()]);
            break;
        case "MMM":
                        =
ret.append(dtf.AbbreviatedMonthNames[this.getMonth()]);
            break;
        case "MM":
                        ret.append(addLeadingZero(this.getMonth() + 1));
            break;
        case "M":
                        ret.append(this.getMonth() + 1);
            break;
        case "yyyy":
                        ret.append(this.getFullYear());
            break;
        case "yy":
                        ret.append(addLeadingZero(this.getFullYear() % =
100));
            break;
        case "y":
                        ret.append(this.getFullYear() % 100);
            break;
        case "hh":
                        hour =3D this.getHours() % 12;
            if (hour =3D=3D=3D 0) hour =3D 12;
            ret.append(addLeadingZero(hour));
            break;
        case "h":
                        hour =3D this.getHours() % 12;
            if (hour =3D=3D=3D 0) hour =3D 12;
            ret.append(hour);
            break;
        case "HH":
                        ret.append(addLeadingZero(this.getHours()));
            break;
        case "H":
                        ret.append(this.getHours());
            break;
        case "mm":
                        ret.append(addLeadingZero(this.getMinutes()));
            break;
        case "m":
                        ret.append(this.getMinutes());
            break;
        case "ss":
                        ret.append(addLeadingZero(this.getSeconds()));
            break;
        case "s":
                        ret.append(this.getSeconds());
            break;
        case "tt":
                        ret.append((this.getHours() < 12) ? =
dtf.AMDesignator : dtf.PMDesignator);
            break;
        case "t":
                        ret.append(((this.getHours() < 12) ? =
dtf.AMDesignator : dtf.PMDesignator).charAt(0));
            break;
        case "f":
                        =
ret.append(addLeadingZeros(this.getMilliseconds()).charAt(0));
            break;
        case "ff":
                        =
ret.append(addLeadingZeros(this.getMilliseconds()).substr(0, 2));
            break;
        case "fff":
                        =
ret.append(addLeadingZeros(this.getMilliseconds()));
            break;
        case "z":
                        hour =3D this.getTimezoneOffset() / 60;
            ret.append(((hour >=3D 0) ? '+' : '-') + =
Math.floor(Math.abs(hour)));
            break;
        case "zz":
                        hour =3D this.getTimezoneOffset() / 60;
            ret.append(((hour >=3D 0) ? '+' : '-') + =
addLeadingZero(Math.floor(Math.abs(hour))));
            break;
        case "zzz":
                        hour =3D this.getTimezoneOffset() / 60;
            ret.append(((hour >=3D 0) ? '+' : '-') + =
addLeadingZero(Math.floor(Math.abs(hour))) +
                dtf.TimeSeparator + =
addLeadingZero(Math.abs(this.getTimezoneOffset() % 60)));
            break;
        }
    }
    return ret.toString();
}
Number.__typeName =3D 'Number';
Number.__class =3D true;

Number.parseLocale =3D function Number$parseLocale(value) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <returns type=3D"Number"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String}
    ]);
    if (e) throw e;

    return Number._parse(value, Sys.CultureInfo.CurrentCulture);
}
Number.parseInvariant =3D function Number$parseInvariant(value) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <returns type=3D"Number"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String}
    ]);
    if (e) throw e;

    return Number._parse(value, Sys.CultureInfo.InvariantCulture);
}
Number._parse =3D function Number$_parse(value, cultureInfo) {
            var valueStr =3D value.trim();
    if (valueStr.match(/infinity/i) !=3D=3D null) {
        return parseFloat(valueStr);
    }
    if (valueStr.match(/^0x[a-f0-9]+$/i) !=3D=3D null) {
        return parseInt(valueStr);
    }
    var numFormat =3D cultureInfo.numberFormat;
    var decSeparator =3D numFormat.NumberDecimalSeparator;
    var grpSeparator =3D numFormat.NumberGroupSeparator;

            var numberFormatRegex =3D new RegExp("^[+-]?[\\d\\" + =
grpSeparator + "]*\\" + decSeparator + "?\\d*([eE][+-]?\\d+)?$");
    if (!valueStr.match(numberFormatRegex)) {
        return Number.NaN;
    }

        valueStr =3D valueStr.split(grpSeparator).join("");

        valueStr =3D valueStr.replace(decSeparator, ".");

    return parseFloat(valueStr);
}

Number.prototype.format =3D function Number$format(format) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;

    return this._toFormattedString(format, =
Sys.CultureInfo.InvariantCulture);
}
Number.prototype.localeFormat =3D function Number$localeFormat(format) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;

    return this._toFormattedString(format, =
Sys.CultureInfo.CurrentCulture);
}
Number.prototype._toFormattedString =3D function =
Number$_toFormattedString(format, cultureInfo) {
    if (!format || (format.length =3D=3D=3D 0) || (format =3D=3D=3D =
'i')) {
        if (cultureInfo && (cultureInfo.name.length > 0)) {
            return this.toLocaleString();
        }
        else {
            return this.toString();
        }
    }

        var _percentPositivePattern =3D ["n %", "n%", "%n" ];
    var _percentNegativePattern =3D ["-n %", "-n%", "-%n"];
    var _numberNegativePattern =3D ["(n)","-n","- n","n-","n -"];
    var _currencyPositivePattern =3D ["$n","n$","$ n","n $"];
    var _currencyNegativePattern =3D =
["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n =
$-","$ n-","$ -n","n- $","($ n)","(n $)"];

        function expandNumber(number, precision, groupSizes, sep, =
decimalChar) {
       =20
        var curSize =3D groupSizes[0];
        var curGroupIndex =3D 1;

                var numberString =3D number.toString();
        var right =3D "";
        var exponent =3D "";
                var decimalSplit =3D numberString.split('.');
        if (decimalSplit.length > 1) {
            numberString =3D decimalSplit[0];
            right =3D decimalSplit[1];
                        var exponentSplit =3D right.split(/e/i);
            if (exponentSplit.length > 1) {
                right =3D exponentSplit[0];
                exponent =3D "e" + exponentSplit[1];
            }
        }

                if (precision > 0) {
                        var rightDifference =3D right.length - =
precision;
            if (rightDifference > 0) {
                right =3D right.slice(0, precision);
            } else if (rightDifference < 0) {
                for (var i=3D0; i<Math.abs(rightDifference); i++) {
                    right +=3D '0';
                }
            }

                        right =3D decimalChar + right;
        }
        else {             right =3D "";
        }
        right +=3D exponent;

        var stringIndex =3D numberString.length-1;
        var ret =3D "";
        while (stringIndex >=3D 0) {

                        if (curSize =3D=3D=3D 0 || curSize > =
stringIndex) {
                if (ret.length > 0)
                    return numberString.slice(0, stringIndex + 1) + sep =
+ ret + right;
                else
                    return numberString.slice(0, stringIndex + 1) + =
right;
            }

            if (ret.length > 0)
                ret =3D numberString.slice(stringIndex - curSize + 1, =
stringIndex+1) + sep + ret;
            else
                ret =3D numberString.slice(stringIndex - curSize + 1, =
stringIndex+1);

            stringIndex -=3D curSize;

            if (curGroupIndex < groupSizes.length) {
                curSize =3D groupSizes[curGroupIndex];
                curGroupIndex++;
            }
        }
        return numberString.slice(0, stringIndex + 1) + sep + ret + =
right;
    }
    var nf =3D cultureInfo.numberFormat;

        var number =3D Math.abs(this);

        if (!format)
        format =3D "D";

    var precision =3D -1;
    if (format.length > 1) precision =3D parseInt(format.slice(1));

    var pattern;
    switch (format.charAt(0)) {
    case "d":
    case "D":
        pattern =3D 'n';

                if (precision !=3D=3D -1) {
            var numberStr =3D ""+number;
            var zerosToAdd =3D precision - numberStr.length;
            if (zerosToAdd > 0) {
                for (var i=3D0; i<zerosToAdd; i++) {
                    numberStr =3D '0'+numberStr;
                }
            }
            number =3D numberStr;
        }

                if (this < 0) number =3D -number;
        break;
    case "c":
    case "C":
        if (this < 0) pattern =3D =
_currencyNegativePattern[nf.CurrencyNegativePattern];
        else pattern =3D =
_currencyPositivePattern[nf.CurrencyPositivePattern];
        if (precision =3D=3D=3D -1) precision =3D =
nf.CurrencyDecimalDigits;
        number =3D expandNumber(Math.abs(this), precision, =
nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, =
nf.CurrencyDecimalSeparator);
        break;
    case "n":
    case "N":
        if (this < 0) pattern =3D =
_numberNegativePattern[nf.NumberNegativePattern];
        else pattern =3D 'n';
        if (precision =3D=3D=3D -1) precision =3D =
nf.NumberDecimalDigits;
        number =3D expandNumber(Math.abs(this), precision, =
nf.NumberGroupSizes, nf.NumberGroupSeparator, =
nf.NumberDecimalSeparator);
        break;
    case "p":
    case "P":
        if (this < 0) pattern =3D =
_percentNegativePattern[nf.PercentNegativePattern];
        else pattern =3D =
_percentPositivePattern[nf.PercentPositivePattern];
        if (precision =3D=3D=3D -1) precision =3D =
nf.PercentDecimalDigits;
        number =3D expandNumber(Math.abs(this), precision, =
nf.PercentGroupSizes, nf.PercentGroupSeparator, =
nf.PercentDecimalSeparator);
        break;
    default:
        throw Error.format(Sys.Res.formatBadFormatSpecifier);
    }

    var regex =3D /n|\$|-|%/g;

        var ret =3D "";

    for (;;) {

                var index =3D regex.lastIndex;

                var ar =3D regex.exec(pattern);

                ret +=3D pattern.slice(index, ar ? ar.index : =
pattern.length);

        if (!ar)
            break;

        switch (ar[0]) {
        case "n":
            ret +=3D number;
            break;
        case "$":
            ret +=3D nf.CurrencySymbol;
            break;
        case "-":
            ret +=3D nf.NegativeSign;
            break;
        case "%":
            ret +=3D nf.PercentSymbol;
            break;
        }
    }

    return ret;
}
RegExp.__typeName =3D 'RegExp';
RegExp.__class =3D true;
Array.__typeName =3D 'Array';
Array.__class =3D true;

Array.add =3D Array.enqueue =3D function Array$enqueue(array, item) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"item" mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;


        array[array.length] =3D item;
}

Array.addRange =3D function Array$addRange(array, items) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"items" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "items", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;


        array.push.apply(array, items);
}

Array.clear =3D function Array$clear(array) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;

    array.length =3D 0;
}

Array.clone =3D function Array$clone(array) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <returns type=3D"Array" elementMayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;

    if (array.length =3D=3D=3D 1) {
        return [array[0]];
    }
    else {
                        return Array.apply(null, array);
    }
}

Array.contains =3D function Array$contains(array, item) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"item" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;

    return (Array.indexOf(array, item) >=3D 0);
}

Array.dequeue =3D function Array$dequeue(array) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <returns mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;

    return array.shift();
}

Array.forEach =3D function Array$forEach(array, method, instance) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"method" type=3D"Function"></param>
    /// <param name=3D"instance" optional=3D"true" =
mayBeNull=3D"true"></param>
    var e =3D 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 =3D 0, l =3D array.length; i < l; i++) {
        var elt =3D array[i];
        if (typeof(elt) !=3D=3D 'undefined') method.call(instance, elt, =
i, array);
    }
}

Array.indexOf =3D function Array$indexOf(array, item, start) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"item" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"start" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"Number"></returns>
    var e =3D 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;

    if (typeof(item) =3D=3D=3D "undefined") return -1;
    var length =3D array.length;
    if (length !=3D=3D 0) {
                start =3D start - 0;
                if (isNaN(start)) {
            start =3D 0;
        }
        else {
                                    if (isFinite(start)) {
                                start =3D start - (start % 1);
            }
                        if (start < 0) {
                start =3D Math.max(0, length + start);
            }
        }

                for (var i =3D start; i < length; i++) {
            if ((typeof(array[i]) !=3D=3D "undefined") && (array[i] =
=3D=3D=3D item)) {
                return i;
            }
        }
    }
    return -1;
}

Array.insert =3D function Array$insert(array, index, item) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"index" mayBeNull=3D"true"></param>
    /// <param name=3D"item" mayBeNull=3D"true"></param>
    var e =3D 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);
}

Array.parse =3D function Array$parse(value) {
    /// <param name=3D"value" type=3D"String" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"Array" elementMayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String, mayBeNull: true}
    ]);
    if (e) throw e;

    if (!value) return [];
    var v =3D eval(value);
    if (!Array.isInstanceOfType(v)) throw Error.argument('value', =
Sys.Res.arrayParseBadFormat);
    return v;
}

Array.remove =3D function Array$remove(array, item) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"item" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;

    var index =3D Array.indexOf(array, item);
    if (index >=3D 0) {
        array.splice(index, 1);
    }
    return (index >=3D 0);
}

Array.removeAt =3D function Array$removeAt(array, index) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"index" mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "index", mayBeNull: true}
    ]);
    if (e) throw e;

    array.splice(index, 1);
}
String.__typeName =3D 'String';
String.__class =3D true;

String.prototype.endsWith =3D function String$endsWith(suffix) {
    /// <param name=3D"suffix" type=3D"String"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "suffix", type: String}
    ]);
    if (e) throw e;

    return (this.substr(this.length - suffix.length) =3D=3D=3D suffix);
}

String.prototype.startsWith =3D function String$startsWith(prefix) {
    /// <param name=3D"prefix" type=3D"String"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "prefix", type: String}
    ]);
    if (e) throw e;

    return (this.substr(0, prefix.length) =3D=3D=3D prefix);
}

String.prototype.trim =3D function String$trim() {
    /// <returns type=3D"String"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return this.replace(/^\s+|\s+$/g, '');
}

String.prototype.trimEnd =3D function String$trimEnd() {
    /// <returns type=3D"String"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return this.replace(/\s+$/, '');
}

String.prototype.trimStart =3D function String$trimStart() {
    /// <returns type=3D"String"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return this.replace(/^\s+/, '');
}

String.format =3D function String$format(format, args) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <param name=3D"args" parameterArray=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String},
        {name: "args", mayBeNull: true, parameterArray: true}
    ]);
    if (e) throw e;

    return String._toFormattedString(false, arguments);
}

String.localeFormat =3D function String$localeFormat(format, args) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <param name=3D"args" parameterArray=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String},
        {name: "args", mayBeNull: true, parameterArray: true}
    ]);
    if (e) throw e;

    return String._toFormattedString(true, arguments);
}

String._toFormattedString =3D function =
String$_toFormattedString(useLocale, args) {
    var result =3D '';
    var format =3D args[0];

    for (var i=3D0;;) {
                var open =3D format.indexOf('{', i);
        var close =3D format.indexOf('}', i);
        if ((open < 0) && (close < 0)) {
                        result +=3D format.slice(i);
            break;
        }
        if ((close > 0) && ((close < open) || (open < 0))) {
                        if (format.charAt(close + 1) !=3D=3D '}') {
                throw Error.argument('format', =
Sys.Res.stringFormatBraceMismatch);
            }
            result +=3D format.slice(i, close + 1);
            i =3D close + 2;
            continue;
        }

                result +=3D format.slice(i, open);
        i =3D open + 1;

                if (format.charAt(i) =3D=3D=3D '{') {
            result +=3D '{';
            i++;
            continue;
        }

                if (close < 0) throw Error.argument('format', =
Sys.Res.stringFormatBraceMismatch);

       =20
                var brace =3D format.substring(i, close);
        var colonIndex =3D brace.indexOf(':');
        var argNumber =3D parseInt((colonIndex < 0)? brace : =
brace.substring(0, colonIndex)) + 1;
        if (isNaN(argNumber)) throw Error.argument('format', =
Sys.Res.stringFormatInvalid);
        var argFormat =3D (colonIndex < 0)? '' : =
brace.substring(colonIndex + 1);

        var arg =3D args[argNumber];
        if (typeof(arg) =3D=3D=3D "undefined" || arg =3D=3D=3D null) {
            arg =3D '';
        }

                if (arg.toFormattedString) {
            result +=3D arg.toFormattedString(argFormat);
        }
        else if (useLocale && arg.localeFormat) {
            result +=3D arg.localeFormat(argFormat);
        }
        else if (arg.format) {
            result +=3D arg.format(argFormat);
        }
        else
            result +=3D arg.toString();

        i =3D close + 1;
    }

    return result;
}

Type.registerNamespace('Sys');
Sys.IDisposable =3D function Sys$IDisposable() {
    throw Error.notImplemented();
}

    function Sys$IDisposable$dispose() {
        throw Error.notImplemented();
    }
Sys.IDisposable.prototype =3D {
    dispose: Sys$IDisposable$dispose
}
Sys.IDisposable.registerInterface('Sys.IDisposable');
Sys.StringBuilder =3D function Sys$StringBuilder(initialText) {
    /// <param name=3D"initialText" optional=3D"true" =
mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "initialText", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    this._parts =3D (typeof(initialText) !=3D=3D 'undefined' && =
initialText !=3D=3D null && initialText !=3D=3D '') ?
        [initialText.toString()] : [];
    this._value =3D {};
    this._len =3D 0;
}


    function Sys$StringBuilder$append(text) {
        /// <param name=3D"text" mayBeNull=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "text", mayBeNull: true}
        ]);
        if (e) throw e;

        this._parts[this._parts.length] =3D text;
    }

    function Sys$StringBuilder$appendLine(text) {
        /// <param name=3D"text" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "text", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;

        this._parts[this._parts.length] =3D
            ((typeof(text) =3D=3D=3D 'undefined') || (text =3D=3D=3D =
null) || (text =3D=3D=3D '')) ?
            '\r\n' : text + '\r\n';
    }

    function Sys$StringBuilder$clear() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        this._parts =3D [];
        this._value =3D {};
        this._len =3D 0;
    }

    function Sys$StringBuilder$isEmpty() {
        /// <returns type=3D"Boolean"></returns>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._parts.length =3D=3D=3D 0) return true;
        return this.toString() =3D=3D=3D '';
    }



    function Sys$StringBuilder$toString(separator) {
        /// <param name=3D"separator" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
        /// <returns type=3D"String"></returns>
        var e =3D Function._validateParams(arguments, [
            {name: "separator", type: String, mayBeNull: true, optional: =
true}
        ]);
        if (e) throw e;

        separator =3D separator || '';
        var parts =3D this._parts;
        if (this._len !=3D=3D parts.length) {
            this._value =3D {};
            this._len =3D parts.length;
        }
        var val =3D this._value;
        if (typeof(val[separator]) =3D=3D=3D 'undefined') {
                        if (separator !=3D=3D '') {
                for (var i =3D 0; i < parts.length;) {
                    if ((typeof(parts[i]) =3D=3D=3D 'undefined') || =
(parts[i] =3D=3D=3D '') || (parts[i] =3D=3D=3D null)) {
                        parts.splice(i, 1);
                    }
                    else {
                        i++;
                    }
                }
            }
            val[separator] =3D this._parts.join(separator);
        }
        return val[separator];
    }
Sys.StringBuilder.prototype =3D {
    append: Sys$StringBuilder$append,

    appendLine: Sys$StringBuilder$appendLine,

    clear: Sys$StringBuilder$clear,

    isEmpty: Sys$StringBuilder$isEmpty,

            toString: Sys$StringBuilder$toString
}
Sys.StringBuilder.registerClass('Sys.StringBuilder');
if (!window.XMLHttpRequest) {
    window.XMLHttpRequest =3D function window$XMLHttpRequest() {
        var progIDs =3D [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ];
	   =20
        for (var i =3D 0; i < progIDs.length; i++) {
            try {
                var xmlHttp =3D new ActiveXObject(progIDs[i]);
                return xmlHttp;
            }
            catch (ex) {
            }
        }
	   =20
        return null;
    }
}

Sys.Browser =3D {};

Sys.Browser.InternetExplorer =3D {};
Sys.Browser.Firefox =3D {};
Sys.Browser.Safari =3D {};
Sys.Browser.Opera =3D {};

Sys.Browser.agent =3D null;
Sys.Browser.hasDebuggerStatement =3D false;
Sys.Browser.name =3D navigator.appName;
Sys.Browser.version =3D parseFloat(navigator.appVersion);

if (navigator.userAgent.indexOf(' MSIE ') > -1) {
    Sys.Browser.agent =3D Sys.Browser.InternetExplorer;
    Sys.Browser.version =3D parseFloat(navigator.userAgent.match(/MSIE =
(\d+\.\d+)/)[1]);
    Sys.Browser.hasDebuggerStatement =3D true;
}
else if (navigator.userAgent.indexOf(' Firefox/') > -1) {
    Sys.Browser.agent =3D Sys.Browser.Firefox;
    Sys.Browser.version =3D parseFloat(navigator.userAgent.match(/ =
Firefox\/(\d+\.\d+)/)[1]);
    Sys.Browser.name =3D 'Firefox';
    Sys.Browser.hasDebuggerStatement =3D true;
}
else if (navigator.userAgent.indexOf(' Safari/') > -1) {
    Sys.Browser.agent =3D Sys.Browser.Safari;
    Sys.Browser.version =3D parseFloat(navigator.userAgent.match(/ =
Safari\/(\d+\.\d+)/)[1]);
    Sys.Browser.name =3D 'Safari';
}
else if (navigator.userAgent.indexOf('Opera/') > -1) {
    Sys.Browser.agent =3D Sys.Browser.Opera;
}


Type.registerNamespace('Sys.UI');

Sys._Debug =3D function Sys$_Debug() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
}


    function Sys$_Debug$_appendConsole(text) {
                if ((typeof(Debug) !=3D=3D '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);
        }
    }

    function Sys$_Debug$_appendTrace(text) {
        var traceElement =3D document.getElementById('TraceConsole');
        if (traceElement && (traceElement.tagName.toUpperCase() =
=3D=3D=3D 'TEXTAREA')) {
            traceElement.value +=3D text + '\n';
        }
    }

    function Sys$_Debug$assert(condition, message, displayCaller) {
        /// <param name=3D"condition" type=3D"Boolean"></param>
        /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
        /// <param name=3D"displayCaller" type=3D"Boolean" =
optional=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "condition", type: Boolean},
            {name: "message", type: String, mayBeNull: true, optional: =
true},
            {name: "displayCaller", type: Boolean, optional: true}
        ]);
        if (e) throw e;

        if (!condition) {
            message =3D (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);
            }
        }
    }

    function Sys$_Debug$clearTrace() {
        var traceElement =3D document.getElementById('TraceConsole');
        if (traceElement && (traceElement.tagName.toUpperCase() =
=3D=3D=3D 'TEXTAREA')) {
            traceElement.value =3D '';
        }
    }

    function Sys$_Debug$fail(message) {
        /// <param name=3D"message" type=3D"String" =
mayBeNull=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "message", type: String, mayBeNull: true}
        ]);
        if (e) throw e;

        this._appendConsole(message);

                if (Sys.Browser.hasDebuggerStatement) {
            eval('debugger');
        }
    }

    function Sys$_Debug$trace(text) {
        /// <param name=3D"text"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "text"}
        ]);
        if (e) throw e;

        this._appendConsole(text);
        this._appendTrace(text);
    }

    function Sys$_Debug$traceDump(object, name) {
        /// <param name=3D"object" mayBeNull=3D"true"></param>
        /// <param name=3D"name" type=3D"String" mayBeNull=3D"true" =
optional=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "object", mayBeNull: true},
            {name: "name", type: String, mayBeNull: true, optional: =
true}
        ]);
        if (e) throw e;

        var text =3D this._traceDump(object, name, true);
    }

    function Sys$_Debug$_traceDump(object, name, recursive, =
indentationPadding, loopArray) {
        name =3D name? name : 'traceDump';
        indentationPadding =3D indentationPadding? indentationPadding : =
'';
        if (object =3D=3D=3D null) {
            this.trace(indentationPadding + name + ': null');
            return;
        }
        switch(typeof(object)) {
            case 'undefined':
                this.trace(indentationPadding + name + ': Undefined');
                break;
            case 'number': case 'string': case 'boolean':
                this.trace(indentationPadding + name + ': ' + object);
                break;
            default:
                if (Date.isInstanceOfType(object) || =
RegExp.isInstanceOfType(object)) {
                    this.trace(indentationPadding + name + ': ' + =
object.toString());
                    break;
                }
                if (!loopArray) {
                    loopArray =3D [];
                }
                else if (Array.contains(loopArray, object)) {
                    this.trace(indentationPadding + name + ': ...');
                    return;
                }
                Array.add(loopArray, object);

                                                                if =
((object =3D=3D window) || (object =3D=3D=3D document) ||
                    (window.HTMLElement && (object instanceof =
HTMLElement)) ||
                    (typeof(object.nodeName) =3D=3D=3D 'string')) {
                    var tag =3D object.tagName? object.tagName : =
'DomElement';
                    if (object.id) {
                        tag +=3D ' - ' + object.id;
                    }
                    this.trace(indentationPadding + name + ' {' +  tag + =
'}');
                }
                                else {
                    var typeName =3D Object.getTypeName(object);
                    this.trace(indentationPadding + name + =
(typeof(typeName) =3D=3D=3D 'string' ? ' {' + typeName + '}' : ''));
                    if ((indentationPadding =3D=3D=3D '') || recursive) =
{
                        indentationPadding +=3D "    ";
                        var i, length, properties, p, v;
                        if (Array.isInstanceOfType(object)) {
                            length =3D object.length;
                            for (i =3D 0; i < length; i++) {
                                this._traceDump(object[i], '[' + i + =
']', recursive, indentationPadding, loopArray);
                            }
                        }
                        else {
                            for (p in object) {
                                v =3D object[p];
                                if (!Function.isInstanceOfType(v)) {
                                    this._traceDump(v, p, recursive, =
indentationPadding, loopArray);
                                }
                            }
                        }
                    }
                }
                Array.remove(loopArray, object);
        }
    }
Sys._Debug.prototype =3D {

    _appendConsole: Sys$_Debug$_appendConsole,

    _appendTrace: Sys$_Debug$_appendTrace,

    assert: Sys$_Debug$assert,

    clearTrace: Sys$_Debug$clearTrace,

    fail: Sys$_Debug$fail,

    trace: Sys$_Debug$trace,

    traceDump: Sys$_Debug$traceDump,

    _traceDump: Sys$_Debug$_traceDump
}
Sys._Debug.registerClass('Sys._Debug');

Sys.Debug =3D new Sys._Debug();
    Sys.Debug.isDebug =3D true;
function Sys$Enum$parse(value, ignoreCase) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <param name=3D"ignoreCase" type=3D"Boolean" =
optional=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String},
        {name: "ignoreCase", type: Boolean, optional: true}
    ]);
    if (e) throw e;

    var values, parsed, val;
    if (ignoreCase) {
        values =3D this.__lowerCaseValues;
        if (!values) {
            this.__lowerCaseValues =3D values =3D {};
            var prototype =3D this.prototype;
            for (var name in prototype) {
                values[name.toLowerCase()] =3D prototype[name];
            }
        }
    }
    else {
        values =3D this.prototype;
    }
    if (!this.__flags) {
        val =3D (ignoreCase ? value.toLowerCase() : value);
        parsed =3D values[val.trim()];
        if (typeof(parsed) !=3D=3D 'number') throw =
Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, =
this.__typeName));
        return parsed;
    }
    else {
        var parts =3D (ignoreCase ? value.toLowerCase() : =
value).split(',');
        var v =3D 0;

        for (var i =3D parts.length - 1; i >=3D 0; i--) {
            var part =3D parts[i].trim();
            parsed =3D values[part];
            if (typeof(parsed) !=3D=3D 'number') throw =
Error.argument('value', String.format(Sys.Res.enumInvalidValue, =
value.split(',')[i].trim(), this.__typeName));
            v |=3D parsed;
        }
        return v;
    }
}

function Sys$Enum$toString(value) {
    /// <param name=3D"value" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

            if ((typeof(value) =3D=3D=3D 'undefined') || (value =
=3D=3D=3D null)) return this.__string;
    if ((typeof(value) !=3D 'number') || ((value % 1) !=3D=3D 0)) throw =
Error.argumentType('value', Object.getType(value), this);
    var values =3D this.prototype;
    var i;
    if (!this.__flags || (value =3D=3D=3D 0)) {
        for (i in values) {
            if (values[i] =3D=3D=3D value) {
                return i;
            }
        }
    }
    else {
        var sorted =3D this.__sortedValues;
        if (!sorted) {
            sorted =3D [];
            for (i in values) {
                sorted[sorted.length] =3D {key: i, value: values[i]};
            }
            sorted.sort(function(a, b) {
                return a.value - b.value;
            });
            this.__sortedValues =3D sorted;
        }
        var parts =3D [];
        var v =3D value;
        for (i =3D sorted.length - 1; i >=3D 0; i--) {
            var kvp =3D sorted[i];
            var vali =3D kvp.value;
            if (vali =3D=3D=3D 0) continue;
            if ((vali & value) =3D=3D=3D vali) {
                parts[parts.length] =3D kvp.key;
                v -=3D vali;
                if (v =3D=3D=3D 0) break;
            }
        }
        if (parts.length && v =3D=3D=3D 0) return =
parts.reverse().join(', ');
    }
    throw Error.argumentOutOfRange('value', value, =
String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
}

Type.prototype.registerEnum =3D function Type$registerEnum(name, flags) =
{
    /// <param name=3D"name" type=3D"String"></param>
    /// <param name=3D"flags" type=3D"Boolean" =
optional=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "name", type: String},
        {name: "flags", type: Boolean, optional: true}
    ]);
    if (e) throw e;

    if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw =
Error.argument('name', Sys.Res.notATypeName);
        var parsedName;
    try {
        parsedName =3D eval(name);
    }
    catch(e) {
        throw Error.argument('name', Sys.Res.argumentTypeName);
    }
    if (parsedName !=3D=3D this) throw Error.argument('name', =
Sys.Res.badTypeName);
    if (window.__registeredTypes[name]) throw =
Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, =
name));
    for (var i in this.prototype) {
        var val =3D this.prototype[i];
        if (!Type.__identifierRegExp.test(i)) throw =
Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, i));
        if (typeof(val) !=3D=3D 'number' || (val % 1) !=3D=3D 0) throw =
Error.invalidOperation(Sys.Res.enumValueNotInteger);
        if (typeof(this[i]) !=3D=3D 'undefined') throw =
Error.invalidOperation(String.format(Sys.Res.enumReservedName, i));
    }
    for (var i in this.prototype) {
        this[i] =3D this.prototype[i];
    }
    this.__typeName =3D name;
    this.parse =3D Sys$Enum$parse;
    this.__string =3D this.toString();
    this.toString =3D Sys$Enum$toString;
    this.__flags =3D flags;
    this.__enum =3D true;
    window.__registeredTypes[name] =3D true;
}

Type.isEnum =3D function Type$isEnum(type) {
    /// <param name=3D"type" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(type) =3D=3D=3D 'undefined') || (type =3D=3D=3D null)) =
return false;
    return !!type.__enum;
}

Type.isFlags =3D function Type$isFlags(type) {
    /// <param name=3D"type" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(type) =3D=3D=3D 'undefined') || (type =3D=3D=3D null)) =
return false;
    return !!type.__flags;
}
Sys.EventHandlerList =3D function Sys$EventHandlerList() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    this._list =3D {};
}


    function Sys$EventHandlerList$addHandler(id, handler) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <param name=3D"handler" type=3D"Function"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;

        Array.add(this._getEvent(id, true), handler);
    }
    function Sys$EventHandlerList$removeHandler(id, handler) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <param name=3D"handler" type=3D"Function"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;

        var evt =3D this._getEvent(id);
        if (!evt) return;
        Array.remove(evt, handler);
    }
    function Sys$EventHandlerList$getHandler(id) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <returns type=3D"Function"></returns>
        var e =3D Function._validateParams(arguments, [
            {name: "id", type: String}
        ]);
        if (e) throw e;

        var evt =3D this._getEvent(id);
        if (!evt || (evt.length =3D=3D=3D 0)) return null;
        evt =3D Array.clone(evt);
        if (!evt._handler) {
            evt._handler =3D function(source, args) {
                for (var i =3D 0, l =3D evt.length; i < l; i++) {
                    evt[i](source, args);
                }
            };
        }
        return evt._handler;
    }

    function Sys$EventHandlerList$_getEvent(id, create) {
        if (!this._list[id]) {
            if (!create) return null;
            this._list[id] =3D [];
        }
        return this._list[id];
    }
Sys.EventHandlerList.prototype =3D {
    addHandler: Sys$EventHandlerList$addHandler,
    removeHandler: Sys$EventHandlerList$removeHandler,
    getHandler: Sys$EventHandlerList$getHandler,

    _getEvent: Sys$EventHandlerList$_getEvent
}
Sys.EventHandlerList.registerClass('Sys.EventHandlerList');
Sys.EventArgs =3D function Sys$EventArgs() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
}
Sys.EventArgs.registerClass('Sys.EventArgs');

Sys.EventArgs.Empty =3D new Sys.EventArgs();
Sys.CancelEventArgs =3D function Sys$CancelEventArgs() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    Sys.CancelEventArgs.initializeBase(this);

    this._cancel =3D false;
}


    function Sys$CancelEventArgs$get_cancel() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._cancel;
    }
    function Sys$CancelEventArgs$set_cancel(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Boolean}]);
        if (e) throw e;

        this._cancel =3D value;
    }
Sys.CancelEventArgs.prototype =3D {
    get_cancel: Sys$CancelEventArgs$get_cancel,
    set_cancel: Sys$CancelEventArgs$set_cancel
}

Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs);
Sys.INotifyPropertyChange =3D function Sys$INotifyPropertyChange() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}

    function Sys$INotifyPropertyChange$add_propertyChanged(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$INotifyPropertyChange$remove_propertyChanged(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        throw Error.notImplemented();
    }
Sys.INotifyPropertyChange.prototype =3D {
    add_propertyChanged: Sys$INotifyPropertyChange$add_propertyChanged,
    remove_propertyChanged: =
Sys$INotifyPropertyChange$remove_propertyChanged
}
Sys.INotifyPropertyChange.registerInterface('Sys.INotifyPropertyChange');=

Sys.PropertyChangedEventArgs =3D function =
Sys$PropertyChangedEventArgs(propertyName) {
    /// <param name=3D"propertyName" type=3D"String"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "propertyName", type: String}
    ]);
    if (e) throw e;

    Sys.PropertyChangedEventArgs.initializeBase(this);
    this._propertyName =3D propertyName;
}
=20
    function Sys$PropertyChangedEventArgs$get_propertyName() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._propertyName;
    }
Sys.PropertyChangedEventArgs.prototype =3D {
    get_propertyName: Sys$PropertyChangedEventArgs$get_propertyName
}
Sys.PropertyChangedEventArgs.registerClass('Sys.PropertyChangedEventArgs'=
, Sys.EventArgs);
Sys.INotifyDisposing =3D function Sys$INotifyDisposing() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}

    function Sys$INotifyDisposing$add_disposing(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$INotifyDisposing$remove_disposing(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        throw Error.notImplemented();
    }
Sys.INotifyDisposing.prototype =3D {
    add_disposing: Sys$INotifyDisposing$add_disposing,
    remove_disposing: Sys$INotifyDisposing$remove_disposing
}
Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");
Sys.Component =3D function Sys$Component() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    if (Sys.Application) Sys.Application.registerDisposableObject(this);
}





    function Sys$Component$get_events() {
        /// <value type=3D"Sys.EventHandlerList"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (!this._events) {
            this._events =3D new Sys.EventHandlerList();
        }
        return this._events;
    }
    function Sys$Component$get_id() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._id;
    }
    function Sys$Component$set_id(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        if (this._idSet) throw =
Error.invalidOperation(Sys.Res.componentCantSetIdTwice);
        this._idSet =3D true;
        var oldId =3D this.get_id();
        if (oldId && Sys.Application.findComponent(oldId)) throw =
Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp);
        this._id =3D value;
    }
    function Sys$Component$get_isInitialized() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._initialized;
    }
    function Sys$Component$get_isUpdating() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._updating;
    }
    function Sys$Component$add_disposing(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().addHandler("disposing", handler);
    }
    function Sys$Component$remove_disposing(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("disposing", handler);
    }
    function Sys$Component$add_propertyChanged(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().addHandler("propertyChanged", handler);
    }
    function Sys$Component$remove_propertyChanged(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("propertyChanged", handler);
    }
    function Sys$Component$beginUpdate() {
        this._updating =3D true;
    }
    function Sys$Component$dispose() {
        if (this._events) {
            var handler =3D this._events.getHandler("disposing");
            if (handler) {
                handler(this, Sys.EventArgs.Empty);
            }
        }
        delete this._events;
        Sys.Application.unregisterDisposableObject(this);
        Sys.Application.removeComponent(this);
    }
    function Sys$Component$endUpdate() {
        this._updating =3D false;
        if (!this._initialized) this.initialize();
        this.updated();
    }
    function Sys$Component$initialize() {
        this._initialized =3D true;
    }
    function Sys$Component$raisePropertyChanged(propertyName) {
        /// <param name=3D"propertyName" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "propertyName", type: String}
        ]);
        if (e) throw e;

        if (!this._events) return;
        var handler =3D this._events.getHandler("propertyChanged");
        if (handler) {
            handler(this, new =
Sys.PropertyChangedEventArgs(propertyName));
        }
    }
    function Sys$Component$updated() {
    }
Sys.Component.prototype =3D {
    _id: null,
    _idSet: false,
    _initialized: false,
    _updating: false,
    get_events: Sys$Component$get_events,
    get_id: Sys$Component$get_id,
    set_id: Sys$Component$set_id,
    get_isInitialized: Sys$Component$get_isInitialized,
    get_isUpdating: Sys$Component$get_isUpdating,
    add_disposing: Sys$Component$add_disposing,
    remove_disposing: Sys$Component$remove_disposing,
    add_propertyChanged: Sys$Component$add_propertyChanged,
    remove_propertyChanged: Sys$Component$remove_propertyChanged,
    beginUpdate: Sys$Component$beginUpdate,
    dispose: Sys$Component$dispose,
    endUpdate: Sys$Component$endUpdate,
    initialize: Sys$Component$initialize,
    raisePropertyChanged: Sys$Component$raisePropertyChanged,
    updated: Sys$Component$updated
}
Sys.Component.registerClass('Sys.Component', null, Sys.IDisposable, =
Sys.INotifyPropertyChange, Sys.INotifyDisposing);

function Sys$Component$_setProperties(target, properties) {
    /// <param name=3D"target"></param>
    /// <param name=3D"properties"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "target"},
        {name: "properties"}
    ]);
    if (e) throw e;

    var current;
    var targetType =3D Object.getType(target);
    var isObject =3D (targetType =3D=3D=3D Object) || (targetType =
=3D=3D=3D Sys.UI.DomElement);
    var isComponent =3D Sys.Component.isInstanceOfType(target) && =
!target.get_isUpdating();
    if (isComponent) target.beginUpdate();
    for (var name in properties) {
        var val =3D properties[name];
        var getter =3D isObject ? null : target["get_" + name];
        if (isObject || typeof(getter) !=3D=3D 'function') {
                        var targetVal =3D target[name];
            if (!isObject && typeof(targetVal) =3D=3D=3D 'undefined') =
throw Error.invalidOperation(String.format(Sys.Res.propertyUndefined, =
name));
            if (!val || (typeof(val) !=3D=3D 'object') || (isObject && =
!targetVal)) {
                target[name] =3D val;
            }
            else {
                Sys$Component$_setProperties(targetVal, val);
            }
        }
        else {
            var setter =3D target["set_" + name];
            if (typeof(setter) =3D=3D=3D 'function') {
                                setter.apply(target, [val]);
            }
            else if (val instanceof Array) {
                                current =3D getter.apply(target);
                if (!(current instanceof Array)) throw new =
Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name));
                for (var i =3D 0, j =3D current.length, l=3D val.length; =
i < l; i++, j++) {
                    current[j] =3D val[i];
                }
            }
            else if ((typeof(val) =3D=3D=3D 'object') && =
(Object.getType(val) =3D=3D=3D Object)) {
                                current =3D getter.apply(target);
                if ((typeof(current) =3D=3D=3D 'undefined') || (current =
=3D=3D=3D null)) throw new =
Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, =
name));
                Sys$Component$_setProperties(current, val);
            }
            else {
                                throw new =
Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, =
name));
            }
        }
    }
    if (isComponent) target.endUpdate();
}

function Sys$Component$_setReferences(component, references) {
    for (var name in references) {
        var setter =3D component["set_" + name];
        var reference =3D $find(references[name]);
        if (typeof(setter) !=3D=3D 'function') throw new =
Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, =
name));
        if (!reference) throw =
Error.invalidOperation(String.format(Sys.Res.referenceNotFound, =
references[name]));
        setter.apply(component, [reference]);
    }
}

var $create =3D Sys.Component.create =3D function =
Sys$Component$create(type, properties, events, references, element) {
    /// <param name=3D"type" type=3D"Type"></param>
    /// <param name=3D"properties" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"events" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"references" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"element" domElement=3D"true" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"Sys.UI.Component"></returns>
    var e =3D 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.Component)) {
        throw Error.argument('type', =
String.format(Sys.Res.createNotComponent, type.getName()));
    }
    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 =3D (element ? new type(element): new type());
    var app =3D Sys.Application;
    var creatingComponents =3D app.get_isCreatingComponents();

    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]);
        }
    }

    app._createdComponents[app._createdComponents.length] =3D component;
    if (component.get_id()) {
        app.addComponent(component);
    }
    if (creatingComponents) {
        if (references) {
            app._addComponentToSecondPass(component, references);
        }
        else {
            component.endUpdate();
        }
    }
    else {
        if (references) {
            Sys$Component$_setReferences(component, references);
        }
        component.endUpdate();
    }

    return component;
}
Sys.UI.MouseButton =3D function Sys$UI$MouseButton() {
    /// <field name=3D"leftButton" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"middleButton" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"rightButton" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}




Sys.UI.MouseButton.prototype =3D {
    leftButton: 0,
    middleButton: 1,
    rightButton: 2
}
Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");
Sys.UI.Key =3D function Sys$UI$Key() {
    /// <field name=3D"backspace" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"tab" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"enter" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"esc" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"space" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"pageUp" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"pageDown" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"end" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"home" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"left" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"up" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"right" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"down" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"del" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}















Sys.UI.Key.prototype =3D {
    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
}
Sys.UI.Key.registerEnum("Sys.UI.Key");
Sys.UI.DomEvent =3D function Sys$UI$DomEvent(eventObject) {
    /// <param name=3D"eventObject"></param>
    /// <field name=3D"altKey" type=3D"Boolean"></field>
    /// <field name=3D"button" type=3D"Sys.UI.MouseButton"></field>
    /// <field name=3D"charCode" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"clientX" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"clientY" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"ctrlKey" type=3D"Boolean"></field>
    /// <field name=3D"keyCode" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"offsetX" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"offsetY" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"screenX" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"screenY" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"shiftKey" type=3D"Boolean"></field>
    /// <field name=3D"target" domElement=3D"true"></field>
    /// <field name=3D"type" type=3D"String"></field>
    var e =3D Function._validateParams(arguments, [
        {name: "eventObject"}
    ]);
    if (e) throw e;

    var e =3D eventObject;
    this.rawEvent =3D e;
    this.altKey =3D e.altKey;
    if (typeof(e.button) !=3D=3D 'undefined') {
        this.button =3D (typeof(e.which) !=3D=3D 'undefined') ? e.button =
:
            (e.button =3D=3D=3D 4) ? Sys.UI.MouseButton.middleButton :
            (e.button =3D=3D=3D 2) ? Sys.UI.MouseButton.rightButton :
            Sys.UI.MouseButton.leftButton;
    }
    if (e.type =3D=3D=3D 'keypress') {
        this.charCode =3D e.charCode || e.keyCode;
    }
    else if (e.keyCode && (e.keyCode =3D=3D=3D 46)) {
        this.keyCode =3D 127;
    }
    else {
        this.keyCode =3D e.keyCode;
    }
    this.clientX =3D e.clientX;
    this.clientY =3D e.clientY;
    this.ctrlKey =3D e.ctrlKey;
    this.target =3D e.target ? e.target : e.srcElement;
    if (this.target) {
        var loc =3D Sys.UI.DomElement.getLocation(this.target);
        this.offsetX =3D (typeof(e.offsetX) !=3D=3D 'undefined') ? =
e.offsetX : window.pageXOffset + (e.clientX || 0) - loc.x;
        this.offsetY =3D (typeof(e.offsetY) !=3D=3D 'undefined') ? =
e.offsetY : window.pageYOffset + (e.clientY || 0) - loc.y;
    }
    this.screenX =3D e.screenX;
    this.screenY =3D e.screenY;
    this.shiftKey =3D e.shiftKey;
    this.type =3D e.type;
}

    function Sys$UI$DomEvent$preventDefault() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this.rawEvent.preventDefault) {
            this.rawEvent.preventDefault();
        }
        else if (window.event) {
            window.event.returnValue =3D false;
        }
    }
    function Sys$UI$DomEvent$stopPropagation() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this.rawEvent.stopPropagation) {
            this.rawEvent.stopPropagation();
        }
        else if (window.event) {
            window.event.cancelBubble =3D true;
        }
    }
Sys.UI.DomEvent.prototype =3D {
    preventDefault: Sys$UI$DomEvent$preventDefault,
    stopPropagation: Sys$UI$DomEvent$stopPropagation
}
Sys.UI.DomEvent.registerClass('Sys.UI.DomEvent');

var $addHandler =3D Sys.UI.DomEvent.addHandler =3D function =
Sys$UI$DomEvent$addHandler(element, eventName, handler) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"eventName" type=3D"String"></param>
    /// <param name=3D"handler" type=3D"Function"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;

    if (!element._events) {
        element._events =3D {};
    }
    var eventCache =3D element._events[eventName];
    if (!eventCache) {
        element._events[eventName] =3D eventCache =3D [];
    }
    var browserHandler;
    if (element.addEventListener) {
        browserHandler =3D function(e) {
            return handler.call(element, new Sys.UI.DomEvent(e));
        }
        element.addEventListener(eventName, browserHandler, false);
    }
    else if (element.attachEvent) {
        browserHandler =3D function() {
            return handler.call(element, new =
Sys.UI.DomEvent(window.event));
        }
        element.attachEvent('on' + eventName, browserHandler);
    }
    eventCache[eventCache.length] =3D {handler: handler, browserHandler: =
browserHandler};
}

var $addHandlers =3D Sys.UI.DomEvent.addHandlers =3D function =
Sys$UI$DomEvent$addHandlers(element, events, handlerOwner) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"events" type=3D"Object"></param>
    /// <param name=3D"handlerOwner" optional=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "events", type: Object},
        {name: "handlerOwner", optional: true}
    ]);
    if (e) throw e;

    for (var name in events) {
        var handler =3D events[name];
        if (typeof(handler) !=3D=3D 'function') throw =
Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler);
        if (handlerOwner) {
            handler =3D Function.createDelegate(handlerOwner, handler);
        }
        $addHandler(element, name, handler);
    }
}

var $clearHandlers =3D Sys.UI.DomEvent.clearHandlers =3D function =
Sys$UI$DomEvent$clearHandlers(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    if (element._events) {
        var cache =3D element._events;
        for (var name in cache) {
            var handlers =3D cache[name];
            for (var i =3D handlers.length - 1; i >=3D 0; i--) {
                $removeHandler(element, name, handlers[i].handler);
            }
        }
        element._events =3D null;
    }
}

var $removeHandler =3D Sys.UI.DomEvent.removeHandler =3D function =
Sys$UI$DomEvent$removeHandler(element, eventName, handler) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"eventName" type=3D"String"></param>
    /// <param name=3D"handler" type=3D"Function"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;

    var browserHandler =3D null;
    if ((typeof(element._events) !=3D=3D 'object') || (element._events =
=3D=3D null)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
    var cache =3D element._events[eventName];
    if (!(cache instanceof Array)) throw =
Error.invalidOperation(Sys.Res.eventHandlerInvalid);
    var browserHandler =3D null;
    for (var i =3D 0, l =3D cache.length; i < l; i++) {
        if (cache[i].handler =3D=3D=3D handler) {
            browserHandler =3D cache[i].browserHandler;
            break;
        }
    }
    if (typeof(browserHandler) !=3D=3D 'function') throw =
Error.invalidOperation(Sys.Res.eventHandlerInvalid);
    if (element.removeEventListener) {
        element.removeEventListener(eventName, browserHandler, false);
    }
    else if (element.detachEvent) {
        element.detachEvent('on' + eventName, browserHandler);
    }
    cache.splice(i, 1);
}
Sys.IContainer =3D function Sys$IContainer() {
    throw Error.notImplemented();
}

    function Sys$IContainer$addComponent(component) {
        /// <param name=3D"component" type=3D"Sys.Component"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$IContainer$removeComponent(component) {
        /// <param name=3D"component" type=3D"Sys.Component"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$IContainer$findComponent(id) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <returns type=3D"Sys.Component"></returns>
        var e =3D Function._validateParams(arguments, [
            {name: "id", type: String}
        ]);
        if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$IContainer$getComponents() {
        /// <returns type=3D"Array" =
elementType=3D"Sys.Component"></returns>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
Sys.IContainer.prototype =3D {
    addComponent: Sys$IContainer$addComponent,
    removeComponent: Sys$IContainer$removeComponent,
    findComponent: Sys$IContainer$findComponent,
    getComponents: Sys$IContainer$getComponents
}
Sys.IContainer.registerInterface("Sys.IContainer");


Sys._ScriptLoader =3D function Sys$_ScriptLoader() {
    this._scriptsToLoad =3D null;
    this._scriptLoadedDelegate =3D Function.createDelegate(this, =
this._scriptLoadedHandler);
}

    function Sys$_ScriptLoader$dispose() {
        this._stopLoading();
        if(this._events) {
            delete this._events;
        }
        this._scriptLoadedDelegate =3D null;       =20
    }

    function Sys$_ScriptLoader$loadScripts(scriptTimeout, =
allScriptsLoadedCallback, scriptLoadFailedCallback, =
scriptLoadTimeoutCallback) {
        /// <param name=3D"scriptTimeout" type=3D"Number" =
integer=3D"true"></param>
        /// <param name=3D"allScriptsLoadedCallback" type=3D"Function" =
mayBeNull=3D"true"></param>
        /// <param name=3D"scriptLoadFailedCallback" type=3D"Function" =
mayBeNull=3D"true"></param>
        /// <param name=3D"scriptLoadTimeoutCallback" type=3D"Function" =
mayBeNull=3D"true"></param>
        var e =3D 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;

        if(this._loading) {
            throw =
Error.invalidOperation(Sys.Res.scriptLoaderAlreadyLoading);
        }
        this._loading =3D true;
        this._allScriptsLoadedCallback =3D allScriptsLoadedCallback;
        this._scriptLoadFailedCallback =3D scriptLoadFailedCallback;
        this._scriptLoadTimeoutCallback =3D scriptLoadTimeoutCallback;
       =20
        this._loadScriptsInternal();
    }

    function Sys$_ScriptLoader$notifyScriptLoaded() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
       =20
                        if(!this._loading) {
                                    return;
        }

        this._currentTask._notified++;
       =20
        if(Sys.Browser.agent =3D=3D=3D Sys.Browser.Safari) {          =20
            if(this._currentTask._notified =3D=3D=3D 1) {
                                                                         =
                                       =
window.setTimeout(Function.createDelegate(this, function() {
                    =
this._scriptLoadedHandler(this._currentTask.get_scriptElement(), true);
                }), 0);
            }
        }

                            }

    function Sys$_ScriptLoader$queueCustomScriptTag(scriptAttributes) {
        /// <param name=3D"scriptAttributes" =
mayBeNull=3D"false"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "scriptAttributes"}
        ]);
        if (e) throw e;

        if(!this._scriptsToLoad) {
            this._scriptsToLoad =3D [];
        }
        Array.add(this._scriptsToLoad, scriptAttributes);
    }

    function Sys$_ScriptLoader$queueScriptBlock(scriptContent) {
        /// <param name=3D"scriptContent" type=3D"String" =
mayBeNull=3D"false"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "scriptContent", type: String}
        ]);
        if (e) throw e;

        if(!this._scriptsToLoad) {
            this._scriptsToLoad =3D [];
        }
        Array.add(this._scriptsToLoad, {text: scriptContent});
    }

    function Sys$_ScriptLoader$queueScriptReference(scriptUrl) {
        /// <param name=3D"scriptUrl" type=3D"String" =
mayBeNull=3D"false"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "scriptUrl", type: String}
        ]);
        if (e) throw e;

        if(!this._scriptsToLoad) {
            this._scriptsToLoad =3D [];
        }
        Array.add(this._scriptsToLoad, {src: scriptUrl});
    }

    function Sys$_ScriptLoader$_createScriptElement(queuedScript) {
        var scriptElement =3D document.createElement('SCRIPT');

                        scriptElement.type =3D 'text/javascript';

                for (var attr in queuedScript) {
            scriptElement[attr] =3D queuedScript[attr];
        }
       =20
        return scriptElement;
    }

    function Sys$_ScriptLoader$_loadScriptsInternal() {
                if (this._scriptsToLoad && this._scriptsToLoad.length > =
0) {
            var nextScript =3D Array.dequeue(this._scriptsToLoad);
                        var scriptElement =3D =
this._createScriptElement(nextScript);
           =20
            if (scriptElement.text && Sys.Browser.agent =3D=3D=3D =
Sys.Browser.Safari) {
                                scriptElement.innerHTML =3D =
scriptElement.text;
                delete scriptElement.text;
            }           =20

                                                            if =
(typeof(nextScript.src) =3D=3D=3D "string") {
                                this._currentTask =3D new =
Sys._ScriptLoaderTask(scriptElement, this._scriptLoadedDelegate);
                                                                         =
       this._currentTask.execute();
            }
            else {
                                                =
document.getElementsByTagName('HEAD')[0].appendChild(scriptElement);
               =20
                                =
Sys._ScriptLoader._clearScript(scriptElement);

                                                                =
this._loadScriptsInternal();
            }
        }
        else {
                        var callback =3D this._allScriptsLoadedCallback;
            this._stopLoading();
            if(callback) {
                callback(this);
            }
        }
    }

    function Sys$_ScriptLoader$_raiseError(multipleCallbacks) {
                var callback =3D this._scriptLoadFailedCallback;
        var scriptElement =3D this._currentTask.get_scriptElement();
        this._stopLoading();
       =20
        if(callback) {
            callback(this, scriptElement, multipleCallbacks);
        }
        else {
            throw =
Sys._ScriptLoader._errorScriptLoadFailed(scriptElement.src, =
multipleCallbacks);
        }
    }

    function Sys$_ScriptLoader$_scriptLoadedHandler(scriptElement, =
loaded) {
                                if(loaded && =
this._currentTask._notified) {
            if(this._currentTask._notified > 1) {
                                this._raiseError(true);
            }
            else {
                                =
Array.add(Sys._ScriptLoader._getLoadedScripts(), scriptElement.src);
                this._currentTask.dispose();
                this._currentTask =3D null;
                this._loadScriptsInternal();
            }
        }
        else {
                        this._raiseError(false);
        }
    }

    function Sys$_ScriptLoader$_scriptLoadTimeoutHandler() {
        var callback =3D this._scriptLoadTimeoutCallback;
        this._stopLoading();

        if(callback) {
            callback(this);
        }
    }

    function Sys$_ScriptLoader$_stopLoading() {
        if(this._timeoutCookie) {
            window.clearTimeout(this._timeoutCookie);
            this._timeoutCookie =3D null;
        }

        if(this._currentTask) {
            this._currentTask.dispose();
            this._currentTask =3D null;
        }

        this._scriptsToLoad =3D null;
        this._loading =3D null;
       =20
        this._allScriptsLoadedCallback =3D null;
        this._scriptLoadFailedCallback =3D null;
        this._scriptLoadTimeoutCallback =3D null;
    }
Sys._ScriptLoader.prototype =3D {
    dispose: Sys$_ScriptLoader$dispose,
   =20
    loadScripts: Sys$_ScriptLoader$loadScripts,
   =20
    notifyScriptLoaded: Sys$_ScriptLoader$notifyScriptLoaded,
   =20
    queueCustomScriptTag: Sys$_ScriptLoader$queueCustomScriptTag,

    queueScriptBlock: Sys$_ScriptLoader$queueScriptBlock,

    queueScriptReference: Sys$_ScriptLoader$queueScriptReference,
   =20
    _createScriptElement: Sys$_ScriptLoader$_createScriptElement,  =20

    _loadScriptsInternal: Sys$_ScriptLoader$_loadScriptsInternal,
   =20
    _raiseError: Sys$_ScriptLoader$_raiseError,
   =20
    _scriptLoadedHandler: Sys$_ScriptLoader$_scriptLoadedHandler,
   =20
    _scriptLoadTimeoutHandler: =
Sys$_ScriptLoader$_scriptLoadTimeoutHandler,
   =20
    _stopLoading: Sys$_ScriptLoader$_stopLoading   =20
}
Sys._ScriptLoader.registerClass('Sys._ScriptLoader', null, =
Sys.IDisposable);

Sys._ScriptLoader.getInstance =3D function =
Sys$_ScriptLoader$getInstance() {
    var sl =3D Sys._ScriptLoader._activeInstance;
    if(!sl) {
        sl =3D Sys._ScriptLoader._activeInstance =3D new =
Sys._ScriptLoader();
    }
    return sl;
}

Sys._ScriptLoader.isScriptLoaded =3D function =
Sys$_ScriptLoader$isScriptLoaded(scriptSrc) {
                    var dummyScript =3D =
document.createElement('script');
    dummyScript.src =3D scriptSrc;
    return Array.contains(Sys._ScriptLoader._getLoadedScripts(), =
dummyScript.src);
}

Sys._ScriptLoader.readLoadedScripts =3D function =
Sys$_ScriptLoader$readLoadedScripts() {
        if(!Sys._ScriptLoader._referencedScripts) {
        var referencedScripts =3D Sys._ScriptLoader._referencedScripts =
=3D [];

        var existingScripts =3D document.getElementsByTagName('SCRIPT');
        for (i =3D existingScripts.length - 1; i >=3D 0; i--) {
            var scriptNode =3D existingScripts[i];
            var scriptSrc =3D scriptNode.src;
            if (scriptSrc.length) {
                if (!Array.contains(referencedScripts, scriptSrc)) {
                    Array.add(referencedScripts, scriptSrc);
                }
            }
        }
    }
}

Sys._ScriptLoader._clearScript =3D function =
Sys$_ScriptLoader$_clearScript(scriptElement) {
    if (!Sys.Debug.isDebug) {
                        =
scriptElement.parentNode.removeChild(scriptElement);
    }
}

Sys._ScriptLoader._errorScriptLoadFailed =3D function =
Sys$_ScriptLoader$_errorScriptLoadFailed(scriptUrl, multipleCallbacks) {
    var errorMessage;
    if(multipleCallbacks) {
        errorMessage =3D Sys.Res.scriptLoadMultipleCallbacks;
    }
    else {
                errorMessage =3D Sys.Res.scriptLoadFailedDebug;
    }

    var displayMessage =3D "Sys.ScriptLoadFailedException: " + =
String.format(errorMessage, scriptUrl);
    var e =3D Error.create(displayMessage, {name: =
'Sys.ScriptLoadFailedException', 'scriptUrl': scriptUrl });
    e.popStackFrame();
    return e;
}

Sys._ScriptLoader._getLoadedScripts =3D function =
Sys$_ScriptLoader$_getLoadedScripts() {
    if(!Sys._ScriptLoader._referencedScripts) {
        Sys._ScriptLoader._referencedScripts =3D [];
        Sys._ScriptLoader.readLoadedScripts();
    }
    return Sys._ScriptLoader._referencedScripts;
}


Sys._ScriptLoaderTask =3D function Sys$_ScriptLoaderTask(scriptElement, =
completedCallback) {
    /// <param name=3D"scriptElement" domElement=3D"true"></param>
    /// <param name=3D"completedCallback" type=3D"Function"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "scriptElement", domElement: true},
        {name: "completedCallback", type: Function}
    ]);
    if (e) throw e;

    this._scriptElement =3D scriptElement;
    this._completedCallback =3D completedCallback;
    this._notified =3D 0;
}

    function Sys$_ScriptLoaderTask$get_scriptElement() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._scriptElement;
    }

    function Sys$_ScriptLoaderTask$dispose() {
                if(this._disposed) {
                        return;
        }
        this._disposed =3D true;
        this._removeScriptElementHandlers();
                Sys._ScriptLoader._clearScript(this._scriptElement);
        this._scriptElement =3D null;
    }

    function Sys$_ScriptLoaderTask$execute() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        this._addScriptElementHandlers();
        =
document.getElementsByTagName('HEAD')[0].appendChild(this._scriptElement)=
;
    }

    function Sys$_ScriptLoaderTask$_addScriptElementHandlers() {
                this._scriptLoadDelegate =3D =
Function.createDelegate(this, this._scriptLoadHandler);
       =20
        if (Sys.Browser.agent !=3D=3D Sys.Browser.InternetExplorer) {
            this._scriptElement.readyState =3D 'loaded';
            $addHandler(this._scriptElement, 'load', =
this._scriptLoadDelegate);
        }
        else {
            $addHandler(this._scriptElement, 'readystatechange', =
this._scriptLoadDelegate);
        }   =20
                        this._scriptErrorDelegate =3D =
Function.createDelegate(this, this._scriptErrorHandler);
        $addHandler(this._scriptElement, 'error', =
this._scriptErrorDelegate);
    }

    function Sys$_ScriptLoaderTask$_removeScriptElementHandlers() {
                if(this._scriptLoadDelegate) {
            var scriptElement =3D this.get_scriptElement();
            if (Sys.Browser.agent !=3D=3D Sys.Browser.InternetExplorer) =
{
                $removeHandler(scriptElement, 'load', =
this._scriptLoadDelegate);
            }
            else {
                $removeHandler(scriptElement, 'readystatechange', =
this._scriptLoadDelegate);
            }
            $removeHandler(scriptElement, 'error', =
this._scriptErrorDelegate);
            this._scriptErrorDelegate =3D null;
            this._scriptLoadDelegate =3D null;
        }
    }

    function Sys$_ScriptLoaderTask$_scriptErrorHandler() {
                if(this._disposed) {
            return;
        }
       =20
                this._completedCallback(this.get_scriptElement(), =
false);
    }

    function Sys$_ScriptLoaderTask$_scriptLoadHandler() {
                if(this._disposed) {
            return;
        }

        var scriptElement =3D this.get_scriptElement();
        if ((scriptElement.readyState !=3D=3D 'loaded') &&
            (scriptElement.readyState !=3D=3D 'complete')) {
            return;
        }
       =20
                                        var _this =3D this;
        window.setTimeout(function() {
            _this._completedCallback(scriptElement, true);
        }, 0);
    }
Sys._ScriptLoaderTask.prototype =3D {
    get_scriptElement: Sys$_ScriptLoaderTask$get_scriptElement,
   =20
    dispose: Sys$_ScriptLoaderTask$dispose,
       =20
    execute: Sys$_ScriptLoaderTask$execute,
      =20
    _addScriptElementHandlers: =
Sys$_ScriptLoaderTask$_addScriptElementHandlers,   =20
   =20
    _removeScriptElementHandlers: =
Sys$_ScriptLoaderTask$_removeScriptElementHandlers,   =20

    _scriptErrorHandler: Sys$_ScriptLoaderTask$_scriptErrorHandler,
          =20
    _scriptLoadHandler: Sys$_ScriptLoaderTask$_scriptLoadHandler =20
}
Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask", null, =
Sys.IDisposable);
Sys.ApplicationLoadEventArgs =3D function =
Sys$ApplicationLoadEventArgs(components, isPartialLoad) {
    /// <param name=3D"components" type=3D"Array" =
elementType=3D"Sys.Component"></param>
    /// <param name=3D"isPartialLoad" type=3D"Boolean"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "components", type: Array, elementType: Sys.Component},
        {name: "isPartialLoad", type: Boolean}
    ]);
    if (e) throw e;

    Sys.ApplicationLoadEventArgs.initializeBase(this);
    this._components =3D components;
    this._isPartialLoad =3D isPartialLoad;
}
=20
    function Sys$ApplicationLoadEventArgs$get_components() {
        /// <value type=3D"Array" elementType=3D"Sys.Component"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._components;
    }
    function Sys$ApplicationLoadEventArgs$get_isPartialLoad() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._isPartialLoad;
    }
Sys.ApplicationLoadEventArgs.prototype =3D {
    get_components: Sys$ApplicationLoadEventArgs$get_components,
    get_isPartialLoad: Sys$ApplicationLoadEventArgs$get_isPartialLoad
}
Sys.ApplicationLoadEventArgs.registerClass('Sys.ApplicationLoadEventArgs'=
, Sys.EventArgs);
Sys._Application =3D function Sys$_Application() {
    Sys._Application.initializeBase(this);

    this._disposableObjects =3D [];
    this._components =3D {};
    this._createdComponents =3D [];
    this._secondPassComponents =3D [];

    this._unloadHandlerDelegate =3D Function.createDelegate(this, =
this._unloadHandler);
    this._loadHandlerDelegate =3D Function.createDelegate(this, =
this._loadHandler);

    Sys.UI.DomEvent.addHandler(window, "unload", =
this._unloadHandlerDelegate);
    Sys.UI.DomEvent.addHandler(window, "load", =
this._loadHandlerDelegate);
}




    function Sys$_Application$get_isCreatingComponents() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._creatingComponents;
    }
    function Sys$_Application$add_load(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().addHandler("load", handler);
    }
    function Sys$_Application$remove_load(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("load", handler);
    }
    function Sys$_Application$add_init(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        if (this._initialized) {
            handler(this, Sys.EventArgs.Empty);
        }
        else {
            this.get_events().addHandler("init", handler);
        }
    }
    function Sys$_Application$remove_init(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("init", handler);
    }
    function Sys$_Application$add_unload(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().addHandler("unload", handler);
    }
    function Sys$_Application$remove_unload(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("unload", handler);
    }
    function Sys$_Application$addComponent(component) {
        /// <param name=3D"component" type=3D"Sys.Component"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;

        var id =3D component.get_id();
        if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId);
        if (typeof(this._components[id]) !=3D=3D 'undefined') throw =
Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, =
id));
        this._components[id] =3D component;
    }
    function Sys$_Application$beginCreateComponents() {
        this._creatingComponents =3D true;
    }
    function Sys$_Application$dispose() {
        if (!this._disposing) {
            this._disposing =3D true;
            if (window.pageUnload) {
                window.pageUnload(this, Sys.EventArgs.Empty);
            }
            var unloadHandler =3D =
this.get_events().getHandler("unload");
            if (unloadHandler) {
                unloadHandler(this, Sys.EventArgs.Empty);
            }
            var disposableObjects =3D =
Array.clone(this._disposableObjects);
            for (var i =3D 0, l =3D disposableObjects.length; i < l; =
i++) {
                disposableObjects[i].dispose();
            }
            Array.clear(this._disposableObjects);

            Sys.UI.DomEvent.removeHandler(window, "unload", =
this._unloadHandlerDelegate);
            if(this._loadHandlerDelegate) {
                Sys.UI.DomEvent.removeHandler(window, "load", =
this._loadHandlerDelegate);
                this._loadHandlerDelegate =3D null;
            }

            var sl =3D Sys._ScriptLoader.getInstance();
            if(sl) {
                sl.dispose();
            }

            Sys._Application.callBaseMethod(this, 'dispose');
        }
    }
    function Sys$_Application$endCreateComponents() {
        var components =3D this._secondPassComponents;
        for (var i =3D 0, l =3D components.length; i < l; i++) {
            var component =3D components[i].component;
            Sys$Component$_setReferences(component, =
components[i].references);
            component.endUpdate();
        }
        this._secondPassComponents =3D [];
        this._creatingComponents =3D false;
    }
    function Sys$_Application$findComponent(id, parent) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <param name=3D"parent" optional=3D"true" =
mayBeNull=3D"true"></param>
        /// <returns type=3D"Sys.Component" =
mayBeNull=3D"true"></returns>
        var e =3D 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);
    }
    function Sys$_Application$getComponents() {
        /// <returns type=3D"Array" =
elementType=3D"Sys.Component"></returns>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        var res =3D [];
        var components =3D this._components;
        for (var name in components) {
            res[res.length] =3D components[name];
        }
        return res;
    }
    function Sys$_Application$initialize() {
        if(!this._initialized && !this._initializing) {
            this._initializing =3D true;
                                                =
window.setTimeout(Function.createDelegate(this, this._doInitialize), 0);
        }
    }
    function Sys$_Application$notifyScriptLoaded() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        var sl =3D Sys._ScriptLoader.getInstance();
        if(sl) {
            sl.notifyScriptLoaded();
        }
    }
    function Sys$_Application$registerDisposableObject(object) {
        /// <param name=3D"object" type=3D"Sys.IDisposable"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "object", type: Sys.IDisposable}
        ]);
        if (e) throw e;

        if (!this._disposing) {
            this._disposableObjects[this._disposableObjects.length] =3D =
object;
        }
    }
    function Sys$_Application$raiseLoad() {
        var h =3D this.get_events().getHandler("load");
        var args =3D new =
Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), =
!this._initializing);
        if (h) {
            h(this, args);
        }

        if (window.pageLoad) {
            window.pageLoad(this, args);
        }
        this._createdComponents =3D [];
    }
    function Sys$_Application$removeComponent(component) {
        /// <param name=3D"component" type=3D"Sys.Component"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;

        var id =3D component.get_id();
        if (id) delete this._components[id];
    }
    function Sys$_Application$unregisterDisposableObject(object) {
        /// <param name=3D"object" type=3D"Sys.IDisposable"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "object", type: Sys.IDisposable}
        ]);
        if (e) throw e;

        if (!this._disposing) {
            Array.remove(this._disposableObjects, object);
        }
    }
    function Sys$_Application$_addComponentToSecondPass(component, =
references) {
        this._secondPassComponents[this._secondPassComponents.length] =
=3D {component: component, references: references};
    }
    function Sys$_Application$_doInitialize() {
        Sys._Application.callBaseMethod(this, 'initialize');

        var handler =3D this.get_events().getHandler("init");
        if (handler) {
            this.beginCreateComponents();
            handler(this, Sys.EventArgs.Empty);
            this.endCreateComponents();
        }
        this.raiseLoad();
        this._initializing =3D false;
    }
    function Sys$_Application$_loadHandler() {
                        if(this._loadHandlerDelegate) {
            Sys.UI.DomEvent.removeHandler(window, "load", =
this._loadHandlerDelegate);
            this._loadHandlerDelegate =3D null;
        }
        this.initialize();
    }
    function Sys$_Application$_unloadHandler(event) {
        this.dispose();
    }
Sys._Application.prototype =3D {
    _creatingComponents: false,
    _disposing: false,

    get_isCreatingComponents: Sys$_Application$get_isCreatingComponents,
    add_load: Sys$_Application$add_load,
    remove_load: Sys$_Application$remove_load,
    add_init: Sys$_Application$add_init,
    remove_init: Sys$_Application$remove_init,
    add_unload: Sys$_Application$add_unload,
    remove_unload: Sys$_Application$remove_unload,
    addComponent: Sys$_Application$addComponent,
    beginCreateComponents: Sys$_Application$beginCreateComponents,
    dispose: Sys$_Application$dispose,
    endCreateComponents: Sys$_Application$endCreateComponents,
    findComponent: Sys$_Application$findComponent,
    getComponents: Sys$_Application$getComponents,
    initialize: Sys$_Application$initialize,
    notifyScriptLoaded: Sys$_Application$notifyScriptLoaded,
    registerDisposableObject: Sys$_Application$registerDisposableObject,
    raiseLoad: Sys$_Application$raiseLoad,
    removeComponent: Sys$_Application$removeComponent,
    unregisterDisposableObject: =
Sys$_Application$unregisterDisposableObject,
    _addComponentToSecondPass: =
Sys$_Application$_addComponentToSecondPass,
    _doInitialize: Sys$_Application$_doInitialize,   =20
    _loadHandler: Sys$_Application$_loadHandler,
    _unloadHandler: Sys$_Application$_unloadHandler
}
Sys._Application.registerClass('Sys._Application', Sys.Component, =
Sys.IContainer);

Sys.Application =3D new Sys._Application();

var $find =3D Sys.Application.findComponent;

Type.registerNamespace('Sys.Net');

Sys.Net.WebRequestExecutor =3D function Sys$Net$WebRequestExecutor() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    this._webRequest =3D null;
    this._resultObject =3D null;
}


    function Sys$Net$WebRequestExecutor$get_webRequest() {
        /// <value type=3D"Sys.Net.WebRequest"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._webRequest;
    }

    function Sys$Net$WebRequestExecutor$_set_webRequest(value) {
        if (this.get_started()) {
            throw =
Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, =
'set_webRequest'));
        }

        this._webRequest =3D value;
    }


    function Sys$Net$WebRequestExecutor$get_started() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }

    function Sys$Net$WebRequestExecutor$get_responseAvailable() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }

    function Sys$Net$WebRequestExecutor$get_timedOut() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_aborted() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_responseData() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_statusCode() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_statusText() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_xml() {
        /// <value></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_object() {
        /// <value></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (!this._resultObject) {
            this._resultObject =3D =
Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData(=
));
        }
        return this._resultObject;
    }


    function Sys$Net$WebRequestExecutor$executeRequest() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$abort() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$getResponseHeader(header) {
        /// <param name=3D"header" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "header", type: String}
        ]);
        if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$getAllResponseHeaders() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
Sys.Net.WebRequestExecutor.prototype =3D {
    get_webRequest: Sys$Net$WebRequestExecutor$get_webRequest,

    _set_webRequest: Sys$Net$WebRequestExecutor$_set_webRequest,

        get_started: Sys$Net$WebRequestExecutor$get_started,

    get_responseAvailable: =
Sys$Net$WebRequestExecutor$get_responseAvailable,

    get_timedOut: Sys$Net$WebRequestExecutor$get_timedOut,
    get_aborted: Sys$Net$WebRequestExecutor$get_aborted,
    get_responseData: Sys$Net$WebRequestExecutor$get_responseData,
    get_statusCode: Sys$Net$WebRequestExecutor$get_statusCode,
    get_statusText: Sys$Net$WebRequestExecutor$get_statusText,
    get_xml: Sys$Net$WebRequestExecutor$get_xml,
    get_object: Sys$Net$WebRequestExecutor$get_object,

        executeRequest: Sys$Net$WebRequestExecutor$executeRequest,
    abort: Sys$Net$WebRequestExecutor$abort,
    getResponseHeader: Sys$Net$WebRequestExecutor$getResponseHeader,
    getAllResponseHeaders: =
Sys$Net$WebRequestExecutor$getAllResponseHeaders
}
Sys.Net.WebRequestExecutor.registerClass('Sys.Net.WebRequestExecutor');
window.XMLDOM =3D function window$XMLDOM(markup) {
    if (!window.DOMParser) {
        var progIDs =3D [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' =
];
        for (var i =3D 0; i < progIDs.length; i++) {
            try {
                var xmlDOM =3D new ActiveXObject(progIDs[i]);
                xmlDOM.async =3D false;
                xmlDOM.loadXML(markup);
                xmlDOM.setProperty('SelectionLanguage', 'XPath');
                return xmlDOM;
            }
            catch (ex) {
            }
        }
        return null;
    }
        else {
        try {
            var domParser =3D new window.DOMParser();
            return domParser.parseFromString(markup, 'text/xml');
        } catch (ex) {
            return null;
        }
    }
    return null;
    }

Sys.Net.XMLHttpExecutor =3D function Sys$Net$XMLHttpExecutor() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();

    Sys.Net.XMLHttpExecutor.initializeBase(this);

    var _this =3D this;
    this._xmlHttpRequest =3D null;
    this._webRequest =3D null;
    this._responseAvailable =3D false;
    this._timedOut =3D false;
    this._timer =3D null;
    this._aborted =3D false;
    this._started =3D false;

    this._onReadyStateChange =3D function () {
       =20
        if (_this._xmlHttpRequest.readyState =3D=3D=3D 4 ) {

            _this._clearTimer();
            _this._responseAvailable =3D true;
            _this._webRequest.completed(Sys.EventArgs.Empty);
            if (_this._xmlHttpRequest !=3D null) {
                _this._xmlHttpRequest.onreadystatechange =3D =
Function.emptyMethod;
                _this._xmlHttpRequest =3D null;
            }
        }
    }

    this._clearTimer =3D function this$_clearTimer() {
        if (_this._timer !=3D null) {
            window.clearTimeout(_this._timer);
            _this._timer =3D null;
        }
    }

    this._onTimeout =3D function this$_onTimeout() {
        if (!_this._responseAvailable) {
            _this._clearTimer();
            _this._timedOut =3D true;
            _this._xmlHttpRequest.onreadystatechange =3D =
Function.emptyMethod;
            _this._xmlHttpRequest.abort();
            _this._webRequest.completed(Sys.EventArgs.Empty);
            _this._xmlHttpRequest =3D null;
        }
    }

}



    function Sys$Net$XMLHttpExecutor$get_timedOut() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timedOut;
    }

    function Sys$Net$XMLHttpExecutor$get_started() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._started;
    }

    function Sys$Net$XMLHttpExecutor$get_responseAvailable() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return this._responseAvailable;
    }

    function Sys$Net$XMLHttpExecutor$get_aborted() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._aborted;
    }

    function Sys$Net$XMLHttpExecutor$executeRequest() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        this._webRequest =3D this.get_webRequest();

        if (this._started) {
            throw =
Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, =
'executeRequest'));
        }
        if (this._webRequest =3D=3D=3D null) {
            throw Error.invalidOperation(Sys.Res.nullWebRequest);
        }

        var body =3D this._webRequest.get_body();
        var headers =3D this._webRequest.get_headers();
        this._xmlHttpRequest =3D new XMLHttpRequest();
        this._xmlHttpRequest.onreadystatechange =3D =
this._onReadyStateChange;
        var verb =3D this._webRequest.get_httpVerb();
        this._xmlHttpRequest.open(verb, =
this._webRequest.getResolvedUrl(), true );
        if (headers) {
            for (var header in headers) {
                var val =3D headers[header];
                if (typeof(val) !=3D=3D "function")
                    this._xmlHttpRequest.setRequestHeader(header, val);
            }
        }

        if (verb.toLowerCase() =3D=3D=3D "post") {
                        if ((headers =3D=3D=3D null) || =
!headers['Content-Type']) {
                this._xmlHttpRequest.setRequestHeader('Content-Type', =
'application/x-www-form-urlencoded');
            }

                        if (!body) {
                body =3D "";
            }
        }

        var timeout =3D this._webRequest.get_timeout();
        if (timeout > 0) {
            this._timer =3D =
window.setTimeout(Function.createDelegate(this, this._onTimeout), =
timeout);
        }
        this._xmlHttpRequest.send(body);
        this._started =3D true;
    }

    function Sys$Net$XMLHttpExecutor$getResponseHeader(header) {
        /// <param name=3D"header" type=3D"String"></param>
        /// <returns type=3D"String"></returns>
        var e =3D 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 result;
        try {
            result =3D this._xmlHttpRequest.getResponseHeader(header);
        } catch (e) {
        }
        if (!result) result =3D "";
        return result;
    }

    function Sys$Net$XMLHttpExecutor$getAllResponseHeaders() {
        /// <returns type=3D"String"></returns>
        if (arguments.length !=3D=3D 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();
    }

    function Sys$Net$XMLHttpExecutor$get_responseData() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 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;
    }

    function Sys$Net$XMLHttpExecutor$get_statusCode() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 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'));
        }

        return this._xmlHttpRequest.status;
    }

    function Sys$Net$XMLHttpExecutor$get_statusText() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 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;
    }

    function Sys$Net$XMLHttpExecutor$get_xml() {
        /// <value></value>
        if (arguments.length !=3D=3D 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 xml =3D this._xmlHttpRequest.responseXML;
        if (!xml || !xml.documentElement) {

                        xml =3D new =
XMLDOM(this._xmlHttpRequest.responseText);

                        if (!xml || !xml.documentElement)
                return null;
        }
                else if (navigator.userAgent.indexOf('MSIE') !=3D=3D -1) =
{
            xml.setProperty('SelectionLanguage', 'XPath');
        }

                if (xml.documentElement.namespaceURI =3D=3D=3D =
"http://www.mozilla.org/newlayout/xml/parsererror.xml" &&
            xml.documentElement.tagName =3D=3D=3D "parsererror") {
            return null;
        }
       =20
                if (xml.documentElement.firstChild && =
xml.documentElement.firstChild.tagName =3D=3D=3D "parsererror") {
            return null;
        }
       =20
        return xml;
    }

    function Sys$Net$XMLHttpExecutor$abort() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (!this._started) {
            throw =
Error.invalidOperation(Sys.Res.cannotAbortBeforeStart);
        }

                if (this._aborted || this._responseAvailable || =
this._timedOut)
            return;

        this._aborted =3D true;

        this._clearTimer();

        if (this._xmlHttpRequest && !this._responseAvailable) {

                        this._xmlHttpRequest.onreadystatechange =3D =
Function.emptyMethod;
            this._xmlHttpRequest.abort();

            this._xmlHttpRequest =3D null;
            var handler =3D =
this._webRequest._get_eventHandlerList().getHandler("completed");
            if (handler) {
                handler(this, Sys.EventArgs.Empty);
            }
        }
    }
Sys.Net.XMLHttpExecutor.prototype =3D {

    get_timedOut: Sys$Net$XMLHttpExecutor$get_timedOut,

    get_started: Sys$Net$XMLHttpExecutor$get_started,

    get_responseAvailable: =
Sys$Net$XMLHttpExecutor$get_responseAvailable,

    get_aborted: Sys$Net$XMLHttpExecutor$get_aborted,

    executeRequest: Sys$Net$XMLHttpExecutor$executeRequest,

    getResponseHeader: Sys$Net$XMLHttpExecutor$getResponseHeader,

    getAllResponseHeaders: =
Sys$Net$XMLHttpExecutor$getAllResponseHeaders,

    get_responseData: Sys$Net$XMLHttpExecutor$get_responseData,

    get_statusCode: Sys$Net$XMLHttpExecutor$get_statusCode,

    get_statusText: Sys$Net$XMLHttpExecutor$get_statusText,

    get_xml: Sys$Net$XMLHttpExecutor$get_xml,

    abort: Sys$Net$XMLHttpExecutor$abort
}
Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', =
Sys.Net.WebRequestExecutor);
Sys.Net._WebRequestManager =3D function Sys$Net$_WebRequestManager() {
    this._this =3D this;
    this._defaultTimeout =3D 0;
    this._defaultExecutorType =3D "Sys.Net.XMLHttpExecutor";
}


    function Sys$Net$_WebRequestManager$add_invokingRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("invokingRequest", =
handler);
    }
    function Sys$Net$_WebRequestManager$remove_invokingRequest(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("invokingRequest", =
handler);
    }

    function Sys$Net$_WebRequestManager$add_completedRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("completedRequest", =
handler);
    }
    function Sys$Net$_WebRequestManager$remove_completedRequest(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("completedRequest", =
handler);
    }

    function Sys$Net$_WebRequestManager$_get_eventHandlerList() {
        if (!this._events) {
            this._events =3D new Sys.EventHandlerList();
        }
        return this._events;
    }

    function Sys$Net$_WebRequestManager$get_defaultTimeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultTimeout;
    }
    function Sys$Net$_WebRequestManager$set_defaultTimeout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        if (value < 0) {
            throw Error.argumentOutOfRange("value", value, =
Sys.Res.invalidTimeout);
        }

        this._defaultTimeout =3D value;
    }

    function Sys$Net$_WebRequestManager$get_defaultExecutorType() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultExecutorType;
    }
    function Sys$Net$_WebRequestManager$set_defaultExecutorType(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        this._defaultExecutorType =3D value;
    }

    function Sys$Net$_WebRequestManager$executeRequest(webRequest) {
        /// <param name=3D"webRequest" =
type=3D"Sys.Net.WebRequest"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "webRequest", type: Sys.Net.WebRequest}
        ]);
        if (e) throw e;

        var executor =3D webRequest.get_executor();
                if (!executor) {
           =20
            var failed =3D false;
            try {
                var executorType =3D eval(this._defaultExecutorType);
                executor =3D new executorType();
            } catch (e) {
                failed =3D 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()) {
            return;
        }

        var evArgs =3D new Sys.Net.NetworkRequestEventArgs(webRequest);
        var handler =3D =
this._get_eventHandlerList().getHandler("invokingRequest");
        if (handler) {
            handler(this, evArgs);
        }

        if (!evArgs.get_cancel()) {
            executor.executeRequest();
        }
    }
Sys.Net._WebRequestManager.prototype =3D {
    add_invokingRequest: Sys$Net$_WebRequestManager$add_invokingRequest,
    remove_invokingRequest: =
Sys$Net$_WebRequestManager$remove_invokingRequest,

    add_completedRequest: =
Sys$Net$_WebRequestManager$add_completedRequest,
    remove_completedRequest: =
Sys$Net$_WebRequestManager$remove_completedRequest,

    _get_eventHandlerList: =
Sys$Net$_WebRequestManager$_get_eventHandlerList,

    get_defaultTimeout: Sys$Net$_WebRequestManager$get_defaultTimeout,
    set_defaultTimeout: Sys$Net$_WebRequestManager$set_defaultTimeout,

    get_defaultExecutorType: =
Sys$Net$_WebRequestManager$get_defaultExecutorType,
    set_defaultExecutorType: =
Sys$Net$_WebRequestManager$set_defaultExecutorType,

    executeRequest: Sys$Net$_WebRequestManager$executeRequest
}

Sys.Net._WebRequestManager.registerClass('Sys.Net._WebRequestManager');

Sys.Net.WebRequestManager =3D new Sys.Net._WebRequestManager();
Sys.Net.NetworkRequestEventArgs =3D function =
Sys$Net$NetworkRequestEventArgs(webRequest) {
    /// <param name=3D"webRequest" type=3D"Sys.Net.WebRequest"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "webRequest", type: Sys.Net.WebRequest}
    ]);
    if (e) throw e;

    Sys.Net.NetworkRequestEventArgs.initializeBase(this);
    this._webRequest =3D webRequest;
}


    function Sys$Net$NetworkRequestEventArgs$get_webRequest() {
        /// <value type=3D"Sys.Net.WebRequest"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._webRequest;
    }
Sys.Net.NetworkRequestEventArgs.prototype =3D {
    get_webRequest: Sys$Net$NetworkRequestEventArgs$get_webRequest
}

Sys.Net.NetworkRequestEventArgs.registerClass('Sys.Net.NetworkRequestEven=
tArgs', Sys.CancelEventArgs);
Sys.Net.WebRequest =3D function Sys$Net$WebRequest() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    this._url =3D "";
    this._headers =3D { };
    this._body =3D null;
    this._userContext =3D null;
    this._httpVerb =3D null;
    this._executor =3D null;
    this._invokeCalled =3D false;
    this._timeout =3D 0;
}


    function Sys$Net$WebRequest$add_completed(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        this._get_eventHandlerList().addHandler("completed", handler);
    }
    function Sys$Net$WebRequest$remove_completed(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        this._get_eventHandlerList().removeHandler("completed", =
handler);
    }

    function Sys$Net$WebRequest$completed(eventArgs) {
        /// <param name=3D"eventArgs" type=3D"Sys.EventArgs"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "eventArgs", type: Sys.EventArgs}
        ]);
        if (e) throw e;

        var handler =3D =
Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRe=
quest");
        if (handler) {
            handler(this._executor, eventArgs);
        }

        handler =3D =
this._get_eventHandlerList().getHandler("completed");
        if (handler) {
            handler(this._executor, eventArgs);
        }
    }

    function Sys$Net$WebRequest$_get_eventHandlerList() {
        if (!this._events) {
            this._events =3D new Sys.EventHandlerList();
        }
        return this._events;
    }

    function Sys$Net$WebRequest$get_url() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._url;
    }
    function Sys$Net$WebRequest$set_url(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        this._url =3D value;
    }

    function Sys$Net$WebRequest$get_headers() {
        /// <value></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._headers;
    }

    function Sys$Net$WebRequest$get_httpVerb() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
                if (this._httpVerb =3D=3D=3D null) {
            if (this._body =3D=3D=3D null) {
                return "GET";
            }
            return "POST";
        }
        return this._httpVerb;
    }
    function Sys$Net$WebRequest$set_httpVerb(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        if (value.length =3D=3D=3D 0) {
            throw Error.argument('value', Sys.Res.invalidHttpVerb);
        }

        this._httpVerb =3D value;
    }

    function Sys$Net$WebRequest$get_body() {
        /// <value mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._body;
    }
    function Sys$Net$WebRequest$set_body(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
mayBeNull: true}]);
        if (e) throw e;

        this._body =3D value;
    }

    function Sys$Net$WebRequest$get_userContext() {
        /// <value mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._userContext;
    }
    function Sys$Net$WebRequest$set_userContext(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
mayBeNull: true}]);
        if (e) throw e;

        this._userContext =3D value;
    }

    function Sys$Net$WebRequest$get_executor() {
        /// <value type=3D"Sys.Net.WebRequestExecutor"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._executor;
    }
    function Sys$Net$WebRequest$set_executor(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Sys.Net.WebRequestExecutor}]);
        if (e) throw e;

        if (this._executor !=3D=3D null && this._executor.get_started()) =
{
            throw =
Error.invalidOperation(Sys.Res.setExecutorAfterActive);
        }

        this._executor =3D value;
        this._executor._set_webRequest(this);
    }

    function Sys$Net$WebRequest$get_timeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._timeout =3D=3D=3D 0) {
            return Sys.Net.WebRequestManager.get_defaultTimeout();
        }
        return this._timeout;
    }
    function Sys$Net$WebRequest$set_timeout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        if (value < 0) {
            throw Error.argumentOutOfRange("value", value, =
Sys.Res.invalidTimeout);
        }

        this._timeout =3D value;
    }

    function Sys$Net$WebRequest$getResolvedUrl() {
        /// <returns type=3D"String"></returns>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return Sys.Net.WebRequest._resolveUrl(this._url);
    }

    function Sys$Net$WebRequest$invoke() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._invokeCalled) {
            throw Error.invalidOperation(Sys.Res.invokeCalledTwice);
        }

        Sys.Net.WebRequestManager.executeRequest(this);
        this._invokeCalled =3D true;
    }
Sys.Net.WebRequest.prototype =3D {
    add_completed: Sys$Net$WebRequest$add_completed,
    remove_completed: Sys$Net$WebRequest$remove_completed,

    completed: Sys$Net$WebRequest$completed,

    _get_eventHandlerList: Sys$Net$WebRequest$_get_eventHandlerList,

    get_url: Sys$Net$WebRequest$get_url,
    set_url: Sys$Net$WebRequest$set_url,

    get_headers: Sys$Net$WebRequest$get_headers,

    get_httpVerb: Sys$Net$WebRequest$get_httpVerb,
    set_httpVerb: Sys$Net$WebRequest$set_httpVerb,

    get_body: Sys$Net$WebRequest$get_body,
    set_body: Sys$Net$WebRequest$set_body,

    get_userContext: Sys$Net$WebRequest$get_userContext,
    set_userContext: Sys$Net$WebRequest$set_userContext,

    get_executor: Sys$Net$WebRequest$get_executor,
    set_executor: Sys$Net$WebRequest$set_executor,

    get_timeout: Sys$Net$WebRequest$get_timeout,
    set_timeout: Sys$Net$WebRequest$set_timeout,

    getResolvedUrl: Sys$Net$WebRequest$getResolvedUrl,

    invoke: Sys$Net$WebRequest$invoke
}

Sys.Net.WebRequest._resolveUrl =3D function =
Sys$Net$WebRequest$_resolveUrl(url, baseUrl) {
        if (url && url.indexOf('://') !=3D=3D -1) {
        return url;
    }

        if (!baseUrl || baseUrl.length =3D=3D=3D 0) {
        var baseElement =3D document.getElementsByTagName('base')[0];
        if (baseElement && baseElement.href && baseElement.href.length > =
0) {
            baseUrl =3D baseElement.href;
        }
        else {
            baseUrl =3D document.URL;
        }
    }

        var qsStart =3D baseUrl.indexOf('?');
    if (qsStart !=3D=3D -1) {
        baseUrl =3D baseUrl.substr(0, qsStart);
    }
    baseUrl =3D baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);

        if (!url || url.length =3D=3D=3D 0) {
        return baseUrl;
    }

        if (url.charAt(0) =3D=3D=3D '/') {
        var slashslash =3D baseUrl.indexOf('://');
        if (slashslash =3D=3D=3D -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl1);
        }

        var nextSlash =3D baseUrl.indexOf('/', slashslash + 3);
        if (nextSlash =3D=3D=3D -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl2);
        }

        return baseUrl.substr(0, nextSlash) + url;
    }
            else {
        var lastSlash =3D baseUrl.lastIndexOf('/');
        if (lastSlash =3D=3D=3D -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl3);
        }

        return baseUrl.substr(0, lastSlash+1) + url;
    }
}

Sys.Net.WebRequest._createQueryString =3D function =
Sys$Net$WebRequest$_createQueryString(queryString, encodeMethod) {
        if (!encodeMethod)
        encodeMethod =3D encodeURIComponent;

    var sb =3D new Sys.StringBuilder();

    var i =3D 0;
    for (var arg in queryString) {
        var obj =3D queryString[arg];
        if (typeof(obj) =3D=3D=3D "function") continue;
        var val =3D =
Sys.Serialization.JavaScriptSerializer.serialize(obj);
        if (i !=3D=3D 0) {
            sb.append('&');
        }

        sb.append(arg);
        sb.append('=3D');
        sb.append(encodeMethod(val));

        i++;
    }

    return sb.toString();
}

Sys.Net.WebRequest._createUrl =3D function =
Sys$Net$WebRequest$_createUrl(url, queryString) {
    if (!queryString) {
        return url;
    }

    var qs =3D Sys.Net.WebRequest._createQueryString(queryString);
    if (qs.length > 0) {
        var sep =3D '?';
        if (url && url.indexOf('?') !=3D=3D -1)
            sep =3D '&';
        return url + sep + qs;
    } else {
        return url;
    }
}

Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest');
Sys.Net.WebServiceProxy =3D function Sys$Net$WebServiceProxy() {
}


    function Sys$Net$WebServiceProxy$set_timeout(value) {
        this._timeout =3D value;
    }
    function Sys$Net$WebServiceProxy$get_timeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timeout;
    }
    function Sys$Net$WebServiceProxy$set_defaultUserContext(value) {
        this._userContext =3D value;
    }
    function Sys$Net$WebServiceProxy$get_defaultUserContext() {
        /// <value></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._userContext;
    }
    function Sys$Net$WebServiceProxy$set_defaultSucceededCallback(value) =
{
        this._succeeded =3D value;
    }
    function Sys$Net$WebServiceProxy$get_defaultSucceededCallback() {
        /// <value type=3D"Function"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._succeeded;
    }
    function Sys$Net$WebServiceProxy$set_defaultFailedCallback(value) {
        this._failed =3D value;
    }
    function Sys$Net$WebServiceProxy$get_defaultFailedCallback() {
        /// <value type=3D"Function"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._failed;
    }
    function Sys$Net$WebServiceProxy$set_path(value) {
        this._path =3D value;
    }
    function Sys$Net$WebServiceProxy$get_path() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._path;
    }

    function Sys$Net$WebServiceProxy$_invoke(servicePath, methodName, =
useGet, params, onSuccess, onFailure, userContext) {
        /// <param name=3D"servicePath" type=3D"String"></param>
        /// <param name=3D"methodName" type=3D"String"></param>
        /// <param name=3D"useGet" type=3D"Boolean"></param>
        /// <param name=3D"params"></param>
        /// <param name=3D"onSuccess" type=3D"Function" =
mayBeNull=3D"true" optional=3D"true"></param>
        /// <param name=3D"onFailure" type=3D"Function" =
mayBeNull=3D"true" optional=3D"true"></param>
        /// <param name=3D"userContext" mayBeNull=3D"true" =
optional=3D"true"></param>
        /// <returns type=3D"Sys.Net.WebRequest"></returns>
        var e =3D 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;


                if (onSuccess =3D=3D=3D null || typeof onSuccess =
=3D=3D=3D 'undefined') onSuccess =3D =
this.get_defaultSucceededCallback();
        if (onFailure =3D=3D=3D null || typeof onFailure =3D=3D=3D =
'undefined') onFailure =3D this.get_defaultFailedCallback();
        if (userContext =3D=3D=3D null || typeof userContext =3D=3D=3D =
'undefined') userContext =3D this.get_defaultUserContext();
       =20
        return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, =
useGet, params, onSuccess, onFailure, userContext, this.get_timeout());
    }
Sys.Net.WebServiceProxy.prototype =3D {
    set_timeout: Sys$Net$WebServiceProxy$set_timeout,
    get_timeout: Sys$Net$WebServiceProxy$get_timeout,
    set_defaultUserContext: =
Sys$Net$WebServiceProxy$set_defaultUserContext,
    get_defaultUserContext: =
Sys$Net$WebServiceProxy$get_defaultUserContext,
    set_defaultSucceededCallback: =
Sys$Net$WebServiceProxy$set_defaultSucceededCallback,
    get_defaultSucceededCallback: =
Sys$Net$WebServiceProxy$get_defaultSucceededCallback,
    set_defaultFailedCallback: =
Sys$Net$WebServiceProxy$set_defaultFailedCallback,
    get_defaultFailedCallback: =
Sys$Net$WebServiceProxy$get_defaultFailedCallback,
    set_path: Sys$Net$WebServiceProxy$set_path,
    get_path: Sys$Net$WebServiceProxy$get_path,

    _invoke: Sys$Net$WebServiceProxy$_invoke
}
Sys.Net.WebServiceProxy.registerClass('Sys.Net.WebServiceProxy');

Sys.Net.WebServiceProxy.invoke =3D function =
Sys$Net$WebServiceProxy$invoke(servicePath, methodName, useGet, params, =
onSuccess, onFailure, userContext, timeout) {
    /// <param name=3D"servicePath" type=3D"String"></param>
    /// <param name=3D"methodName" type=3D"String"></param>
    /// <param name=3D"useGet" type=3D"Boolean" =
optional=3D"true"></param>
    /// <param name=3D"params" mayBeNull=3D"true" =
optional=3D"true"></param>
    /// <param name=3D"onSuccess" type=3D"Function" mayBeNull=3D"true" =
optional=3D"true"></param>
    /// <param name=3D"onFailure" type=3D"Function" mayBeNull=3D"true" =
optional=3D"true"></param>
    /// <param name=3D"userContext" mayBeNull=3D"true" =
optional=3D"true"></param>
    /// <param name=3D"timeout" type=3D"Number" =
optional=3D"true"></param>
    /// <returns type=3D"Sys.Net.WebRequest"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "servicePath", type: String},
        {name: "methodName", type: String},
        {name: "useGet", type: Boolean, 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, optional: true}
    ]);
    if (e) throw e;


        var request =3D new Sys.Net.WebRequest();

    request.get_headers()['Content-Type'] =3D 'application/json; =
charset=3Dutf-8';
    if (!params) params =3D {};
    var urlParams =3D params;
        if (!useGet || !urlParams) urlParams =3D {};
    =
request.set_url(Sys.Net.WebRequest._createUrl(servicePath+"/"+methodName,=
 urlParams));

    var body =3D null;
        if (!useGet) {
        body =3D =
Sys.Serialization.JavaScriptSerializer.serialize(params);

                if (body =3D=3D=3D "{}") body =3D "";
    }

        request.set_body(body);
    request.add_completed(onComplete);
    if (timeout && timeout > 0) request.set_timeout(timeout);
    request.invoke();

    function onComplete(response, eventArgs) {
        if (response.get_responseAvailable()) {
            var statusCode =3D response.get_statusCode();
            var result =3D null;

            try {
                var contentType =3D =
response.getResponseHeader("Content-Type");
                if (contentType.startsWith("application/json")) {
                    result =3D response.get_object();
                }
                else if (contentType.startsWith("text/xml")) {
                    result =3D response.get_xml();
                }
                                else {
                    result =3D response.get_responseData();
                }
            } catch (ex) {
            }

            var error =3D response.getResponseHeader("jsonerror");
            var errorObj =3D (error =3D=3D=3D "true");
            if (errorObj) {
                result =3D new Sys.Net.WebServiceError(false, =
result.Message, result.StackTrace, result.ExceptionType);
            }
            if (((statusCode < 200) || (statusCode >=3D 300)) || =
errorObj) {
                if (onFailure) {
                    if (!result || !errorObj) {
                        result =3D new Sys.Net.WebServiceError(false , =
String.format(Sys.Res.webServiceFailedNoMsg, methodName), "", "");
                    }
                    result._statusCode =3D statusCode;
                    onFailure(result, userContext, methodName);
                }
                else {
                                        var error;
                    if (result && errorObj) {
                                                error =3D =
result.get_exceptionType() + "-- " + result.get_message();
                    }
                    else {
                                                                        =
error =3D response.get_responseData();
                    }
                    alert(String.format(Sys.Res.webServiceFailed, =
methodName, error));
                }
            }
            else if (onSuccess) {
                onSuccess(result, userContext, methodName);
            }
        }
        else {
            var msg;
            if (response.get_timedOut()) {
                msg =3D String.format(Sys.Res.webServiceTimedOut, =
methodName);
            }
            else {
                msg =3D String.format(Sys.Res.webServiceFailedNoMsg, =
methodName)
            }
            if (onFailure) {
                onFailure(new =
Sys.Net.WebServiceError(response.get_timedOut(), msg, "", ""), =
userContext, methodName);
            }
            else {
                                alert(msg);
            }
        }
    }

    return request;
}

Sys.Net.WebServiceProxy._generateTypedConstructor =3D function =
Sys$Net$WebServiceProxy$_generateTypedConstructor(type) {
    return function(properties) {
                if (properties) {
            for (var name in properties) {
                this[name] =3D properties[name];
            }
        }
        this.__type =3D type;
    }
}
Sys.Net.WebServiceError =3D function Sys$Net$WebServiceError(timedOut, =
message, stackTrace, exceptionType) {
    /// <param name=3D"timedOut" type=3D"Boolean"></param>
    /// <param name=3D"message" type=3D"String" =
mayBeNull=3D"true"></param>
    /// <param name=3D"stackTrace" type=3D"String" =
mayBeNull=3D"true"></param>
    /// <param name=3D"exceptionType" type=3D"String" =
mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "timedOut", type: Boolean},
        {name: "message", type: String, mayBeNull: true},
        {name: "stackTrace", type: String, mayBeNull: true},
        {name: "exceptionType", type: String, mayBeNull: true}
    ]);
    if (e) throw e;

    this._timedOut =3D timedOut;
    this._message =3D message;
    this._stackTrace =3D stackTrace;
    this._exceptionType =3D exceptionType;
    this._statusCode =3D -1;
}


    function Sys$Net$WebServiceError$get_timedOut() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timedOut;
    }

    function Sys$Net$WebServiceError$get_statusCode() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._statusCode;
    }

    function Sys$Net$WebServiceError$get_message() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._message;
    }

    function Sys$Net$WebServiceError$get_stackTrace() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._stackTrace;
    }

    function Sys$Net$WebServiceError$get_exceptionType() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._exceptionType;
    }
Sys.Net.WebServiceError.prototype =3D {
    get_timedOut: Sys$Net$WebServiceError$get_timedOut,

    get_statusCode: Sys$Net$WebServiceError$get_statusCode,

    get_message: Sys$Net$WebServiceError$get_message,

    get_stackTrace: Sys$Net$WebServiceError$get_stackTrace,

    get_exceptionType: Sys$Net$WebServiceError$get_exceptionType
}
Sys.Net.WebServiceError.registerClass('Sys.Net.WebServiceError');

Type.registerNamespace('Sys.Services');

Sys.Services._ProfileService =3D function Sys$Services$_ProfileService() =
{
    Sys.Services._ProfileService.initializeBase(this);
    this.properties =3D {};
}
Sys.Services._ProfileService.DefaultWebServicePath =3D '';








    function Sys$Services$_ProfileService$get_defaultFailedCallback() {
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultFailedCallback;
    }
    function =
Sys$Services$_ProfileService$set_defaultFailedCallback(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultFailedCallback =3D value;
    }

    function =
Sys$Services$_ProfileService$get_defaultLoadCompletedCallback() {
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultLoadCompletedCallback;
    }
    function =
Sys$Services$_ProfileService$set_defaultLoadCompletedCallback(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultLoadCompletedCallback =3D value;
    }

    function =
Sys$Services$_ProfileService$get_defaultSaveCompletedCallback() {
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultSaveCompletedCallback;
    }
    function =
Sys$Services$_ProfileService$set_defaultSaveCompletedCallback(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultSaveCompletedCallback =3D value;
    }


    function Sys$Services$_ProfileService$get_path() {
        /// <value type=3D"String" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._path;
    }
    function Sys$Services$_ProfileService$set_path(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String, mayBeNull: true}]);
        if (e) throw e;

        if((!value) || (!value.length)) {
            value =3D '';
        }
        this._path =3D value;
    }

    function Sys$Services$_ProfileService$get_timeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timeout;
    }
    function Sys$Services$_ProfileService$set_timeout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        this._timeout =3D value;
    }

    function Sys$Services$_ProfileService$load(propertyNames, =
loadCompletedCallback, failedCallback, userContext) {
        /// <param name=3D"propertyNames" type=3D"Array" =
elementType=3D"String" optional=3D"true" elementMayBeNull=3D"false" =
mayBeNull=3D"true"></param>
        /// <param name=3D"loadCompletedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"failedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"userContext" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D 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 =3D {};
        var methodName;
        if(!propertyNames) {
            methodName =3D "GetAllPropertiesForCurrentUser";
        }
        else {
            methodName =3D "GetPropertiesForCurrentUser";
            parameters =3D { properties: =
this._clonePropertyNames(propertyNames) };
        }
                this._invoke(this._get_path(),
                                        methodName,
                                        false,
                                        parameters,
                                        Function.createDelegate(this, =
this._onLoadComplete),
                                        Function.createDelegate(this, =
this._onLoadFailed),                                         =
[loadCompletedCallback, failedCallback, userContext]);
    }

    function Sys$Services$_ProfileService$save(propertyNames, =
saveCompletedCallback, failedCallback, userContext) {
        /// <param name=3D"propertyNames" type=3D"Array" =
elementType=3D"String" optional=3D"true" elementMayBeNull=3D"false" =
mayBeNull=3D"true"></param>
        /// <param name=3D"saveCompletedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"failedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"userContext" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D 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 =3D =
this._flattenProperties(propertyNames, this.properties);
                this._invoke(this._get_path(),
                                        "SetPropertiesForCurrentUser",
                                        false,
                                        { values: flattenedProperties },
                                        Function.createDelegate(this, =
this._onSaveComplete),
                                        Function.createDelegate(this, =
this._onSaveFailed),
                                        [saveCompletedCallback, =
failedCallback, userContext]);
    }


    function Sys$Services$_ProfileService$_clonePropertyNames(arr) {
        var nodups =3D [];
        var seen =3D {};
        for(var i=3D0; i < arr.length; i++) {
            var prop =3D arr[i];
            if(!seen[prop]) { Array.add(nodups, prop); =
seen[prop]=3Dtrue; };
        }
        return nodups;
    }





    function =
Sys$Services$_ProfileService$_flattenProperties(propertyNames, =
properties, groupName) {
        var flattenedProperties =3D {};
        var val;
        var key;
        if(propertyNames && propertyNames.length =3D=3D=3D 0) {
            return flattenedProperties;
        }

        for (var property in properties) {
            val =3D properties[property];
            key =3D groupName ? groupName + "." + property : property;
                        =
if(Sys.Services.ProfileGroup.isInstanceOfType(val)) {
                var groupProperties =3D =
this._flattenProperties(propertyNames, val, key);
                                                                         =
                                       for(var subKey in =
groupProperties) {
                    var subVal =3D groupProperties[subKey];
                    flattenedProperties[subKey] =3D subVal;
                }
            }
            else {
                                if(!propertyNames || =
Array.indexOf(propertyNames, key) !=3D=3D -1) {
                    flattenedProperties[key] =3D val;
                }
            }
        }
        return flattenedProperties;
    }

    function Sys$Services$_ProfileService$_get_path() {
        var path =3D this.get_path();
        if(!path.length) {
            path =3D Sys.Services._ProfileService.DefaultWebServicePath;
        }
        if(!path || !path.length) {
            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
        }
        return path;
    }

    function Sys$Services$_ProfileService$_onLoadComplete(result, =
context, methodName) {
        if(typeof(result) !=3D=3D "object") {
            throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
 methodName, "Object"));
        }

        var unflattened =3D this._unflattenProperties(result);
        for(var name in unflattened) {
            this.properties[name] =3D unflattened[name];
        }
       =20
        var userCallback =3D context[0];
        var callback =3D userCallback ? userCallback : =
this._defaultLoadCompletedCallback;
        if(callback) {
            callback(result.length, context[2], =
"Sys.Services.ProfileService.load");
        }
    }

    function Sys$Services$_ProfileService$_onLoadFailed(err, context, =
methodName) {
        var userCallback =3D context[1];
        var callback =3D userCallback ? userCallback : =
this._defaultFailedCallback;
        if(callback) {
            callback(err, context[2], =
"Sys.Services.ProfileService.load");
        }
    }

    function Sys$Services$_ProfileService$_onSaveComplete(result, =
context, methodName) {
        if(typeof(result) !=3D=3D "number") {
            throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
 methodName, "Number"));
        }
       =20
        var userCallback =3D context[0];
        var userContext =3D context[2];
        var callback =3D userCallback ? userCallback : =
this._defaultSaveCompletedCallback;
        if(callback) {
            callback(result, userContext, =
"Sys.Services.ProfileService.save");
        }
    }

    function Sys$Services$_ProfileService$_onSaveFailed(err, context, =
methodName) {
        var userCallback =3D context[1];
        var userContext =3D context[2];
        var callback =3D userCallback ? userCallback : =
this._defaultFailedCallback;
        if(callback) {
            callback(err, userContext, =
"Sys.Services.ProfileService.save");
        }
    }

    function =
Sys$Services$_ProfileService$_unflattenProperties(properties) {
        var unflattenedProperties =3D {};
        var dotIndex;
        var val;
        var count =3D 0;
        for(var key in properties) {
            count++;
            val =3D properties[key];

            dotIndex =3D key.indexOf('.');
            if(dotIndex !=3D=3D -1) {
                var groupName =3D key.substr(0, dotIndex);
                key =3D key.substr(dotIndex+1);
                var group =3D unflattenedProperties[groupName];
                if((!group) || =
(!Sys.Services.ProfileGroup.isInstanceOfType(group))) {
                    group =3D new Sys.Services.ProfileGroup();
                    unflattenedProperties[groupName] =3D group;
                }
                group[key] =3D val;
            }
            else {
                unflattenedProperties[key] =3D val;
            }
        }
        properties.length =3D count;
        return unflattenedProperties;
    }
Sys.Services._ProfileService.prototype =3D {
    _defaultFailedCallback: null,
    _defaultLoadCompletedCallback: null,
    _defaultSaveCompletedCallback: null,
    _path: '',
    _timeout: 0,

    get_defaultFailedCallback: =
Sys$Services$_ProfileService$get_defaultFailedCallback,
    set_defaultFailedCallback: =
Sys$Services$_ProfileService$set_defaultFailedCallback,

    get_defaultLoadCompletedCallback: =
Sys$Services$_ProfileService$get_defaultLoadCompletedCallback,
    set_defaultLoadCompletedCallback: =
Sys$Services$_ProfileService$set_defaultLoadCompletedCallback,

    get_defaultSaveCompletedCallback: =
Sys$Services$_ProfileService$get_defaultSaveCompletedCallback,
    set_defaultSaveCompletedCallback: =
Sys$Services$_ProfileService$set_defaultSaveCompletedCallback,
   =20
   =20
    get_path: Sys$Services$_ProfileService$get_path,
    set_path: Sys$Services$_ProfileService$set_path,
       =20
    get_timeout: Sys$Services$_ProfileService$get_timeout,
    set_timeout: Sys$Services$_ProfileService$set_timeout,
       =20
    load: Sys$Services$_ProfileService$load,

    save: Sys$Services$_ProfileService$save,
   =20
        _clonePropertyNames: =
Sys$Services$_ProfileService$_clonePropertyNames,   =20

                    _flattenProperties: =
Sys$Services$_ProfileService$_flattenProperties,
   =20
    _get_path: Sys$Services$_ProfileService$_get_path,   =20

    _onLoadComplete: Sys$Services$_ProfileService$_onLoadComplete,
   =20
    _onLoadFailed: Sys$Services$_ProfileService$_onLoadFailed,
   =20
    _onSaveComplete: Sys$Services$_ProfileService$_onSaveComplete,
   =20
    _onSaveFailed: Sys$Services$_ProfileService$_onSaveFailed,
   =20
    _unflattenProperties: =
Sys$Services$_ProfileService$_unflattenProperties
}
Sys.Services._ProfileService.registerClass('Sys.Services._ProfileService'=
, Sys.Net.WebServiceProxy);
Sys.Services.ProfileService =3D new Sys.Services._ProfileService();

Sys.Services.ProfileGroup =3D function =
Sys$Services$ProfileGroup(properties) {
    /// <param name=3D"properties" optional=3D"true" =
mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "properties", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    if(properties) {
        for(var property in properties) {
            this[property] =3D properties[property];
        }
    }
}
Sys.Services.ProfileGroup.registerClass('Sys.Services.ProfileGroup');








Sys.Services._AuthenticationService =3D function =
Sys$Services$_AuthenticationService() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    Sys.Services._AuthenticationService.initializeBase(this);
}
Sys.Services._AuthenticationService.DefaultWebServicePath =3D '';








    function =
Sys$Services$_AuthenticationService$get_defaultFailedCallback() {
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultFailedCallback;
    }
    function =
Sys$Services$_AuthenticationService$set_defaultFailedCallback(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultFailedCallback =3D value;
    }

    function =
Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback() =
{
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultLoginCompletedCallback;
    }
    function =
Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback(val=
ue) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultLoginCompletedCallback =3D value;
    }

    function =
Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback() =
{
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultLogoutCompletedCallback;
    }
    function =
Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback(va=
lue) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultLogoutCompletedCallback =3D value;
    }

    function Sys$Services$_AuthenticationService$get_isLoggedIn() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._authenticated;
    }

    function Sys$Services$_AuthenticationService$get_path() {
        /// <value type=3D"String" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._path;
    }
    function Sys$Services$_AuthenticationService$set_path(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String, mayBeNull: true}]);
        if (e) throw e;

        if((!value) || (!value.length)) {
            value =3D '';
        }
        this._path =3D value;
    }

    function Sys$Services$_AuthenticationService$get_timeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timeout;
    }
    function Sys$Services$_AuthenticationService$set_timeout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        this._timeout =3D value;
    }

    function Sys$Services$_AuthenticationService$login(username, =
password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, =
failedCallback, userContext) {
        /// <param name=3D"username" type=3D"String" =
mayBeNull=3D"false"></param>
        /// <param name=3D"password" type=3D"String" =
mayBeNull=3D"true"></param>
        /// <param name=3D"isPersistent" type=3D"Boolean" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"customInfo" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
        /// <param name=3D"redirectUrl" type=3D"String" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"loginCompletedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"failedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"userContext" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D 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, redirectUrl, loginCompletedCallback, failedCallback, =
userContext]);
    }

    function Sys$Services$_AuthenticationService$logout(redirectUrl, =
logoutCompletedCallback, failedCallback, userContext) {
        /// <param name=3D"redirectUrl" type=3D"String" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"logoutCompletedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"failedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"userContext" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D 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, {},=20
                                        Function.createDelegate(this, =
this._onLogoutComplete),
                                        Function.createDelegate(this, =
this._onLogoutFailed),
                                        [redirectUrl, =
logoutCompletedCallback, failedCallback, userContext]);
    }

    function Sys$Services$_AuthenticationService$_get_path() {
        var path =3D this.get_path();
        if(!path.length) {
            path =3D =
Sys.Services._AuthenticationService.DefaultWebServicePath;
        }
        if(!path || !path.length) {
            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
        }
        return path;
    }

    function =
Sys$Services$_AuthenticationService$_onLoginComplete(result, context, =
methodName) {
        if(typeof(result) !=3D=3D "boolean") {
            throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
 methodName, "Boolean"));
        }
       =20
        var redirectUrl =3D context[3];
        var userCallback =3D context[4];
        var userContext =3D context[6];
        var callback =3D userCallback ? userCallback : =
this._defaultLoginCompletedCallback;
       =20
        if(result) {
            this._authenticated =3D true;

            if(callback) {
                callback(true, userContext, =
"Sys.Services.AuthenticationService.login");
            }
           =20
            if(typeof(redirectUrl) !=3D=3D "undefined" && redirectUrl =
!=3D=3D null) {
                                window.location.href =3D redirectUrl;
            }
        }
        else if (callback) {
            callback(false, userContext, =
"Sys.Services.AuthenticationService.login");
        }
    }

    function Sys$Services$_AuthenticationService$_onLoginFailed(err, =
context, methodName) {
        var userCallback =3D context[5];
        var callback =3D userCallback ? userCallback : =
this._defaultFailedCallback;
        if(callback) {
            callback(err, context[6], =
"Sys.Services.AuthenticationService.login");
        }
    }

    function =
Sys$Services$_AuthenticationService$_onLogoutComplete(result, context, =
methodName) {
        if(result !=3D=3D null) {
            throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
 methodName, "null"));
        }
       =20
        var redirectUrl =3D context[0];
        var userCallback =3D context[1];
        var userContext =3D context[3];
        var callback =3D userCallback ? userCallback : =
this._defaultLogoutCompletedCallback;

        this._authenticated =3D false;
       =20
        if (callback) {
            callback(null, userContext, =
"Sys.Services.AuthenticationService.logout");
        }
       =20
                if(!redirectUrl) {
            window.location.reload();
        }
        else {
            window.location.href =3D redirectUrl;
        }
    }

    function Sys$Services$_AuthenticationService$_onLogoutFailed(err, =
context, methodName) {
        var userCallback =3D context[2];
        var callback =3D userCallback ? userCallback : =
this._defaultFailedCallback;
        if(callback) {
            callback(err, context[3], =
"Sys.Services.AuthenticationService.logout");
        }
    }

    function =
Sys$Services$_AuthenticationService$_setAuthenticated(authenticated) {
        this._authenticated =3D authenticated;
    }
Sys.Services._AuthenticationService.prototype =3D {
    _defaultFailedCallback: null,
    _defaultLoginCompletedCallback: null,
    _defaultLogoutCompletedCallback: null,
    _path: '',
    _timeout: 0,
    _authenticated: false,
   =20
    get_defaultFailedCallback: =
Sys$Services$_AuthenticationService$get_defaultFailedCallback,
    set_defaultFailedCallback: =
Sys$Services$_AuthenticationService$set_defaultFailedCallback,

    get_defaultLoginCompletedCallback: =
Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback,
    set_defaultLoginCompletedCallback: =
Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback,

    get_defaultLogoutCompletedCallback: =
Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback,
    set_defaultLogoutCompletedCallback: =
Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback,

    get_isLoggedIn: Sys$Services$_AuthenticationService$get_isLoggedIn,

    get_path: Sys$Services$_AuthenticationService$get_path,
    set_path: Sys$Services$_AuthenticationService$set_path,
   =20
    get_timeout: Sys$Services$_AuthenticationService$get_timeout,
    set_timeout: Sys$Services$_AuthenticationService$set_timeout,   =20
   =20
    login: Sys$Services$_AuthenticationService$login,
   =20
    logout: Sys$Services$_AuthenticationService$logout,
   =20
    _get_path: Sys$Services$_AuthenticationService$_get_path,
   =20
    _onLoginComplete: =
Sys$Services$_AuthenticationService$_onLoginComplete,
   =20
    _onLoginFailed: Sys$Services$_AuthenticationService$_onLoginFailed,
   =20
    _onLogoutComplete: =
Sys$Services$_AuthenticationService$_onLogoutComplete,
   =20
    _onLogoutFailed: =
Sys$Services$_AuthenticationService$_onLogoutFailed,
   =20
    _setAuthenticated: =
Sys$Services$_AuthenticationService$_setAuthenticated   =20
}

Sys.Services._AuthenticationService.registerClass('Sys.Services._Authenti=
cationService', Sys.Net.WebServiceProxy);
Sys.Services.AuthenticationService =3D new =
Sys.Services._AuthenticationService();

Type.registerNamespace('Sys.Serialization');


Sys.Serialization.JavaScriptSerializer =3D function =
Sys$Serialization$JavaScriptSerializer() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
}
Sys.Serialization.JavaScriptSerializer.registerClass('Sys.Serialization.J=
avaScriptSerializer');

Sys.Serialization.JavaScriptSerializer._stringRegEx =3D new =
RegExp('["\b\f\n\r\t\\\\\x00-\x1F]', 'i');

Sys.Serialization.JavaScriptSerializer._serializeWithBuilder =3D =
function =
Sys$Serialization$JavaScriptSerializer$_serializeWithBuilder(object, =
stringBuilder, sort) {
    var i;
    switch (typeof object) {
    case 'object':
        if (object) {
                        if (Array.isInstanceOfType(object)) {
                stringBuilder.append('[');
                for (i =3D 0; i < object.length; ++i) {
                    if (i > 0) {
                        stringBuilder.append(',');
                    }
                    =
Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object[i], =
stringBuilder);
                }
                stringBuilder.append(']');
            }
            else {
                                                                if =
(Date.isInstanceOfType(object)) {
                    stringBuilder.append('"\\/Date(');
                    stringBuilder.append(object.getTime());
                    stringBuilder.append(')\\/"');
                    break;
                }

                var properties =3D [];
                var propertyCount =3D 0;
                for (var name in object) {
                                        if (name.startsWith('$')) {
                        continue;
                    }
                    properties[propertyCount++] =3D name;
                }
                if (sort) properties.sort();

                stringBuilder.append('{');
                var needComma =3D false;
                for (i=3D0; i<propertyCount; i++) {
                    var value =3D object[properties[i]];
                    if (typeof value !=3D=3D 'undefined' && typeof value =
!=3D=3D 'function') {
                        if (needComma) {
                            stringBuilder.append(',');
                        }
                        else {
                            needComma =3D true;
                        }

                                                =
Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(properties[i=
], stringBuilder, sort);
                        stringBuilder.append(':');
                        =
Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(value, =
stringBuilder, sort);
                    }
                }
                stringBuilder.append('}');
            }
        }
        else {
            stringBuilder.append('null');
        }
        break;

    case 'number':
        if (isFinite(object)) {
            stringBuilder.append(String(object));
        }
        else {
            throw =
Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
        }
        break;

    case 'string':
        stringBuilder.append('"');

                if (Sys.Browser.agent =3D=3D=3D Sys.Browser.Safari || =
Sys.Serialization.JavaScriptSerializer._stringRegEx.test(object)) {
            var length =3D object.length;
            for (i =3D 0; i < length; ++i) {
                var curChar =3D object.charAt(i);
                                if (curChar >=3D ' ') {
                                        if (curChar =3D=3D=3D '\\' || =
curChar =3D=3D=3D '"') {
                        stringBuilder.append('\\');
                    }
                    stringBuilder.append(curChar);
                }
                else {
                    switch (curChar) {
                        case '\b':
                            stringBuilder.append('\\b');
                            break;
                        case '\f':
                            stringBuilder.append('\\f');
                            break;
                        case '\n':
                            stringBuilder.append('\\n');
                            break;
                        case '\r':
                            stringBuilder.append('\\r');
                            break;
                        case '\t':
                            stringBuilder.append('\\t');
                            break;
                        default:
                                                        =
stringBuilder.append('\\u00');
                            if (curChar.charCodeAt() < 16) =
stringBuilder.append('0');
                            =
stringBuilder.append(curChar.charCodeAt().toString(16));
                    }
                }
            }
        } else {
            stringBuilder.append(object);
        }
        stringBuilder.append('"');
        break;

    case 'boolean':
        stringBuilder.append(object.toString());
        break;

    default:
        stringBuilder.append('null');
        break;
    }
}

Sys.Serialization.JavaScriptSerializer.serialize =3D function =
Sys$Serialization$JavaScriptSerializer$serialize(object) {
    /// <param name=3D"object" mayBeNull=3D"true"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "object", mayBeNull: true}
    ]);
    if (e) throw e;

    var stringBuilder =3D new Sys.StringBuilder();
    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, =
stringBuilder, false);
    return stringBuilder.toString();
}

Sys.Serialization.JavaScriptSerializer.deserialize =3D function =
Sys$Serialization$JavaScriptSerializer$deserialize(data) {
    /// <param name=3D"data" type=3D"String"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "data", type: String}
    ]);
    if (e) throw e;

    if (data.length =3D=3D=3D 0) throw Error.argument('data', =
Sys.Res.cannotDeserializeEmptyString);
                                                           =20
    try {   =20
        var exp =3D data.replace(new =
RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)\\)\\\\/\\"', 'g'), "$1new =
Date($2)");
        return eval('(' + exp + ')');
    }
    catch (e) {
         throw Error.argument('data', =
Sys.Res.cannotDeserializeInvalidJson);
    }
}

Sys.CultureInfo =3D function Sys$CultureInfo(name, numberFormat, =
dateTimeFormat) {
    /// <param name=3D"name" type=3D"String"></param>
    /// <param name=3D"numberFormat" type=3D"Object"></param>
    /// <param name=3D"dateTimeFormat" type=3D"Object"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "name", type: String},
        {name: "numberFormat", type: Object},
        {name: "dateTimeFormat", type: Object}
    ]);
    if (e) throw e;

    this.name =3D name;
    this.numberFormat =3D numberFormat;
    this.dateTimeFormat =3D dateTimeFormat;
}

    function Sys$CultureInfo$_getDateTimeFormats() {
        if (! this._dateTimeFormats) {
            var dtf =3D this.dateTimeFormat;
            this._dateTimeFormats =3D
              [ dtf.MonthDayPattern,
                dtf.YearMonthPattern,
                dtf.ShortDatePattern,
                dtf.ShortTimePattern,
                dtf.LongDatePattern,
                dtf.LongTimePattern,
                dtf.FullDateTimePattern,
                dtf.RFC1123Pattern,
                dtf.SortableDateTimePattern,
                dtf.UniversalSortableDateTimePattern ];
        }
        return this._dateTimeFormats;
    }
    function Sys$CultureInfo$_getMonthIndex(value) {
        if (!this._upperMonths) {
            this._upperMonths =3D =
this._toUpperArray(this.dateTimeFormat.MonthNames);
        }
        return Array.indexOf(this._upperMonths, this._toUpper(value));
    }
    function Sys$CultureInfo$_getAbbrMonthIndex(value) {
        if (!this._upperAbbrMonths) {
            this._upperAbbrMonths =3D =
this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
        }
        return Array.indexOf(this._upperMonths, this._toUpper(value));
    }
    function Sys$CultureInfo$_getDayIndex(value) {
        if (!this._upperDays) {
            this._upperDays =3D =
this._toUpperArray(this.dateTimeFormat.DayNames);
        }
        return Array.indexOf(this._upperDays, this._toUpper(value));
    }
    function Sys$CultureInfo$_getAbbrDayIndex(value) {
        if (!this._upperAbbrDays) {
            this._upperAbbrDays =3D =
this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);
        }
        return Array.indexOf(this._upperAbbrDays, this._toUpper(value));
    }
    function Sys$CultureInfo$_toUpperArray(arr) {
        var result =3D [];
        for (var i =3D 0, il =3D arr.length; i < il; i++) {
            result[i] =3D this._toUpper(arr[i]);
        }
        return result;
    }
    function Sys$CultureInfo$_toUpper(value) {
                        return value.split("\u00A0").join(' =
').toUpperCase();
    }
Sys.CultureInfo.prototype =3D {
    _getDateTimeFormats: Sys$CultureInfo$_getDateTimeFormats,
    _getMonthIndex: Sys$CultureInfo$_getMonthIndex,
    _getAbbrMonthIndex: Sys$CultureInfo$_getAbbrMonthIndex,
    _getDayIndex: Sys$CultureInfo$_getDayIndex,
    _getAbbrDayIndex: Sys$CultureInfo$_getAbbrDayIndex,
    _toUpperArray: Sys$CultureInfo$_toUpperArray,
    _toUpper: Sys$CultureInfo$_toUpper
}
Sys.CultureInfo._parse =3D function Sys$CultureInfo$_parse(value) {
    var cultureInfo =3D =
Sys.Serialization.JavaScriptSerializer.deserialize(value);
    return new Sys.CultureInfo(cultureInfo.name, =
cultureInfo.numberFormat, cultureInfo.dateTimeFormat);
}
Sys.CultureInfo.registerClass('Sys.CultureInfo');

Sys.CultureInfo.InvariantCulture =3D =
Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits=
":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes"=
:[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparat=
or":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePatt=
ern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegat=
ivePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","Nu=
mberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":=
",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","Posi=
tiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","Per=
centGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","Na=
tiveDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution"=
:1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTi=
me":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","Algor=
ithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnl=
y":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"Ful=
lDateTimePattern":"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","Sort=
ableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSepar=
ator":":","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":["Sunda=
y","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"Abbrev=
iatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","=
Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","=
May","June","July","August","September","October","November","December","=
"],"IsReadOnly":true,"NativeCalendarName":"Gregorian =
Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May",=
"Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["Janu=
ary","February","March","April","May","June","July","August","September",=
"October","November","December",""]}}');

if (typeof(__cultureInfo) =3D=3D=3D 'undefined') {
    var __cultureInfo =3D =
'{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecim=
alSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroup=
Sizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","Currency=
Symbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegative=
Pattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"Negativ=
eInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"=
NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositiveP=
attern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","Percent=
DecimalDigits":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,"CalendarT=
ype":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparat=
or":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dd=
dd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, =
yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM =
dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy =
HH\':\'mm\':\'ss =
\'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm =
tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","=
TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd=
 HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, =
yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"=
ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunda=
y","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"Abbrev=
iatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","=
Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","=
May","June","July","August","September","October","November","December","=
"],"IsReadOnly":false,"NativeCalendarName":"Gregorian =
Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May",=
"Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["Janu=
ary","February","March","April","May","June","July","August","September",=
"October","November","December",""]}}';
}
Sys.CultureInfo.CurrentCulture =3D =
Sys.CultureInfo._parse(__cultureInfo);
delete __cultureInfo;

Sys.UI.Point =3D function Sys$UI$Point(x, y) {
    /// <param name=3D"x" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"y" type=3D"Number" integer=3D"true"></param>
    /// <field name=3D"x" type=3D"Number" integer=3D"true"></field>
    /// <field name=3D"y" type=3D"Number" integer=3D"true"></field>
    var e =3D Function._validateParams(arguments, [
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true}
    ]);
    if (e) throw e;

    this.x =3D x;
    this.y =3D y;
}
Sys.UI.Point.registerClass('Sys.UI.Point');
Sys.UI.Bounds =3D function Sys$UI$Bounds(x, y, width, height) {
    /// <param name=3D"x" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"y" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"height" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"width" type=3D"Number" integer=3D"true"></param>
    /// <field name=3D"x" type=3D"Number" integer=3D"true"></field>
    /// <field name=3D"y" type=3D"Number" integer=3D"true"></field>
    /// <field name=3D"height" type=3D"Number" integer=3D"true"></field>
    /// <field name=3D"width" type=3D"Number" integer=3D"true"></field>
    var e =3D Function._validateParams(arguments, [
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true},
        {name: "height", type: Number, integer: true},
        {name: "width", type: Number, integer: true}
    ]);
    if (e) throw e;

    this.x =3D x;
    this.y =3D y;
    this.height =3D height;
    this.width =3D width;
}
Sys.UI.Bounds.registerClass('Sys.UI.Bounds');
Sys.UI.DomElement =3D function Sys$UI$DomElement() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
Sys.UI.DomElement.registerClass('Sys.UI.DomElement');

Sys.UI.DomElement.addCssClass =3D function =
Sys$UI$DomElement$addCssClass(element, className) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"className" type=3D"String"></param>
    var e =3D 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 =3D=3D=3D '') {
            element.className =3D className;
        }
        else {
            element.className +=3D ' ' + className;
        }
    }
}

Sys.UI.DomElement.containsCssClass =3D function =
Sys$UI$DomElement$containsCssClass(element, className) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"className" type=3D"String"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;

    return Array.contains(element.className.split(' '), className);
}

Sys.UI.DomElement.getBounds =3D function =
Sys$UI$DomElement$getBounds(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <returns type=3D"Sys.UI.Bounds"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    var offset =3D Sys.UI.DomElement.getLocation(element);

    return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || =
0, element.offsetHeight || 0);
}

var $get =3D Sys.UI.DomElement.getElementById =3D function =
Sys$UI$DomElement$getElementById(id, element) {
    /// <param name=3D"id" type=3D"String"></param>
    /// <param name=3D"element" domElement=3D"true" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns domElement=3D"true" mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "id", type: String},
        {name: "element", mayBeNull: true, domElement: true, optional: =
true}
    ]);
    if (e) throw e;

    if (!element) return document.getElementById(id);
    if (element.getElementById) return element.getElementById(id);

        var nodeQueue =3D [];
    var childNodes =3D element.childNodes;
    for (var i =3D 0; i < childNodes.length; i++) {
        var node =3D childNodes[i];
        if (node.nodeType =3D=3D 1) {
            nodeQueue[nodeQueue.length] =3D node;
        }
    }

    while (nodeQueue.length) {
        node =3D nodeQueue.shift();
        if (node.id =3D=3D id) {
            return node;
        }
        childNodes =3D node.childNodes;
        for (i =3D 0; i < childNodes.length; i++) {
            node =3D childNodes[i];
            if (node.nodeType =3D=3D 1) {
                nodeQueue[nodeQueue.length] =3D node;
            }
        }
    }

    return null;
}



switch(Sys.Browser.agent) {
    case Sys.Browser.InternetExplorer:
        Sys.UI.DomElement.getLocation =3D function =
Sys$UI$DomElement$getLocation(element) {
            /// <param name=3D"element" domElement=3D"true"></param>
            /// <returns type=3D"Sys.UI.Point"></returns>
            var e =3D Function._validateParams(arguments, [
                {name: "element", domElement: true}
            ]);
            if (e) throw e;

                        if (element.self || element.nodeType =3D=3D=3D =
9) return new Sys.UI.Point(0,0);

                                                var clientRects =3D =
element.getClientRects();
            if (!clientRects || !clientRects.length) {
                return new Sys.UI.Point(0,0);
            }

            var w =3D element.ownerDocument.parentWindow;
                                                var offsetL =3D =
w.screenLeft - top.screenLeft - top.document.documentElement.scrollLeft =
+ 2;
            var offsetT =3D w.screenTop - top.screenTop - =
top.document.documentElement.scrollTop + 2;

                                                                        =
var f =3D w.frameElement || null;
            if (f) {
                                                                         =
       var fstyle =3D f.currentStyle;
                offsetL +=3D (f.frameBorder || 1) * 2 +
                    (parseInt(fstyle.paddingLeft) || 0) +
                    (parseInt(fstyle.borderLeftWidth) || 0) -
                    element.ownerDocument.documentElement.scrollLeft;
                offsetT +=3D (f.frameBorder || 1) * 2 +
                    (parseInt(fstyle.paddingTop) || 0) +
                    (parseInt(fstyle.borderTopWidth) || 0) -
                    element.ownerDocument.documentElement.scrollTop;
            }

            var clientRect =3D clientRects[0];

            return new Sys.UI.Point(
                clientRect.left - offsetL,
                clientRect.top - offsetT);
        }
        break;
    case Sys.Browser.Safari:
        Sys.UI.DomElement.getLocation =3D function =
Sys$UI$DomElement$getLocation(element) {
            /// <param name=3D"element" domElement=3D"true"></param>
            /// <returns type=3D"Sys.UI.Point"></returns>
            var e =3D Function._validateParams(arguments, [
                {name: "element", domElement: true}
            ]);
            if (e) throw e;

                        if ((element.window && (element.window =3D=3D=3D =
element)) || element.nodeType =3D=3D=3D 9) return new Sys.UI.Point(0,0);

                                                var offsetX =3D 0;
            var offsetY =3D 0;

            var previous =3D null;
            var previousStyle =3D null;
            var currentStyle;
            for (var parent =3D element; parent; previous =3D parent, =
previousStyle =3D currentStyle, parent =3D parent.offsetParent) {
                currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(parent);
                var tagName =3D parent.tagName;

                                                                         =
       if ((parent.offsetLeft || parent.offsetTop) &&
                    ((tagName !=3D=3D "BODY") || (!previousStyle || =
previousStyle.position !=3D=3D "absolute"))) {

                    offsetX +=3D parent.offsetLeft;
                    offsetY +=3D parent.offsetTop;
                }
            }

            currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(element);
            var elementPosition =3D currentStyle ? currentStyle.position =
: null;
            var elementPositioned =3D elementPosition && =
(elementPosition !=3D=3D "static");
                        if (!elementPosition || (elementPosition !=3D=3D =
"absolute")) {
                                for (var parent =3D element.parentNode; =
parent; parent =3D parent.parentNode) {
                    tagName =3D parent.tagName;

                    if ((tagName !=3D=3D "BODY") && (tagName !=3D=3D =
"HTML") && (parent.scrollLeft || parent.scrollTop)) {
                        offsetX -=3D (parent.scrollLeft || 0);
                        offsetY -=3D (parent.scrollTop || 0);
                    }
                    currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(parent);
                    var parentPosition =3D currentStyle ? =
currentStyle.position : null;

                                        if (parentPosition && =
(parentPosition =3D=3D=3D "absolute")) break;
                }
            }

            return new Sys.UI.Point(offsetX, offsetY);
        }
        break;
    case Sys.Browser.Opera:
        Sys.UI.DomElement.getLocation =3D function =
Sys$UI$DomElement$getLocation(element) {
            /// <param name=3D"element" domElement=3D"true"></param>
            /// <returns type=3D"Sys.UI.Point"></returns>
            var e =3D Function._validateParams(arguments, [
                {name: "element", domElement: true}
            ]);
            if (e) throw e;

                        if ((element.window && (element.window =3D=3D=3D =
element)) || element.nodeType =3D=3D=3D 9) return new Sys.UI.Point(0,0);

                                                var offsetX =3D 0;
            var offsetY =3D 0;

            var previous =3D null;
            for (var parent =3D element; parent; previous =3D parent, =
parent =3D parent.offsetParent) {

                var tagName =3D parent.tagName;

                offsetX +=3D parent.offsetLeft || 0;
                offsetY +=3D parent.offsetTop || 0;
            }

                        var elementPosition =3D element.style.position;
            var elementPositioned =3D elementPosition && =
(elementPosition !=3D=3D "static");

                        for (var parent =3D element.parentNode; parent; =
parent =3D parent.parentNode) {
                tagName =3D parent.tagName;

                if ((tagName !=3D=3D "BODY") && (tagName !=3D=3D "HTML") =
&& (parent.scrollLeft || parent.scrollTop) &&
                    ((elementPositioned &&
                    ((parent.style.overflow =3D=3D=3D "scroll") || =
(parent.style.overflow =3D=3D=3D "auto"))))) {
                                       =20
                    offsetX -=3D (parent.scrollLeft || 0);
                    offsetY -=3D (parent.scrollTop || 0);
                }
                var parentPosition =3D (parent && parent.style) ? =
parent.style.position : null;

                                elementPositioned =3D elementPositioned =
|| (parentPosition && (parentPosition !=3D=3D "static"));
            }


            return new Sys.UI.Point(offsetX, offsetY);
        }
        break;
    default:
        Sys.UI.DomElement.getLocation =3D function =
Sys$UI$DomElement$getLocation(element) {
            /// <param name=3D"element" domElement=3D"true"></param>
            /// <returns type=3D"Sys.UI.Point"></returns>
            var e =3D Function._validateParams(arguments, [
                {name: "element", domElement: true}
            ]);
            if (e) throw e;

                        if ((element.window && (element.window =3D=3D=3D =
element)) || element.nodeType =3D=3D=3D 9) return new Sys.UI.Point(0,0);

            var offsetX =3D 0;
            var offsetY =3D 0;
            var previous =3D null;
            var previousStyle =3D null;
            var currentStyle =3D null;
            for (var parent =3D element; parent; previous =3D parent, =
previousStyle =3D currentStyle, parent =3D parent.offsetParent) {
                var tagName =3D parent.tagName;
                currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(parent);

                                                if ((parent.offsetLeft =
|| parent.offsetTop) &&
                    !((tagName =3D=3D=3D "BODY") &&
                    (!previousStyle || previousStyle.position !=3D=3D =
"absolute"))) {

                    offsetX +=3D parent.offsetLeft;
                    offsetY +=3D parent.offsetTop;
                }

                                                if (previous !=3D=3D =
null && currentStyle) {
                                                                         =
                                                                   if =
((tagName !=3D=3D "TABLE") && (tagName !=3D=3D "TD") && (tagName !=3D=3D =
"HTML")) {
                        offsetX +=3D =
parseInt(currentStyle.borderLeftWidth) || 0;
                        offsetY +=3D =
parseInt(currentStyle.borderTopWidth) || 0;
                    }
                    if (tagName =3D=3D=3D "TABLE" &&
                        (currentStyle.position =3D=3D=3D "relative" || =
currentStyle.position =3D=3D=3D "absolute")) {
                        offsetX +=3D parseInt(currentStyle.marginLeft) =
|| 0;
                        offsetY +=3D parseInt(currentStyle.marginTop) || =
0;
                    }
                }
            }

            currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(element);
            var elementPosition =3D currentStyle ? currentStyle.position =
: null;
            var elementPositioned =3D elementPosition && =
(elementPosition !=3D=3D "static");
                        if (!elementPosition || (elementPosition !=3D=3D =
"absolute")) {
                                                                         =
       for (var parent =3D element.parentNode; parent; parent =3D =
parent.parentNode) {
                                                                         =
       tagName =3D parent.tagName;

                    if ((tagName !=3D=3D "BODY") && (tagName !=3D=3D =
"HTML") && (parent.scrollLeft || parent.scrollTop)) {

                        offsetX -=3D (parent.scrollLeft || 0);
                        offsetY -=3D (parent.scrollTop || 0);

                        currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(parent);
                        offsetX +=3D =
parseInt(currentStyle.borderLeftWidth) || 0;
                        offsetY +=3D =
parseInt(currentStyle.borderTopWidth) || 0;
                    }
                }
            }

            return new Sys.UI.Point(offsetX, offsetY);
        }
        break;

}


Sys.UI.DomElement.removeCssClass =3D function =
Sys$UI$DomElement$removeCssClass(element, className) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"className" type=3D"String"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;

    var currentClassName =3D ' ' + element.className + ' ';
    var index =3D currentClassName.indexOf(' ' + className + ' ');
    if (index >=3D 0) {
        element.className =3D (currentClassName.substr(0, index) + ' ' +
            currentClassName.substring(index + className.length + 1, =
currentClassName.length)).trim();
    }
}

Sys.UI.DomElement.setLocation =3D function =
Sys$UI$DomElement$setLocation(element, x, y) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"x" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"y" type=3D"Number" integer=3D"true"></param>
    var e =3D 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 =3D element.style;
    style.position =3D 'absolute';
    style.left =3D x + "px";
    style.top =3D y + "px";
}

Sys.UI.DomElement.toggleCssClass =3D function =
Sys$UI$DomElement$toggleCssClass(element, className) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"className" type=3D"String"></param>
    var e =3D 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);
    }
}

Sys.UI.DomElement._getCurrentStyle =3D function =
Sys$UI$DomElement$_getCurrentStyle(element) {
    var w =3D (element.ownerDocument ? element.ownerDocument : =
element.documentElement).defaultView;
    return ((w && (element !=3D=3D w) && w.getComputedStyle) ? =
w.getComputedStyle(element, null) : element.style);
}
Sys.UI.Behavior =3D function Sys$UI$Behavior(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    Sys.UI.Behavior.initializeBase(this);

    this._element =3D element;

    var behaviors =3D element._behaviors;
    if (!behaviors) {
        element._behaviors =3D [this];
    }
    else {
        behaviors[behaviors.length] =3D this;
    }
}


    function Sys$UI$Behavior$get_element() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._element;
    }
    function Sys$UI$Behavior$get_id() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        var baseId =3D Sys.UI.Behavior.callBaseMethod(this, 'get_id');
        if (baseId) return baseId;
        if (!this._element || !this._element.id) return '';
        return this._element.id + '$' + this.get_name();
    }
    function Sys$UI$Behavior$get_name() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._name) return this._name;
        var name =3D Object.getTypeName(this);
        var i =3D name.lastIndexOf('.');
        if (i !=3D -1) name =3D name.substr(i + 1);
        if (!this.get_isInitialized()) this._name =3D name;
        return name;
    }
    function Sys$UI$Behavior$set_name(value) {
        if ((value =3D=3D=3D '') || (value.charAt(0) =3D=3D=3D ' ') || =
(value.charAt(value.length - 1) =3D=3D=3D ' '))
            throw Error.argument('value', Sys.Res.invalidId);
        if (typeof(this._element[value]) !=3D=3D 'undefined')
            throw =
Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, =
value));
        if (this.get_isInitialized()) throw =
Error.invalidOperation(Sys.Res.cantSetNameAfterInit);
        this._name =3D value;
    }
    function Sys$UI$Behavior$initialize() {
        Sys.UI.Behavior.callBaseMethod(this, 'initialize');
        var name =3D this.get_name();
        if (name) this._element[name] =3D this;
    }
    function Sys$UI$Behavior$dispose() {
        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
        if (this._element) {
            var name =3D this.get_name();
            if (name) {
                this._element[name] =3D null;
            }
            Array.remove(this._element._behaviors, this);
            delete this._element;
        }
    }
Sys.UI.Behavior.prototype =3D {
    _name: null,
    get_element: Sys$UI$Behavior$get_element,
    get_id: Sys$UI$Behavior$get_id,
    get_name: Sys$UI$Behavior$get_name,
    set_name: Sys$UI$Behavior$set_name,
    initialize: Sys$UI$Behavior$initialize,
    dispose: Sys$UI$Behavior$dispose
}
Sys.UI.Behavior.registerClass('Sys.UI.Behavior', Sys.Component);

Sys.UI.Behavior.getBehaviorByName =3D function =
Sys$UI$Behavior$getBehaviorByName(element, name) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"name" type=3D"String"></param>
    /// <returns type=3D"Sys.UI.Behavior" mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "name", type: String}
    ]);
    if (e) throw e;

    var b =3D element[name];
    return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null;
}

Sys.UI.Behavior.getBehaviors =3D function =
Sys$UI$Behavior$getBehaviors(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <returns type=3D"Array" =
elementType=3D"Sys.UI.Behavior"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    if (!element._behaviors) return [];
    return Array.clone(element._behaviors);
}

Sys.UI.Behavior.getBehaviorsByType =3D function =
Sys$UI$Behavior$getBehaviorsByType(element, type) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"type" type=3D"Type"></param>
    /// <returns type=3D"Array" =
elementType=3D"Sys.UI.Behavior"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "type", type: Type}
    ]);
    if (e) throw e;

    var behaviors =3D element._behaviors;
    var results =3D [];
    if (behaviors) {
        for (var i =3D 0, l =3D behaviors.length; i < l; i++) {
            if (type.isInstanceOfType(behaviors[i])) {
                results[results.length] =3D behaviors[i];
            }
        }
    }
    return results;
}
Sys.UI.VisibilityMode =3D function Sys$UI$VisibilityMode() {
    /// <field name=3D"hide" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"collapse" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}



Sys.UI.VisibilityMode.prototype =3D {
    hide: 0,
    collapse: 1
}
Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");

Sys.UI.Control =3D function Sys$UI$Control(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    if (typeof(element.control) !=3D 'undefined') throw =
Error.invalidOperation(Sys.Res.controlAlreadyDefined);
    Sys.UI.Control.initializeBase(this);

    this._element =3D element;
    element.control =3D this;

    this._oldDisplayMode =3D this._element.style.display;
    if (!this._oldDisplayMode || (this._oldDisplayMode =3D=3D 'none')) {
        this._oldDisplayMode =3D '';
    }
}




    function Sys$UI$Control$get_element() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._element;
    }
    function Sys$UI$Control$get_id() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (!this._element) return '';
        return this._element.id;
    }
    function Sys$UI$Control$set_id(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        throw Error.invalidOperation(Sys.Res.cantSetId);
    }
    function Sys$UI$Control$get_parent() {
        /// <value type=3D"Sys.UI.Control"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._parent) {
            return this._parent;
        }
        else {
            var parentElement =3D this._element.parentNode;
            while (parentElement) {
                if (parentElement.control) {
                    return parentElement.control;
                }
                parentElement =3D parentElement.parentNode;
            }
            return null;
        }
    }
    function Sys$UI$Control$set_parent(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Sys.UI.Control}]);
        if (e) throw e;

        var parents =3D [this];
        var current =3D value;
        while (current) {
            if (Array.contains(parents, current)) throw =
Error.invalidOperation(Sys.Res.circularParentChain);
            parents[parents.length] =3D current;
            current =3D current.get_parent();
        }
        this._parent =3D value;
    }
    function Sys$UI$Control$get_visibilityMode() {
        /// <value type=3D"Sys.UI.VisibilityMode"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._visibilityMode;
    }
    function Sys$UI$Control$set_visibilityMode(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Sys.UI.VisibilityMode}]);
        if (e) throw e;

        if (this._visibilityMode !=3D=3D value) {
            this._visibilityMode =3D value;
            if (this.get_visible() =3D=3D=3D false) {
                if (this._visibilityMode =3D=3D=3D =
Sys.UI.VisibilityMode.hide) {
                    this._element.style.display =3D =
this._oldDisplayMode;
                }
                else {
                    this._element.style.display =3D 'none';
                }
            }
        }
        this._visibilityMode =3D value;
    }
    function Sys$UI$Control$get_visible() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return (this._element.style.visibility !=3D 'hidden');
    }
    function Sys$UI$Control$set_visible(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Boolean}]);
        if (e) throw e;

        if (value !=3D this.get_visible()) {
            this._element.style.visibility =3D value ? 'visible' : =
'hidden';
            if (value || (this._visibilityMode =3D=3D=3D =
Sys.UI.VisibilityMode.hide)) {
                this._element.style.display =3D this._oldDisplayMode;
            }
            else {
                this._element.style.display =3D 'none';
            }
        }
    }
    function Sys$UI$Control$addCssClass(className) {
        /// <param name=3D"className" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;

        Sys.UI.DomElement.addCssClass(this._element, className);
    }
    function Sys$UI$Control$dispose() {
        Sys.UI.Control.callBaseMethod(this, 'dispose');
        if (this._element) {
            this._element.control =3D undefined;
            delete this._element;
        }
    }
    function Sys$UI$Control$initialize() {
        Sys.UI.Control.callBaseMethod(this, 'initialize');
        var elt =3D this._element;
    }
    function Sys$UI$Control$onBubbleEvent(source, args) {
        /// <param name=3D"source"></param>
        /// <param name=3D"args" type=3D"Sys.EventArgs"></param>
        /// <returns type=3D"Boolean"></returns>
        var e =3D Function._validateParams(arguments, [
            {name: "source"},
            {name: "args", type: Sys.EventArgs}
        ]);
        if (e) throw e;

        return false;
    }
    function Sys$UI$Control$raiseBubbleEvent(source, args) {
        /// <param name=3D"source"></param>
        /// <param name=3D"args" type=3D"Sys.EventArgs"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "source"},
            {name: "args", type: Sys.EventArgs}
        ]);
        if (e) throw e;

        var currentTarget =3D this.get_parent();
        while (currentTarget) {
            if (currentTarget.onBubbleEvent(source, args)) {
                return;
            }
            currentTarget =3D currentTarget.get_parent();
        }
    }
    function Sys$UI$Control$removeCssClass(className) {
        /// <param name=3D"className" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;

        Sys.UI.DomElement.removeCssClass(this._element, className);
    }
    function Sys$UI$Control$toggleCssClass(className) {
        /// <param name=3D"className" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;

        Sys.UI.DomElement.toggleCssClass(this._element, className);
    }
Sys.UI.Control.prototype =3D {
    _parent: null,
    _visibilityMode: Sys.UI.VisibilityMode.hide,

    get_element: Sys$UI$Control$get_element,
    get_id: Sys$UI$Control$get_id,
    set_id: Sys$UI$Control$set_id,
    get_parent: Sys$UI$Control$get_parent,
    set_parent: Sys$UI$Control$set_parent,
    get_visibilityMode: Sys$UI$Control$get_visibilityMode,
    set_visibilityMode: Sys$UI$Control$set_visibilityMode,
    get_visible: Sys$UI$Control$get_visible,
    set_visible: Sys$UI$Control$set_visible,
    addCssClass: Sys$UI$Control$addCssClass,
    dispose: Sys$UI$Control$dispose,
    initialize: Sys$UI$Control$initialize,
    onBubbleEvent: Sys$UI$Control$onBubbleEvent,
    raiseBubbleEvent: Sys$UI$Control$raiseBubbleEvent,
    removeCssClass: Sys$UI$Control$removeCssClass,
    toggleCssClass: Sys$UI$Control$toggleCssClass
}
Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component);

Type.registerNamespace('Sys');
Sys.Res=3D{
"argumentTypeName":"Value is not the name of an existing type.",
"methodRegisteredTwice":"Method {0} has already been registered.",
"cantSetIdAfterInit":"The id property can\u0027t be set on this object =
after initialization.",
"componentCantSetIdAfterAddedToApp":"The id property of a component =
can\u0027t be set after it\u0027s been added to the Application =
object.",
"behaviorDuplicateName":"A behavior with name \u0027{0}\u0027 already =
exists or it is the name of an existing property on the target =
element.",
"notATypeName":"Value is not a valid type name.",
"typeShouldBeTypeOrString":"Value is not a valid type or a valid type =
name.",
"boolTrueOrFalse":"Value must be \u0027true\u0027 or =
\u0027false\u0027.",
"stringFormatInvalid":"The format string is invalid.",
"referenceNotFound":"Component \u0027{0}\u0027 was not found.",
"enumReservedName":"\u0027{0}\u0027 is a reserved name that can\u0027t =
be used as an enum value name.",
"eventHandlerNotFound":"Handler not found.",
"circularParentChain":"The chain of control parents can\u0027t have =
circular references.",
"undefinedEvent":"\u0027{0}\u0027 is not an event.",
"notAMethod":"{0} is not a method.",
"propertyUndefined":"\u0027{0}\u0027 is not a property or an existing =
field.",
"eventHandlerInvalid":"Handler was not added through the =
Sys.UI.DomEvent.addHandler method.",
"scriptLoadFailedDebug":"The script \u0027{0}\u0027 failed to load. =
Check for:\r\n Inaccessible path.\r\n Script errors. (IE) Enable =
\u0027Display a notification about every script error\u0027 under =
advanced settings.\r\n Missing call to =
Sys.Application.notifyScriptLoaded().",
"propertyNotWritable":"\u0027{0}\u0027 is not a writable property.",
"enumInvalidValueName":"\u0027{0}\u0027 is not a valid name for an enum =
value.",
"controlAlreadyDefined":"A control is already associated with the =
element.",
"namespaceContainsObject":"Object {0} already exists and is not a =
namespace.",
"cantAddNonFunctionhandler":"Can\u0027t add a handler that is not a =
function.",
"scriptLoaderAlreadyLoading":"ScriptLoader.loadScripts cannot be called =
while the ScriptLoader is already loading scripts.",
"invalidNameSpace":"Value is not a valid namespace identifier.",
"notAnInterface":"Value is not a valid interface.",
"eventHandlerNotFunction":"Handler must be a function.",
"propertyNotAnArray":"\u0027{0}\u0027 is not an Array property.",
"typeRegisteredTwice":"Type {0} has already been registered.",
"cantSetNameAfterInit":"The name property can\u0027t be set on this =
object after initialization.",
"appDuplicateComponent":"Two components with the same id \u0027{0}\u0027 =
can\u0027t be added to the application.",
"appComponentMustBeInitialized":"Components must be initialized before =
they are added to the Application object.",
"baseNotAClass":"Value is not a class.",
"methodNotFound":"No method found with name \u0027{0}\u0027.",
"arrayParseBadFormat":"Value must be a valid string representation for =
an array. It must start with a \u0027[\u0027 and end with a =
\u0027]\u0027.",
"cantSetId":"The id property can\u0027t be set on this object.",
"stringFormatBraceMismatch":"The format string contains an unmatched =
opening or closing brace.",
"enumValueNotInteger":"An enumeration definition can only contain =
integer values.",
"propertyNullOrUndefined":"Cannot set the properties of \u0027{0}\u0027 =
because it returned a null value.",
"componentCantSetIdTwice":"The id property of a component can\u0027t be =
set more than once.",
"createComponentOnDom":"Value must be null for Components that are not =
Controls or Behaviors.",
"createNotComponent":"{0} does not derive from Sys.Component.",
"createNoDom":"Value must not be null for Controls and Behaviors.",
"cantAddWithoutId":"Can\u0027t add a component that doesn\u0027t have an =
id.",
"badTypeName":"Value is not the name of the type being registered or the =
name is a reserved word.",
"argumentInteger":"Value must be an integer.",
"scriptLoadMultipleCallbacks":"The script \u0027{0}\u0027 contains =
multiple calls to Sys.Application.notifyScriptLoaded(). Only one is =
allowed.",
"invokeCalledTwice":"Cannot call invoke more than once.",
"webServiceFailed":"The server method \u0027{0}\u0027 failed with the =
following error: {1}",
"argumentType":"Object cannot be converted to the required type.",
"argumentNull":"Value cannot be null.",
"controlCantSetId":"The id property can\u0027t be set on a control.",
"formatBadFormatSpecifier":"Format specifier was invalid.",
"webServiceFailedNoMsg":"The server method \u0027{0}\u0027 failed.",
"argumentDomElement":"Value must be a DOM element.",
"invalidExecutorType":"Could not create a valid =
Sys.Net.WebRequestExecutor from: {0}.",
"cannotCallBeforeResponse":"Cannot call {0} when responseAvailable is =
false.",
"actualValue":"Actual value was {0}.",
"enumInvalidValue":"\u0027{0}\u0027 is not a valid value for enum {1}.",
"scriptLoadFailed":"The script \u0027{0}\u0027 could not be loaded.",
"parameterCount":"Parameter count mismatch.",
"cannotDeserializeEmptyString":"Cannot deserialize empty string.",
"formatInvalidString":"Input string was not in a correct format.",
"invalidTimeout":"Value must be greater than or equal to zero.",
"cannotAbortBeforeStart":"Cannot abort when executor has not started.",
"argument":"Value does not fall within the expected range.",
"cannotDeserializeInvalidJson":"Cannot deserialize. The data does not =
correspond to valid JSON.",
"invalidHttpVerb":"httpVerb cannot be set to an empty or null string.",
"nullWebRequest":"Cannot call executeRequest with a null webRequest.",
"eventHandlerInvalid":"Handler was not added through the =
Sys.UI.DomEvent.addHandler method.",
"cannotSerializeNonFiniteNumbers":"Cannot serialize non finite =
numbers.",
"argumentUndefined":"Value cannot be undefined.",
"webServiceInvalidReturnType":"The server method \u0027{0}\u0027 =
returned an invalid type. Expected type: {1}",
"servicePathNotSet":"The path to the web service has not been set.",
"argumentTypeWithTypes":"Object of type \u0027{0}\u0027 cannot be =
converted to type \u0027{1}\u0027.",
"cannotCallOnceStarted":"Cannot call {0} once started.",
"badBaseUrl1":"Base URL does not contain ://.",
"badBaseUrl2":"Base URL does not contain another /.",
"badBaseUrl3":"Cannot find last / in base URL.",
"setExecutorAfterActive":"Cannot set executor after it has become =
active.",
"paramName":"Parameter name: {0}",
"cannotCallOutsideHandler":"Cannot call {0} outside of a completed event =
handler.",
"format":"One of the identified items was in an invalid format.",
"assertFailedCaller":"Assertion Failed: {0}\r\nat {1}",
"argumentOutOfRange":"Specified argument was out of the range of valid =
values.",
"webServiceTimedOut":"The server method \u0027{0}\u0027 timed out.",
"notImplemented":"The method or operation is not implemented.",
"assertFailed":"Assertion Failed: {0}",
"invalidOperation":"Operation is not valid due to the current state of =
the object.",
"breakIntoDebugger":"{0}\r\n\r\nBreak into debugger?"
};

if(typeof(Sys)!=3D=3D'undefined')Sys.Application.notifyScriptLoaded();
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/ScriptResource.axd?d=qXo0sjdh9Q2rdRlvYsYaFG-HgTAWbrA6UcG0APePZiYx80NeCSs50L8oiv57KklhkPExN0CUhYpSc95h4IyYVg2&t=633718480760000000

=EF=BB=BF//--------------------------------------------------------------=
---------
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------=

// MicrosoftAjaxWebForms.js
// Microsoft AJAX ASP.NET WebForms Framework.


Type.registerNamespace('Sys.WebForms');


Sys.WebForms.BeginRequestEventArgs =3D function =
Sys$WebForms$BeginRequestEventArgs(request, postBackElement) {
    /// <param name=3D"request" type=3D"Sys.Net.WebRequest"></param>
    /// <param name=3D"postBackElement" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "request", type: Sys.Net.WebRequest},
        {name: "postBackElement", domElement: true}
    ]);
    if (e) throw e;


    Sys.WebForms.BeginRequestEventArgs.initializeBase(this);
    this._request =3D request;
    this._postBackElement =3D postBackElement;
}


    function Sys$WebForms$BeginRequestEventArgs$get_postBackElement() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._postBackElement;
    }

    function Sys$WebForms$BeginRequestEventArgs$get_request() {
        /// <value type=3D"Sys.Net.WebRequest"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._request;
    }
Sys.WebForms.BeginRequestEventArgs.prototype =3D {
    get_postBackElement: =
Sys$WebForms$BeginRequestEventArgs$get_postBackElement,

    get_request: Sys$WebForms$BeginRequestEventArgs$get_request
}

Sys.WebForms.BeginRequestEventArgs.registerClass('Sys.WebForms.BeginReque=
stEventArgs', Sys.EventArgs);

Sys.WebForms.EndRequestEventArgs =3D function =
Sys$WebForms$EndRequestEventArgs(error, dataItems, response) {
    /// <param name=3D"error" type=3D"Error" mayBeNull=3D"true"></param>
    /// <param name=3D"dataItems" type=3D"Object" =
mayBeNull=3D"true"></param>
    /// <param name=3D"response" =
type=3D"Sys.Net.WebRequestExecutor"></param>
    var e =3D 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 =3D false;
    this._error =3D error;
        this._dataItems =3D dataItems || new Object();
    this._response =3D response;
}


    function Sys$WebForms$EndRequestEventArgs$get_dataItems() {
        /// <value type=3D"Object"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._dataItems;
    }

    function Sys$WebForms$EndRequestEventArgs$get_error() {
        /// <value type=3D"Error"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._error;
    }

    function Sys$WebForms$EndRequestEventArgs$get_errorHandled() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._errorHandled;
    }
    function Sys$WebForms$EndRequestEventArgs$set_errorHandled(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Boolean}]);
        if (e) throw e;

        this._errorHandled =3D value;
    }

    function Sys$WebForms$EndRequestEventArgs$get_response() {
        /// <value type=3D"Sys.Net.WebRequestExecutor"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._response;
    }
Sys.WebForms.EndRequestEventArgs.prototype =3D {
    get_dataItems: Sys$WebForms$EndRequestEventArgs$get_dataItems,

    get_error: Sys$WebForms$EndRequestEventArgs$get_error,

    get_errorHandled: Sys$WebForms$EndRequestEventArgs$get_errorHandled,
    set_errorHandled: Sys$WebForms$EndRequestEventArgs$set_errorHandled,

    get_response: Sys$WebForms$EndRequestEventArgs$get_response
}

Sys.WebForms.EndRequestEventArgs.registerClass('Sys.WebForms.EndRequestEv=
entArgs', Sys.EventArgs);

Sys.WebForms.InitializeRequestEventArgs =3D function =
Sys$WebForms$InitializeRequestEventArgs(request, postBackElement) {
    /// <param name=3D"request" type=3D"Sys.Net.WebRequest"></param>
    /// <param name=3D"postBackElement" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "request", type: Sys.Net.WebRequest},
        {name: "postBackElement", domElement: true}
    ]);
    if (e) throw e;


    Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);
    this._request =3D request;
    this._postBackElement =3D postBackElement;
}


    function =
Sys$WebForms$InitializeRequestEventArgs$get_postBackElement() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._postBackElement;
    }

    function Sys$WebForms$InitializeRequestEventArgs$get_request() {
        /// <value type=3D"Sys.Net.WebRequest"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._request;
    }
Sys.WebForms.InitializeRequestEventArgs.prototype =3D {
    get_postBackElement: =
Sys$WebForms$InitializeRequestEventArgs$get_postBackElement,

    get_request: Sys$WebForms$InitializeRequestEventArgs$get_request
}

Sys.WebForms.InitializeRequestEventArgs.registerClass('Sys.WebForms.Initi=
alizeRequestEventArgs', Sys.CancelEventArgs);

Sys.WebForms.PageLoadedEventArgs =3D function =
Sys$WebForms$PageLoadedEventArgs(panelsUpdated, panelsCreated, =
dataItems) {
    /// <param name=3D"panelsUpdated" type=3D"Array"></param>
    /// <param name=3D"panelsCreated" type=3D"Array"></param>
    /// <param name=3D"dataItems" type=3D"Object" =
mayBeNull=3D"true"></param>
    var e =3D 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 =3D panelsUpdated;
    this._panelsCreated =3D panelsCreated;
        this._dataItems =3D dataItems || new Object();
}


    function Sys$WebForms$PageLoadedEventArgs$get_dataItems() {
        /// <value type=3D"Object"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._dataItems;
    }

    function Sys$WebForms$PageLoadedEventArgs$get_panelsCreated() {
        /// <value type=3D"Array"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._panelsCreated;
    }

    function Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated() {
        /// <value type=3D"Array"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._panelsUpdated;
    }
Sys.WebForms.PageLoadedEventArgs.prototype =3D {
    get_dataItems: Sys$WebForms$PageLoadedEventArgs$get_dataItems,

    get_panelsCreated: =
Sys$WebForms$PageLoadedEventArgs$get_panelsCreated,

    get_panelsUpdated: =
Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated
}

Sys.WebForms.PageLoadedEventArgs.registerClass('Sys.WebForms.PageLoadedEv=
entArgs', Sys.EventArgs);

Sys.WebForms.PageLoadingEventArgs =3D function =
Sys$WebForms$PageLoadingEventArgs(panelsUpdating, panelsDeleting, =
dataItems) {
    /// <param name=3D"panelsUpdating" type=3D"Array"></param>
    /// <param name=3D"panelsDeleting" type=3D"Array"></param>
    /// <param name=3D"dataItems" type=3D"Object" =
mayBeNull=3D"true"></param>
    var e =3D 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 =3D panelsUpdating;
    this._panelsDeleting =3D panelsDeleting;
        this._dataItems =3D dataItems || new Object();
}


    function Sys$WebForms$PageLoadingEventArgs$get_dataItems() {
        /// <value type=3D"Object"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._dataItems;
    }

    function Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting() {
        /// <value type=3D"Array"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._panelsDeleting;
    }

    function Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating() {
        /// <value type=3D"Array"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._panelsUpdating;
    }
Sys.WebForms.PageLoadingEventArgs.prototype =3D {
    get_dataItems: Sys$WebForms$PageLoadingEventArgs$get_dataItems,

    get_panelsDeleting: =
Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting,

    get_panelsUpdating: =
Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating
}

Sys.WebForms.PageLoadingEventArgs.registerClass('Sys.WebForms.PageLoading=
EventArgs', Sys.EventArgs);
Sys.WebForms.PageRequestManager =3D function =
Sys$WebForms$PageRequestManager() {
    this._form =3D null;
    this._updatePanelIDs =3D null;
    this._updatePanelClientIDs =3D null;
    this._oldUpdatePanelIDs =3D null;
    this._childUpdatePanelIDs =3D null;
    this._panelsToRefreshIDs =3D null;
    this._updatePanelHasChildrenAsTriggers =3D null;
    this._asyncPostBackControlIDs =3D null;
    this._asyncPostBackControlClientIDs =3D null;
    this._postBackControlIDs =3D null;
    this._postBackControlClientIDs =3D null;
    this._scriptManagerID =3D null;
    this._pageLoadedHandler =3D null;

    this._additionalInput =3D null;
    this._onsubmit =3D null;
    this._onSubmitStatements =3D [];
    this._originalDoPostBack =3D null;
    this._postBackSettings =3D null;
    this._request =3D null;
    this._onFormSubmitHandler =3D null;
    this._onFormElementClickHandler =3D null;
    this._onWindowUnloadHandler =3D null;
    this._asyncPostBackTimeout =3D null;

    this._controlIDToFocus =3D null;
    this._scrollPosition =3D null;
    this._dataItems =3D null;
    this._response =3D null;
    this._processingRequest =3D false;
    this._scriptDisposes =3D {};
}



    function Sys$WebForms$PageRequestManager$_get_eventHandlerList() {
        if (!this._events) {
            this._events =3D new Sys.EventHandlerList();
        }
        return this._events;
    }

    function Sys$WebForms$PageRequestManager$get_isInAsyncPostBack() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._request !=3D=3D null;
    }


    function Sys$WebForms$PageRequestManager$add_beginRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("beginRequest", =
handler);
    }
    function =
Sys$WebForms$PageRequestManager$remove_beginRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("beginRequest", =
handler);
    }

    function Sys$WebForms$PageRequestManager$add_endRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("endRequest", handler);
    }
    function Sys$WebForms$PageRequestManager$remove_endRequest(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("endRequest", =
handler);
    }

    function =
Sys$WebForms$PageRequestManager$add_initializeRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("initializeRequest", =
handler);
    }
    function =
Sys$WebForms$PageRequestManager$remove_initializeRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("initializeRequest", =
handler);
    }

    function Sys$WebForms$PageRequestManager$add_pageLoaded(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("pageLoaded", handler);
    }
    function Sys$WebForms$PageRequestManager$remove_pageLoaded(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("pageLoaded", =
handler);
    }

    function Sys$WebForms$PageRequestManager$add_pageLoading(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("pageLoading", handler);
    }
    function Sys$WebForms$PageRequestManager$remove_pageLoading(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("pageLoading", =
handler);
    }

    function Sys$WebForms$PageRequestManager$abortPostBack() {
        if (!this._processingRequest && this._request) {
            this._request.get_executor().abort();
            this._request =3D null;
        }
    }

    function =
Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError() =
{
                var displayMessage =3D =
"Sys.WebForms.PageRequestManagerTimeoutException: " + =
Sys.WebForms.Res.PRM_TimeoutError;
        var e =3D Error.create(displayMessage, {name: =
'Sys.WebForms.PageRequestManagerTimeoutException'});
        e.popStackFrame();
        return e;
    }

    function =
Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError(http=
StatusCode, message) {
                var displayMessage =3D message || =
("Sys.WebForms.PageRequestManagerServerErrorException: " + =
String.format(Sys.WebForms.Res.PRM_ServerError, httpStatusCode));
        var e =3D Error.create(displayMessage, {
            name: 'Sys.WebForms.PageRequestManagerServerErrorException',
            httpStatusCode: httpStatusCode
        });
        e.popStackFrame();
        return e;
    }

    function =
Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError(pars=
erErrorMessage) {
                var displayMessage =3D =
"Sys.WebForms.PageRequestManagerParserErrorException: " + =
String.format(Sys.WebForms.Res.PRM_ParserError, parserErrorMessage);
        var e =3D Error.create(displayMessage, {name: =
'Sys.WebForms.PageRequestManagerParserErrorException'});
        e.popStackFrame();
        return e;
    }

    function =
Sys$WebForms$PageRequestManager$_createPostBackSettings(async, panelID, =
sourceElement) {

        return { async:async, panelID:panelID, =
sourceElement:sourceElement };
    }

    function Sys$WebForms$PageRequestManager$_convertToClientIDs(source, =
destinationIDs, destinationClientIDs) {
        if (source) {
            for (var i =3D 0; i < source.length; i++) {
                Array.add(destinationIDs, source[i]);
                Array.add(destinationClientIDs, =
this._uniqueIDToClientID(source[i]));
            }
        }
    }

    function Sys$WebForms$PageRequestManager$_decodeString(encodedValue) =
{
        return encodedValue.replace(/\\\u00FF\\/g, =
"\u0000").replace(/\u00FF\u00FF/g, "\u00FF");
    }

    function Sys$WebForms$PageRequestManager$_destroyTree(element) {
                if (element.nodeType =3D=3D=3D 1) {
                                    var childNodes =3D =
element.childNodes;
            for (var i =3D childNodes.length - 1; i >=3D 0; i--) {
                var node =3D childNodes[i];
                if (node.nodeType =3D=3D=3D 1) {
                    if (node.dispose && typeof(node.dispose) =3D=3D=3D =
"function") {
                        node.dispose();
                    }
                    else if (node.control && =
typeof(node.control.dispose) =3D=3D=3D "function") {
                        node.control.dispose();
                    }
                    var behaviors =3D =
Sys.UI.Behavior.getBehaviors(node);
                    for (var j =3D behaviors.length - 1; j >=3D 0; j--) =
{
                        behaviors[j].dispose();
                    }
                    this._destroyTree(node);
                }
            }
        }
    }

    function Sys$WebForms$PageRequestManager$dispose() {
        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 =3D this._originalDoPostBack;
            this._originalDoPostBack =3D null;
        }

        this._form =3D null;
        this._updatePanelIDs =3D null;
        this._oldUpdatePanelIDs =3D null;
        this._childUpdatePanelIDs =3D null;
        this._updatePanelClientIDs =3D null;
        this._asyncPostBackControlIDs =3D null;
        this._asyncPostBackControlClientIDs =3D null;
        this._postBackControlIDs =3D null;
        this._postBackControlClientIDs =3D null;
        this._asyncPostBackTimeout =3D null;
        this._scrollPosition =3D null;
        this._dataItems =3D null;
    }


    function Sys$WebForms$PageRequestManager$_doPostBack(eventTarget, =
eventArgument) {
        this._additionalInput =3D null;

        var form =3D this._form;
        if (form.action !=3D=3D form._initialAction) {
                                    this._postBackSettings =3D =
this._createPostBackSettings(false, null, null);
        }
        else {
                        var clientID =3D =
this._uniqueIDToClientID(eventTarget);
            var postBackElement =3D document.getElementById(clientID);
            if (!postBackElement) {
                                                                         =
       if (Array.contains(this._asyncPostBackControlIDs, eventTarget)) {
                                        this._postBackSettings =3D =
this._createPostBackSettings(true, this._scriptManagerID + '|' + =
eventTarget, null);
                }
                else {
                    if (Array.contains(this._postBackControlIDs, =
eventTarget)) {
                                                this._postBackSettings =
=3D this._createPostBackSettings(false, null, null);
                    }
                    else {
                                                                         =
                       var nearestUniqueIDMatch =3D =
this._findNearestElement(eventTarget);
                        if (nearestUniqueIDMatch) {
                                                                         =
           this._postBackSettings =3D =
this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
                        }
                        else {
                                                                         =
           this._postBackSettings =3D =
this._createPostBackSettings(false, null, null);
                        }
                    }
                }
            }
            else {
                                                this._postBackSettings =
=3D this._getPostBackSettings(postBackElement, eventTarget);
            }
        }

        if (!this._postBackSettings.async) {
                                    form.onsubmit =3D this._onsubmit;
            this._originalDoPostBack(eventTarget, eventArgument);
            form.onsubmit =3D null;
            return;
        }

        form.__EVENTTARGET.value =3D eventTarget;
        form.__EVENTARGUMENT.value =3D eventArgument;
        this._onFormSubmit();
    }

    function Sys$WebForms$PageRequestManager$_elementContains(container, =
element) {
        while (element) {
            if (element =3D=3D=3D container) {
                return true;
            }
            element =3D element.parentNode;
        }
        return false;
    }

    function Sys$WebForms$PageRequestManager$_endPostBack(error, =
response) {
        this._processingRequest =3D false;

        this._request =3D null;
        this._additionalInput =3D null;

        var handler =3D =
this._get_eventHandlerList().getHandler("endRequest");
        var errorHandled =3D false;
        if (handler) {
            var eventArgs =3D new =
Sys.WebForms.EndRequestEventArgs(error, this._dataItems, response);
            handler(this, eventArgs);
            errorHandled =3D eventArgs.get_errorHandled();
        }
        this._dataItems =3D null;
        if (error && !errorHandled) {
            alert(error.message);
        }
    }



    function =
Sys$WebForms$PageRequestManager$_findNearestElement(uniqueID) {
        while (uniqueID.length > 0) {
            var clientID =3D this._uniqueIDToClientID(uniqueID);
            var element =3D document.getElementById(clientID);
            if (element) {
                return element;
            }
            var indexOfLastDollar =3D uniqueID.lastIndexOf('$');
            if (indexOfLastDollar =3D=3D=3D -1) {
                return null;
            }
            uniqueID =3D uniqueID.substring(0, indexOfLastDollar);
        }
        return null;
    }

    function Sys$WebForms$PageRequestManager$_findText(text, location) {
        var startIndex =3D Math.max(0, location - 20);
        var endIndex =3D Math.min(text.length, location + 20);
        return text.substring(startIndex, endIndex);
    }

    function =
Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs(initialLoad) {
                                                                         =
                                                              =20
        var updated =3D [];
        var created =3D [];

                var oldIDs =3D this._oldUpdatePanelIDs || [];         =
var newIDs =3D this._updatePanelIDs;         var childIDs =3D =
this._childUpdatePanelIDs || [];         var refreshedIDs =3D =
this._panelsToRefreshIDs || [];=20
                for (var i =3D 0; i < refreshedIDs.length; i++) {
            Array.add(updated, =
document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
        }

                        for (var i =3D 0; i < newIDs.length; i++) {
            if (initialLoad || Array.indexOf(childIDs, newIDs[i]) =
!=3D=3D -1) {
                Array.add(created, =
document.getElementById(this._uniqueIDToClientID(newIDs[i])));
            }
        }

        return new Sys.WebForms.PageLoadedEventArgs(updated, created, =
this._dataItems);
    }

    function Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs() =
{
                                                                         =
                                                              =20
        var updated =3D [];
        var deleted =3D [];

        var oldIDs =3D this._oldUpdatePanelIDs;
        var newIDs =3D this._updatePanelIDs;
        var childIDs =3D this._childUpdatePanelIDs;
        var refreshedIDs =3D this._panelsToRefreshIDs;

                for (var i =3D 0; i < refreshedIDs.length; i++) {
            Array.add(updated, =
document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
        }

                for (var i =3D 0; i < oldIDs.length; i++) {
            if (Array.indexOf(refreshedIDs, oldIDs[i]) =3D=3D=3D -1 &&
                (Array.indexOf(newIDs, oldIDs[i]) =3D=3D=3D -1 || =
Array.indexOf(childIDs, oldIDs[i]) > -1)) {
                Array.add(deleted, =
document.getElementById(this._uniqueIDToClientID(oldIDs[i])));
            }
        }

        return new Sys.WebForms.PageLoadingEventArgs(updated, deleted, =
this._dataItems);
    }

    function =
Sys$WebForms$PageRequestManager$_getPostBackSettings(element, =
elementUniqueID) {


        var originalElement =3D element;

                        var proposedSettings =3D null;

                        while (element) {
            if (element.id) {
                                if (!proposedSettings && =
Array.contains(this._asyncPostBackControlClientIDs, element.id)) {
                                        proposedSettings =3D =
this._createPostBackSettings(true, this._scriptManagerID + '|' + =
elementUniqueID, originalElement);
                }
                else {
                    if (!proposedSettings && =
Array.contains(this._postBackControlClientIDs, element.id)) {
                                                return =
this._createPostBackSettings(false, null, null);
                    }
                    else {
                        var indexOfPanel =3D =
Array.indexOf(this._updatePanelClientIDs, element.id);
                        if (indexOfPanel !=3D=3D -1) {
                                                        if =
(this._updatePanelHasChildrenAsTriggers[indexOfPanel]) {
                                                               =20
                                                                         =
                                                       return =
this._createPostBackSettings(true, this._updatePanelIDs[indexOfPanel] + =
'|' + elementUniqueID, originalElement);
                            }
                            else {
                                                                         =
                       return this._createPostBackSettings(true, =
this._scriptManagerID + '|' + elementUniqueID, originalElement);
                            }
                        }
                    }
                }

                                if (!proposedSettings && =
this._matchesParentIDInList(element.id, =
this._asyncPostBackControlClientIDs)) {
                                        proposedSettings =3D =
this._createPostBackSettings(true, this._scriptManagerID + '|' + =
elementUniqueID, originalElement);
                }
                else {
                    if (!proposedSettings && =
this._matchesParentIDInList(element.id, this._postBackControlClientIDs)) =
{
                                                return =
this._createPostBackSettings(false, null, null);
                    }
                }
            }

            element =3D element.parentNode;
        }

                                                if (!proposedSettings) {
                        return this._createPostBackSettings(false, null, =
null);
        }
        else {
            return proposedSettings;
        }
    }

    function Sys$WebForms$PageRequestManager$_getScrollPosition() {
        var d =3D document.documentElement;
        if (d && (this._validPosition(d.scrollLeft) || =
this._validPosition(d.scrollTop))) {
            return {
                x: d.scrollLeft,
                y: d.scrollTop
            };
        }
        else {
            d =3D 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
                    };
                }
            }
        }
    }

    function =
Sys$WebForms$PageRequestManager$_initializeInternal(scriptManagerID, =
formElement) {
        this._scriptManagerID =3D scriptManagerID;

        this._form =3D formElement;

       =20
                this._form._initialAction =3D this._form.action;

        this._onsubmit =3D this._form.onsubmit;
        this._form.onsubmit =3D null;
        this._onFormSubmitHandler =3D Function.createDelegate(this, =
this._onFormSubmit);
        this._onFormElementClickHandler =3D =
Function.createDelegate(this, this._onFormElementClick);
        this._onWindowUnloadHandler =3D 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 =3D window.__doPostBack;
                if (this._originalDoPostBack) {
            window.__doPostBack =3D Function.createDelegate(this, =
this._doPostBack);
        }

        this._pageLoadedHandler =3D Function.createDelegate(this, =
this._pageLoadedInitialLoad);
        Sys.UI.DomEvent.addHandler(window, 'load', =
this._pageLoadedHandler);
    }

    function =
Sys$WebForms$PageRequestManager$_matchesParentIDInList(clientID, =
parentIDList) {
        for (var i =3D 0; i < parentIDList.length; i++) {
            if (clientID.startsWith(parentIDList[i] + "_")) {
                return true;
            }
        }
        return false;
    }

    function Sys$WebForms$PageRequestManager$_onFormElementClick(evt) {
        var element =3D evt.target;
        if (element.disabled) {
            return;
        }

                this._postBackSettings =3D =
this._getPostBackSettings(element, element.name);


        if (element.name) {
            if (element.tagName =3D=3D=3D 'INPUT') {
                var type =3D element.type;
                if (type =3D=3D=3D 'submit') {
                    this._additionalInput =3D element.name + '=3D' + =
encodeURIComponent(element.value);
                }
                else if (type =3D=3D=3D 'image') {
                    var x =3D evt.offsetX;
                    var y =3D evt.offsetY;
                    this._additionalInput =3D element.name + '.x=3D' + x =
+ '&' + element.name + '.y=3D' + y;
                }
            }
            else if ((element.tagName =3D=3D=3D 'BUTTON') && =
(element.name.length !=3D=3D 0) && (element.type =3D=3D=3D 'submit')) {
                this._additionalInput =3D element.name + '=3D' + =
encodeURIComponent(element.value);
            }
        }
    }

    function Sys$WebForms$PageRequestManager$_onFormSubmit(evt) {
        var continueSubmit =3D true;

                if (this._onsubmit) {
            continueSubmit =3D this._onsubmit();
        }

                if (continueSubmit) {
            for (var i =3D 0; i < this._onSubmitStatements.length; i++) =
{
                if (!this._onSubmitStatements[i]()) {
                    continueSubmit =3D false;
                    break;
                }
            }
        }

        if (!continueSubmit) {
            if (evt) {
                evt.preventDefault();
            }
            return;
        }

        var form =3D this._form;
        if (form.action !=3D=3D form._initialAction) {
                                    return;
        }

                        if (!this._postBackSettings.async) {
            return;
        }

                var formBody =3D new Sys.StringBuilder();
        formBody.append(this._scriptManagerID + '=3D' + =
this._postBackSettings.panelID + '&');

        var count =3D form.elements.length;
        for (var i =3D 0; i < count; i++) {
            var element =3D form.elements[i];
            var name =3D element.name;
            if (typeof(name) =3D=3D=3D "undefined" || (name =3D=3D=3D =
null) || (name.length =3D=3D=3D 0)) {
                continue;
            }

            var tagName =3D element.tagName;

            if (tagName =3D=3D=3D 'INPUT') {
                var type =3D element.type;
                if ((type =3D=3D=3D 'text') ||
                    (type =3D=3D=3D 'password') ||
                    (type =3D=3D=3D 'hidden') ||
                    (((type =3D=3D=3D 'checkbox') || (type =3D=3D=3D =
'radio')) && element.checked)) {
                    formBody.append(name);
                    formBody.append('=3D');
                    formBody.append(encodeURIComponent(element.value));
                    formBody.append('&');
                }
            }
            else if (tagName =3D=3D=3D 'SELECT') {
                var optionCount =3D element.options.length;
                for (var j =3D 0; j < optionCount; j++) {
                    var option =3D element.options[j];
                    if (option.selected) {
                        formBody.append(name);
                        formBody.append('=3D');
                        =
formBody.append(encodeURIComponent(option.value));
                        formBody.append('&');
                    }
                }
            }
            else if (tagName =3D=3D=3D 'TEXTAREA') {
                formBody.append(name);
                formBody.append('=3D');
                formBody.append(encodeURIComponent(element.value));
                formBody.append('&');
            }
        }

        if (this._additionalInput) {
            formBody.append(this._additionalInput);
            this._additionalInput =3D null;
        }

        var request =3D new Sys.Net.WebRequest();
        request.set_url(form.action);
        request.get_headers()['X-MicrosoftAjax'] =3D 'Delta=3Dtrue';
        request.get_headers()['Cache-Control'] =3D 'no-cache';
        request.set_timeout(this._asyncPostBackTimeout);
        request.add_completed(Function.createDelegate(this, =
this._onFormSubmitCompleted));
        request.set_body(formBody.toString());

        var handler =3D =
this._get_eventHandlerList().getHandler("initializeRequest");
        if (handler) {
            var eventArgs =3D new =
Sys.WebForms.InitializeRequestEventArgs(request, =
this._postBackSettings.sourceElement);
            handler(this, eventArgs);
            continueSubmit =3D !eventArgs.get_cancel();
        }

        if (!continueSubmit) {
            if (evt) {
                evt.preventDefault();
            }
            return;
        }

                this._scrollPosition =3D this._getScrollPosition();


                                this.abortPostBack();

        handler =3D =
this._get_eventHandlerList().getHandler("beginRequest");
        if (handler) {
            var eventArgs =3D new =
Sys.WebForms.BeginRequestEventArgs(request, =
this._postBackSettings.sourceElement);
            handler(this, eventArgs);
        }

        this._request =3D request;
        request.invoke();

                if (evt) {
            evt.preventDefault();
        }
    }

    function =
Sys$WebForms$PageRequestManager$_onFormSubmitCompleted(sender, =
eventArgs) {
        this._processingRequest =3D true;

        var delimitByLengthDelimiter =3D '|';
       =20
        if (sender.get_timedOut()) {
            =
this._endPostBack(this._createPageRequestManagerTimeoutError(), sender);
            return;
        }

        if (sender.get_aborted()) {
            this._endPostBack(null, sender);
            return;
        }

                if (!this._request || sender.get_webRequest() !=3D=3D =
this._request) {
            return;
        }

        var errorMessage;
        var delta =3D [];

                if (sender.get_statusCode() !=3D=3D 200) {
            =
this._endPostBack(this._createPageRequestManagerServerError(sender.get_st=
atusCode()), sender);
            return;
        }

                        var reply =3D sender.get_responseData();
        var delimiterIndex, len, type, id, content;
        var replyIndex =3D 0;
        var parserErrorDetails =3D null;

        while (replyIndex < reply.length) {
                        delimiterIndex =3D =
reply.indexOf(delimitByLengthDelimiter, replyIndex);
            if (delimiterIndex =3D=3D=3D -1) {
                parserErrorDetails =3D this._findText(reply, =
replyIndex);
                break;
            }
            len =3D parseInt(reply.substring(replyIndex, =
delimiterIndex), 10);
            if ((len % 1) !=3D=3D 0) {
                parserErrorDetails =3D this._findText(reply, =
replyIndex);
                break;
            }
            replyIndex =3D delimiterIndex + 1;

                        delimiterIndex =3D =
reply.indexOf(delimitByLengthDelimiter, replyIndex);
            if (delimiterIndex =3D=3D=3D -1) {
                parserErrorDetails =3D this._findText(reply, =
replyIndex);
                break;
            }
            type =3D reply.substring(replyIndex, delimiterIndex);
            replyIndex =3D delimiterIndex + 1;

                        delimiterIndex =3D =
reply.indexOf(delimitByLengthDelimiter, replyIndex);
            if (delimiterIndex =3D=3D=3D -1) {
                parserErrorDetails =3D this._findText(reply, =
replyIndex);
                break;
            }
            id =3D reply.substring(replyIndex, delimiterIndex);
            replyIndex =3D delimiterIndex + 1;

                        if ((replyIndex + len) >=3D reply.length) {
                parserErrorDetails =3D this._findText(reply, =
reply.length);
                break;
            }
            content =3D this._decodeString(reply.substr(replyIndex, =
len));
            replyIndex +=3D len;

                        if (reply.charAt(replyIndex) !=3D=3D =
delimitByLengthDelimiter) {
                parserErrorDetails =3D 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)), sender);
            return;
        }


        var updatePanelNodes =3D [];
        var hiddenFieldNodes =3D [];
        var arrayDeclarationNodes =3D [];
        var scriptBlockNodes =3D [];
        var expandoNodes =3D [];
        var onSubmitNodes =3D [];
        var dataItemNodes =3D [];
        var dataItemJsonNodes =3D [];
        var scriptDisposeNodes =3D [];
        var asyncPostBackControlIDsNode, postBackControlIDsNode,
            updatePanelIDsNode, asyncPostBackTimeoutNode,
            childUpdatePanelIDsNode, panelsToRefreshNode, =
formActionNode;

                for (var i =3D 0; i < delta.length; i++) {
            var deltaNode =3D delta[i];
            switch (deltaNode.type) {
                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 "expando":
                    Array.add(expandoNodes, deltaNode);
                    break;
                case "onSubmit":
                    Array.add(onSubmitNodes, deltaNode);
                    break;
                case "asyncPostBackControlIDs":
                    asyncPostBackControlIDsNode =3D deltaNode;
                    break;
                case "postBackControlIDs":
                    postBackControlIDsNode =3D deltaNode;
                    break;
                case "updatePanelIDs":
                    updatePanelIDsNode =3D deltaNode;
                    break;
                case "asyncPostBackTimeout":
                    asyncPostBackTimeoutNode =3D deltaNode;
                    break;
                case "childUpdatePanelIDs":
                    childUpdatePanelIDsNode =3D deltaNode;
                    break;
                case "panelsToRefreshIDs":
                    panelsToRefreshNode =3D deltaNode;
                    break;
                case "formAction":
                    formActionNode =3D 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":
                    window.location.href =3D deltaNode.content;
                    return;
                case "error":
                                        =
this._endPostBack(this._createPageRequestManagerServerError(Number.parseI=
nvariant(deltaNode.id), deltaNode.content), sender);
                    return;
                case "pageTitle":
                    document.title =3D deltaNode.content;
                    break;
                case "focus":
                    this._controlIDToFocus =3D deltaNode.content;
                    break;
                default:
                                        =
this._endPostBack(this._createPageRequestManagerParserError(String.format=
(Sys.WebForms.Res.PRM_UnknownToken, deltaNode.type)), sender);
                    return;
            }
        }

        var i;

                if (asyncPostBackControlIDsNode && =
postBackControlIDsNode &&
            updatePanelIDsNode && panelsToRefreshNode &&
            asyncPostBackTimeoutNode && childUpdatePanelIDsNode) {

            this._oldUpdatePanelIDs =3D this._updatePanelIDs;
            var childUpdatePanelIDsString =3D =
childUpdatePanelIDsNode.content;
            this._childUpdatePanelIDs =3D =
childUpdatePanelIDsString.length ? childUpdatePanelIDsString.split(',') =
: [];

            var asyncPostBackControlIDsArray =3D =
this._splitNodeIntoArray(asyncPostBackControlIDsNode);
            var postBackControlIDsArray =3D =
this._splitNodeIntoArray(postBackControlIDsNode);
            var updatePanelIDsArray =3D =
this._splitNodeIntoArray(updatePanelIDsNode);
            this._panelsToRefreshIDs =3D =
this._splitNodeIntoArray(panelsToRefreshNode);

                                                for (i =3D 0; i < =
this._panelsToRefreshIDs.length; i++) {
                var panelClientID =3D =
this._uniqueIDToClientID(this._panelsToRefreshIDs[i]);
                if (!document.getElementById(panelClientID)) {
                    =
this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.P=
RM_MissingPanel, panelClientID)), sender);
                    return;
                }
            }

            var asyncPostBackTimeout =3D =
asyncPostBackTimeoutNode.content;
            this._updateControls(updatePanelIDsArray, =
asyncPostBackControlIDsArray, postBackControlIDsArray, =
asyncPostBackTimeout);
        }

                this._dataItems =3D {};
        for (i =3D 0; i < dataItemNodes.length; i++) {
            var dataItemNode =3D dataItemNodes[i];
            this._dataItems[dataItemNode.id] =3D dataItemNode.content;
        }
        for (i =3D 0; i < dataItemJsonNodes.length; i++) {
            var dataItemJsonNode =3D dataItemJsonNodes[i];
            this._dataItems[dataItemJsonNode.id] =3D =
eval(dataItemJsonNode.content);
        }


        var handler =3D =
this._get_eventHandlerList().getHandler("pageLoading");
        if (handler) {
            handler(this, this._getPageLoadingEventArgs());
        }


                if (formActionNode) {
            this._form.action =3D formActionNode.content;
                                                =
this._form._initialAction =3D this._form.action;
        }

                                for (i =3D 0; i < =
updatePanelNodes.length; i++) {
            var deltaUpdatePanel =3D updatePanelNodes[i];

            var deltaPanelID =3D deltaUpdatePanel.id;
            var deltaPanelRendering =3D deltaUpdatePanel.content;

            var updatePanelElement =3D =
document.getElementById(deltaPanelID);

            if (!updatePanelElement) {
                =
this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.P=
RM_MissingPanel, deltaPanelID)), sender);
                return;
            }

            this._updatePanel(updatePanelElement, deltaPanelRendering);
        }

                                for (i =3D 0; i < =
scriptDisposeNodes.length; i++) {
            var disposePanelId =3D scriptDisposeNodes[i].id;
            var disposeScript =3D scriptDisposeNodes[i].content;
            this._registerDisposeScript(disposePanelId, disposeScript);
        }

                for (i =3D 0; i < hiddenFieldNodes.length; i++) {
            var id =3D hiddenFieldNodes[i].id;
            var value =3D hiddenFieldNodes[i].content;

            var hiddenFieldElement =3D document.getElementById(id);
            if (!hiddenFieldElement) {
                                hiddenFieldElement =3D =
document.createElement('input');
                hiddenFieldElement.id =3D id;
                hiddenFieldElement.name =3D id;
                hiddenFieldElement.type =3D 'hidden';
                this._form.appendChild(hiddenFieldElement);
            }
            hiddenFieldElement.value =3D value;
        }

                var arrayScript =3D '';
        for (i =3D 0; i < arrayDeclarationNodes.length; i++) {
            arrayScript +=3D =
"Sys.WebForms.PageRequestManager._addArrayElement('" + =
arrayDeclarationNodes[i].id + "', " + arrayDeclarationNodes[i].content + =
");\r\n";
        }

                var expandoScript =3D '';
        for (i =3D 0; i < expandoNodes.length; i++) {
            var propertyReference =3D expandoNodes[i].id;
            var propertyValue =3D expandoNodes[i].content;
            expandoScript +=3D propertyReference + " =3D " + =
propertyValue + "\r\n";
        }

                        Sys._ScriptLoader.readLoadedScripts();

                                Sys.Application.beginCreateComponents();

        var scriptLoader =3D Sys._ScriptLoader.getInstance();

                                        if (arrayScript.length) {
            scriptLoader.queueScriptBlock(arrayScript);
        }
        if (expandoScript.length) {
            scriptLoader.queueScriptBlock(expandoScript);
        }

        for (i =3D 0; i < scriptBlockNodes.length; i++) {
            var scriptBlockType =3D scriptBlockNodes[i].id;
            switch (scriptBlockType) {
                case "ScriptContentNoTags":
                                        =
scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);
                    break;
                case "ScriptContentWithTags":
                                        var scriptTagAttributes;
                    eval("scriptTagAttributes =3D " + =
scriptBlockNodes[i].content);

                                        if (scriptTagAttributes.src && =
Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src)) {
                        continue;
                    }

                    =
scriptLoader.queueCustomScriptTag(scriptTagAttributes);
                    break;
                case "ScriptPath":
                                        if =
(Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content)) {
                        continue;
                    }

                                        =
scriptLoader.queueScriptReference(scriptBlockNodes[i].content);
                    break;
            }
        }

                        var onSubmitStatementScript =3D '';
        for (var i =3D 0; i < onSubmitNodes.length; i++) {
            if (i =3D=3D=3D 0) {
                onSubmitStatementScript =3D =
'Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStateme=
nts, function() {\r\n';
            }

            onSubmitStatementScript +=3D onSubmitNodes[i].content + =
"\r\n";
        }
        if (onSubmitStatementScript.length) {
            onSubmitStatementScript +=3D "\r\nreturn true;\r\n});\r\n";
            scriptLoader.queueScriptBlock(onSubmitStatementScript);
        }

                this._response =3D sender;

                        scriptLoader.loadScripts(0, =
Function.createDelegate(this, this._scriptsLoadComplete), null, null);

                    }

    function Sys$WebForms$PageRequestManager$_onWindowUnload(evt) {
        this.dispose();
    }

    function Sys$WebForms$PageRequestManager$_pageLoaded(initialLoad) {
        var handler =3D =
this._get_eventHandlerList().getHandler("pageLoaded");
        if (handler) {
            handler(this, this._getPageLoadedEventArgs(initialLoad));
        }
        if (!initialLoad) {
                                    Sys.Application.raiseLoad();
        }
    }

    function Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad(evt) =
{
        this._pageLoaded(true);
    }

    function =
Sys$WebForms$PageRequestManager$_registerDisposeScript(panelID, =
disposeScript) {
        if (!this._scriptDisposes[panelID]) {
            this._scriptDisposes[panelID] =3D [disposeScript];
        }
        else {
            Array.add(this._scriptDisposes[panelID], disposeScript);
        }
    }

    function Sys$WebForms$PageRequestManager$_scriptsLoadComplete() {
                       =20
                                                if =
(window.__theFormPostData) {
            window.__theFormPostData =3D "";
        }
        if (window.__theFormPostCollection) {
            window.__theFormPostCollection =3D [];
        }
        if (window.WebForm_InitCallback) {
            window.WebForm_InitCallback();
        }

                if (this._scrollPosition) {
                        if (window.scrollTo) {
                window.scrollTo(this._scrollPosition.x, =
this._scrollPosition.y);
            }
            this._scrollPosition =3D null;
        }

        Sys.Application.endCreateComponents();

                this._pageLoaded(false);

        this._endPostBack(null, this._response);
        this._response =3D null;

                if (this._controlIDToFocus) {
            var focusTarget;
            var oldContentEditableSetting;
            if (Sys.Browser.agent =3D=3D=3D =
Sys.Browser.InternetExplorer) {
                                                                         =
       var targetControl =3D $get(this._controlIDToFocus);

                var focusTarget =3D targetControl;
                                if (targetControl && =
(!WebForm_CanFocus(targetControl))) {
                    focusTarget =3D =
WebForm_FindFirstFocusableChild(targetControl);
                }
                                                if (focusTarget && =
(typeof(focusTarget.contentEditable) !=3D=3D "undefined")) {
                    oldContentEditableSetting =3D =
focusTarget.contentEditable;
                    focusTarget.contentEditable =3D false;
                }
                else {
                    focusTarget =3D null;
                }
            }
            WebForm_AutoFocus(this._controlIDToFocus);
            if (focusTarget) {
                                focusTarget.contentEditable =3D =
oldContentEditableSetting;
            }
            this._controlIDToFocus =3D null;
        }
    }

    function Sys$WebForms$PageRequestManager$_splitNodeIntoArray(node) {
        var str =3D node.content;
        var arr =3D str.length ? str.split(',') : [];
        return arr;
    }

    function =
Sys$WebForms$PageRequestManager$_uniqueIDToClientID(uniqueID) {
                return uniqueID.replace(/\$/g, '_');
    }

    function =
Sys$WebForms$PageRequestManager$_updateControls(updatePanelIDs, =
asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout) {
        if (updatePanelIDs) {
                                                this._updatePanelIDs =3D =
new Array(updatePanelIDs.length);
            this._updatePanelClientIDs =3D new =
Array(updatePanelIDs.length);
            this._updatePanelHasChildrenAsTriggers =3D new =
Array(updatePanelIDs.length);
            for (var i =3D 0; i < updatePanelIDs.length; i++) {
                var realPanelID =3D updatePanelIDs[i].substr(1);
                var childrenAsTriggers =3D (updatePanelIDs[i].charAt(0) =
=3D=3D=3D 't');

                                =
this._updatePanelHasChildrenAsTriggers[i] =3D childrenAsTriggers;
                this._updatePanelIDs[i] =3D realPanelID;
                this._updatePanelClientIDs[i] =3D =
this._uniqueIDToClientID(realPanelID);
            }
            this._asyncPostBackTimeout =3D asyncPostBackTimeout * 1000;
        }
        else {
            this._updatePanelIDs =3D [];
            this._updatePanelClientIDs =3D [];
            this._updatePanelHasChildrenAsTriggers =3D [];
            this._asyncPostBackTimeout =3D 0;
        }

        this._asyncPostBackControlIDs =3D [];
        this._asyncPostBackControlClientIDs =3D [];
        this._convertToClientIDs(asyncPostBackControlIDs, =
this._asyncPostBackControlIDs, this._asyncPostBackControlClientIDs);

        this._postBackControlIDs =3D [];
        this._postBackControlClientIDs =3D [];
        this._convertToClientIDs(postBackControlIDs, =
this._postBackControlIDs, this._postBackControlClientIDs);
    }

    function =
Sys$WebForms$PageRequestManager$_updatePanel(updatePanelElement, =
rendering) {

        for (var updatePanelID in this._scriptDisposes) {
            if (this._elementContains(updatePanelElement, =
document.getElementById(updatePanelID))) {
                                var disposeScripts =3D =
this._scriptDisposes[updatePanelID];
                for (var i =3D 0; i < disposeScripts.length; i++) {
                    eval(disposeScripts[i]);
                }

                                delete =
this._scriptDisposes[updatePanelID];
            }
        }

        this._destroyTree(updatePanelElement);

                updatePanelElement.innerHTML =3D rendering;
    }

    function Sys$WebForms$PageRequestManager$_validPosition(position) {
        return (typeof(position) !=3D=3D "undefined") && (position =
!=3D=3D null) && (position !=3D=3D 0);
    }
Sys.WebForms.PageRequestManager.prototype =3D {

    _get_eventHandlerList: =
Sys$WebForms$PageRequestManager$_get_eventHandlerList,

    get_isInAsyncPostBack: =
Sys$WebForms$PageRequestManager$get_isInAsyncPostBack,

        add_beginRequest: =
Sys$WebForms$PageRequestManager$add_beginRequest,
    remove_beginRequest: =
Sys$WebForms$PageRequestManager$remove_beginRequest,

    add_endRequest: Sys$WebForms$PageRequestManager$add_endRequest,
    remove_endRequest: =
Sys$WebForms$PageRequestManager$remove_endRequest,

    add_initializeRequest: =
Sys$WebForms$PageRequestManager$add_initializeRequest,
    remove_initializeRequest: =
Sys$WebForms$PageRequestManager$remove_initializeRequest,

    add_pageLoaded: Sys$WebForms$PageRequestManager$add_pageLoaded,
    remove_pageLoaded: =
Sys$WebForms$PageRequestManager$remove_pageLoaded,

    add_pageLoading: Sys$WebForms$PageRequestManager$add_pageLoading,
    remove_pageLoading: =
Sys$WebForms$PageRequestManager$remove_pageLoading,

    abortPostBack: Sys$WebForms$PageRequestManager$abortPostBack,

    _createPageRequestManagerTimeoutError: =
Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError,

    _createPageRequestManagerServerError: =
Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError,

    _createPageRequestManagerParserError: =
Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError,

    _createPostBackSettings: =
Sys$WebForms$PageRequestManager$_createPostBackSettings,

    _convertToClientIDs: =
Sys$WebForms$PageRequestManager$_convertToClientIDs,

    _decodeString: Sys$WebForms$PageRequestManager$_decodeString,

    _destroyTree: Sys$WebForms$PageRequestManager$_destroyTree,

    dispose: Sys$WebForms$PageRequestManager$dispose,

        _doPostBack: Sys$WebForms$PageRequestManager$_doPostBack,

    _elementContains: Sys$WebForms$PageRequestManager$_elementContains,

    _endPostBack: Sys$WebForms$PageRequestManager$_endPostBack,

            _findNearestElement: =
Sys$WebForms$PageRequestManager$_findNearestElement,

    _findText: Sys$WebForms$PageRequestManager$_findText,

    _getPageLoadedEventArgs: =
Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs,

    _getPageLoadingEventArgs: =
Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs,

    _getPostBackSettings: =
Sys$WebForms$PageRequestManager$_getPostBackSettings,

    _getScrollPosition: =
Sys$WebForms$PageRequestManager$_getScrollPosition,

    _initializeInternal: =
Sys$WebForms$PageRequestManager$_initializeInternal,

    _matchesParentIDInList: =
Sys$WebForms$PageRequestManager$_matchesParentIDInList,

    _onFormElementClick: =
Sys$WebForms$PageRequestManager$_onFormElementClick,

    _onFormSubmit: Sys$WebForms$PageRequestManager$_onFormSubmit,

    _onFormSubmitCompleted: =
Sys$WebForms$PageRequestManager$_onFormSubmitCompleted,

    _onWindowUnload: Sys$WebForms$PageRequestManager$_onWindowUnload,

    _pageLoaded: Sys$WebForms$PageRequestManager$_pageLoaded,

    _pageLoadedInitialLoad: =
Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad,

    _registerDisposeScript: =
Sys$WebForms$PageRequestManager$_registerDisposeScript,

    _scriptsLoadComplete: =
Sys$WebForms$PageRequestManager$_scriptsLoadComplete,

    _splitNodeIntoArray: =
Sys$WebForms$PageRequestManager$_splitNodeIntoArray,

    _uniqueIDToClientID: =
Sys$WebForms$PageRequestManager$_uniqueIDToClientID,

    _updateControls: Sys$WebForms$PageRequestManager$_updateControls,

    _updatePanel: Sys$WebForms$PageRequestManager$_updatePanel,

    _validPosition: Sys$WebForms$PageRequestManager$_validPosition
}

Sys.WebForms.PageRequestManager.getInstance =3D function =
Sys$WebForms$PageRequestManager$getInstance() {
    /// <returns type=3D"Sys.WebForms.PageRequestManager"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return Sys.WebForms.PageRequestManager._instance || null;
}

Sys.WebForms.PageRequestManager._addArrayElement =3D function =
Sys$WebForms$PageRequestManager$_addArrayElement(arrayName, arrayValue) =
{
    if (typeof(window[arrayName]) =3D=3D=3D "undefined") {
                window[arrayName] =3D [ arrayValue ];
    }
    else {
                Array.add(window[arrayName], arrayValue);
    }
}

Sys.WebForms.PageRequestManager._initialize =3D function =
Sys$WebForms$PageRequestManager$_initialize(scriptManagerID, =
formElement) {
    if (Sys.WebForms.PageRequestManager.getInstance()) {
        throw =
Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
    }
    Sys.WebForms.PageRequestManager._instance =3D new =
Sys.WebForms.PageRequestManager();
    =
Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(scriptM=
anagerID, formElement);
}

Sys.WebForms.PageRequestManager.registerClass('Sys.WebForms.PageRequestMa=
nager');
Sys.UI._UpdateProgress =3D function Sys$UI$_UpdateProgress(element) {
    Sys.UI._UpdateProgress.initializeBase(this,[element]);
    this._displayAfter =3D 500;
    this._dynamicLayout =3D true;
    this._associatedUpdatePanelId =3D null;
    this._beginRequestHandlerDelegate =3D null;
    this._startDelegate =3D null;
    this._endRequestHandlerDelegate =3D null;
    this._pageRequestManager =3D null;
    this._timerCookie =3D null;
}

    function Sys$UI$_UpdateProgress$get_displayAfter() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._displayAfter;
    }
    function Sys$UI$_UpdateProgress$set_displayAfter(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        this._displayAfter =3D value;
    }
    function Sys$UI$_UpdateProgress$get_dynamicLayout() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._dynamicLayout;
    }
    function Sys$UI$_UpdateProgress$set_dynamicLayout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Boolean}]);
        if (e) throw e;

        this._dynamicLayout =3D value;
    }
    function Sys$UI$_UpdateProgress$get_associatedUpdatePanelId() {
        /// <value type=3D"String" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._associatedUpdatePanelId;
    }
    function Sys$UI$_UpdateProgress$set_associatedUpdatePanelId(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String, mayBeNull: true}]);
        if (e) throw e;

        this._associatedUpdatePanelId =3D value;
    }
    function Sys$UI$_UpdateProgress$_handleBeginRequest(sender, arg) {
        var curElem =3D arg.get_postBackElement();
        var showProgress =3D !this._associatedUpdatePanelId;=20
        while (!showProgress && curElem) {
            if (curElem.id && this._associatedUpdatePanelId =3D=3D=3D =
curElem.id) {
                showProgress =3D true;=20
            }
            curElem =3D curElem.parentNode;=20
        }=20
        if (showProgress) {
            this._timerCookie =3D window.setTimeout(this._startDelegate, =
this._displayAfter);
        }
    }
    function Sys$UI$_UpdateProgress$_startRequest() {
        if (this._pageRequestManager.get_isInAsyncPostBack()) {
            if (this._dynamicLayout) this.get_element().style.display =
=3D 'block';
            else this.get_element().style.visibility =3D 'visible';
        }
        this._timerCookie =3D null;
    }
    function Sys$UI$_UpdateProgress$_handleEndRequest(sender, arg) {
        if (this._dynamicLayout) this.get_element().style.display =3D =
'none';
        else this.get_element().style.visibility =3D 'hidden';
        if (this._timerCookie) {
            window.clearTimeout(this._timerCookie);
            this._timerCookie =3D null;
        }
    }
    function Sys$UI$_UpdateProgress$dispose() {
       if (this._pageRequestManager !=3D=3D null) {
           =
this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDel=
egate);
           =
this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegat=
e);
       }
       Sys.UI._UpdateProgress.callBaseMethod(this,"dispose");
    }
    function Sys$UI$_UpdateProgress$initialize() {
        Sys.UI._UpdateProgress.callBaseMethod(this, 'initialize');
    	this._beginRequestHandlerDelegate =3D Function.createDelegate(this, =
this._handleBeginRequest);
    	this._endRequestHandlerDelegate =3D Function.createDelegate(this, =
this._handleEndRequest);
    	this._startDelegate =3D Function.createDelegate(this, =
this._startRequest);
    	if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
           this._pageRequestManager =3D =
Sys.WebForms.PageRequestManager.getInstance();
    	}
    	if (this._pageRequestManager !=3D=3D null ) {
               	    =
this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelega=
te);
    	    =
this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);=

    	}
    }
Sys.UI._UpdateProgress.prototype =3D {
    get_displayAfter: Sys$UI$_UpdateProgress$get_displayAfter,
    set_displayAfter: Sys$UI$_UpdateProgress$set_displayAfter,
    get_dynamicLayout: Sys$UI$_UpdateProgress$get_dynamicLayout,
    set_dynamicLayout: Sys$UI$_UpdateProgress$set_dynamicLayout,
    get_associatedUpdatePanelId: =
Sys$UI$_UpdateProgress$get_associatedUpdatePanelId,
    set_associatedUpdatePanelId: =
Sys$UI$_UpdateProgress$set_associatedUpdatePanelId,
    _handleBeginRequest: Sys$UI$_UpdateProgress$_handleBeginRequest,
    _startRequest: Sys$UI$_UpdateProgress$_startRequest,
    _handleEndRequest: Sys$UI$_UpdateProgress$_handleEndRequest,
    dispose: Sys$UI$_UpdateProgress$dispose,
    initialize: Sys$UI$_UpdateProgress$initialize
}
Sys.UI._UpdateProgress.registerClass('Sys.UI._UpdateProgress', =
Sys.UI.Control);

Type.registerNamespace('Sys.WebForms');
Sys.WebForms.Res=3D{
"PRM_MissingPanel":"Could not find UpdatePanel with ID \u0027{0}\u0027. =
If it is being updated dynamically then it must be inside another =
UpdatePanel.",
"PRM_ServerError":"An unknown error occurred while processing the =
request on the server. The status code returned from the server was: =
{0}",
"PRM_ParserError":"The message received from the server could not be =
parsed.",
"PRM_TimeoutError":"The server request timed out.",
"PRM_CannotRegisterTwice":"The PageRequestManager cannot be initialized =
more than once.",
"PRM_UnknownToken":"Unknown token: \u0027{0}\u0027.",
"PRM_MissingPanel":"Could not find UpdatePanel with ID \u0027{0}\u0027. =
If it is being updated dynamically then it must be inside another =
UpdatePanel.",
"PRM_ServerError":"An unknown error occurred while processing the =
request on the server. The status code returned from the server was: =
{0}",
"PRM_ParserError":"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.\r\nDetails: {0}",
"PRM_TimeoutError":"The server request timed out.",
"PRM_ParserErrorDetails":"Error parsing near \u0027{0}\u0027.",
"PRM_CannotRegisterTwice":"The PageRequestManager cannot be initialized =
more than once."
};

if(typeof(Sys)!=3D=3D'undefined')Sys.Application.notifyScriptLoaded();
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_00EF_01CA15CF.5B6AF430"


------=_NextPart_001_00EF_01CA15CF.5B6AF430
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/article/132249

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD =
id=3Dctl00_Head1><TITLE>newsdurhamregion.com | Got the summer job =
blues?</TITLE>
<META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type>
<META name=3Ddescription=20
content=3D"Durham Region News - Ajax, Brock, Clarington, Durham, =
Education, Oshawa, Pickering, Scugog, Uxbridge, Whitby and surrounding =
areas.">
<META name=3Dkeywords=20
content=3D"durham region,ontario,canada,durham news, durham =
newspaper,oshawa newspaper,oshawa this week,whitby this week,ajax =
pickering news advertiser,Oshawa Whitby Ajax Pickering Bowmanville =
Clarington Scugog Uxbridge">
<META name=3Dcopyright=20
content=3D"Copyright =C2=A9 2008 durhamregion.com, all rights =
reserved.">
<META name=3Dauthor content=3Dnewsdurhamregion.com>
<META name=3Dlocation content=3D"Durham Region, Ontario, Canada"><LINK=20
rel=3DStylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/css/NewsDurham/main.css"><LINK =
rel=3DStylesheet=20
type=3Dtext/css =
href=3D"http://newsdurhamregion.com/css/NewsDurham/search.css"><LINK=20
rel=3DStylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/css/NewsDurham/mmVideoWidget.css"><LI=
NK=20
rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/plugins/gasPrices/assets/gas_styles.c=
ss"><LINK=20
rel=3D"shortcut icon" type=3Dimage/x-icon=20
href=3D"/App_Themes/NewsDurham/images/favicon2.ico">
<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/js/newsDurham/master.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/js/swfobject.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/js/prototype.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/js/scriptaculous.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/js/functions.js"></SCRIPT>
<!--[if lt IE 7]><script type=3D"text/javascript" =
src=3D"/js/unitpngfix.js"></script><![endif]-->
<SCRIPT type=3Dtext/javascript>
        ord=3DMath.random()*10000000000000000;
    </SCRIPT>

<SCRIPT language=3Djavascript type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/topletsresources/news/phototoplet/js/P=
hotoToplet.js"></SCRIPT>
<LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/TopletsResources/news/Polling/css/sty=
le.css"><LINK=20
rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/TopletsResources/news/Polling/css/sty=
le.css"><LINK=20
rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/TopletsResources/news/Polling/css/sty=
le.css"><LINK=20
rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/TopletsResources/news/Polling/css/sty=
le.css">
<SCRIPT language=3Djavascript type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/js/Common/prototype.js"></SCRIPT>

<SCRIPT language=3Djavascript type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/js/async.js"></SCRIPT>

<SCRIPT language=3Djavascript type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/TopletsResources/js/common.js"></SCRIP=
T>
<LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/TopletsResources/news/Polling/css/sty=
le.css">
<SCRIPT language=3Djavascript type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/TopletsResources/Login/js/LoginWindow.=
js"></SCRIPT>
<LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/TopletsResources/Login/css/AjaxLogin.=
css">
<SCRIPT language=3Djavascript type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/TopletsResources/Login/js/RegisterUser=
Window.js"></SCRIPT>

<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18813"></HEAD>
<BODY>
<FORM id=3DaspnetForm onsubmit=3D"javascript:return WebForm_OnSubmit();" =
method=3Dpost=20
name=3DaspnetForm action=3D/article/132249>
<DIV><INPUT id=3D__EVENTTARGET type=3Dhidden name=3D__EVENTTARGET> =
<INPUT=20
id=3D__EVENTARGUMENT type=3Dhidden name=3D__EVENTARGUMENT> <INPUT =
id=3D__VIEWSTATE=20
value=3D/wEPDwUJODYwMTE1MDA0ZBgCBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X=
18WAgUkY3RsMDAkTG9naW5XaW5kb3cxJExvZ2luMSRSZW1lbWJlck1lBSpjdGwwMCRMb2dpbl=
dpbmRvdzEkTG9naW4xJExvZ2luSW1hZ2VCdXR0b24FX2N0bDAwJG1haW5Db250ZW50JGFydGl=
jbGVfQm9keSRUZW1wbGF0ZTAkVXNlclJhdGluZ0NvbW1lbnRzMSR1c2VyQ29tbWVudHNMYXll=
ciRVc2VyQ29tbWVudHNHcmlkDzwrAAoCBhUBAklECAL/////D2Q=3D=20
type=3Dhidden name=3D__VIEWSTATE> </DIV>
<SCRIPT type=3Dtext/javascript>
//<![CDATA[
var theForm =3D document.forms['aspnetForm'];
if (!theForm) {
    theForm =3D document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() !=3D false)) {
        theForm.__EVENTTARGET.value =3D eventTarget;
        theForm.__EVENTARGUMENT.value =3D eventArgument;
        theForm.submit();
    }
}
//]]>
</SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/WebResource.axd?d=3DLnvhgTo-96yyUSYl08=
MQFg2&amp;t=3D633595190073246099"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/ScriptResource.axd?d=3D5FZOCDHh-hTyLb0=
ukVQZ-NihGLvasPffK9p8rnrXvVad0fEqTIJ2JHhgUwLh0AOJ1HaBoI5n4wxbN5lqXx3L2w2&=
amp;t=3D633595190073246099"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/ScriptResource.axd?d=3Drysaw5isGn_qBUQ=
_yY87Cq0eim1BPYPSkloLDnlBsZgLqt9z9IRG0FfNybvcBPig0&amp;t=3D63371848076000=
0000"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/ScriptResource.axd?d=3Drysaw5isGn_qBUQ=
_yY87Cq0eim1BPYPSkloLDnlBsZhHuvW2Pd2jnRrp8npkpNmOMi93z04MSOksT-foii7M0A2&=
amp;t=3D633718480760000000"></SCRIPT>

<SCRIPT type=3Dtext/javascript>
//<![CDATA[
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) =3D=3D "function" && ValidatorOnSubmit() =
=3D=3D false) return false;
return true;
}
//]]>
</SCRIPT>

<SCRIPT type=3Dtext/javascript>
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$ScriptManager1', =
document.getElementById('aspnetForm'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls([], [], =
[], 90);
//]]>
</SCRIPT>
<!-- SiteCatalyst code version: H.10.
Copyright 1997-2006 Omniture, Inc. More info available at
http://www.omniture.com -->
<SCRIPT language=3DJavaScript=20
src=3D"http://newsdurhamregion.com/omniture/s_code.js"></SCRIPT>

<SCRIPT language=3DJavaScript><!--
/* You may give each page an identifying name, server, and channel on
the next lines. */
s.pageName=3D"Got the summer job blues? : Article | =
newsdurhamregion.com"
s.server=3D"corporate"
s.channel=3D"newsdurhamregion.com"
s.pageType=3D""
s.prop1=3D""
s.prop2=3D"Got the summer job blues?"
s.prop3=3D132249
s.prop4=3Ds.prop2 + "/" + s.prop3
s.prop5=3D""
/* E-commerce Variables */
s.campaign=3D""
s.state=3D""
s.zip=3D""
s.events=3D""
s.products=3D""
s.purchaseID=3D""
s.eVar1=3D""
s.eVar2=3D""
s.eVar3=3D""
s.eVar4=3D""
s.eVar5=3D""
s.hier1=3D"newsdurhamregion.com/article/Got the summer job blues?"
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_code=3Ds.t();if(s_code)document.write(s_code)//--></SCRIPT>

<SCRIPT language=3DJavaScript><!--
if(navigator.appVersion.indexOf('MSIE')>=3D0)document.write(unescape('%3C=
')+'\!-'+'-')
//--></SCRIPT>
<NOSCRIPT><A title=3D"Web Analytics" =
href=3D"http://www.omniture.com/"><IMG border=3D0=20
alt=3D""=20
src=3D"http://torontodurhamregion.122.2o7.net/b/ss/torontodurhamregion/1/=
H.10=E2=80=94NS/0"=20
width=3D1 height=3D1></A></NOSCRIPT><!--/DO NOT REMOVE/--> <!-- End =
SiteCatalyst code version: H.10. --><!-- external link nav -->
<DIV id=3Dx_menu><A =
href=3D"http://durhamregion.com/">Durhamregion.com</A> | <A=20
href=3D"http://www.newsdurhamregion.com/largemap">NewsView Map</A> | <A=20
href=3D"http://photosdurhamregion.com/gallery/index.php">Photos</A> | <A =

href=3D"http://mediamash.ca/">Videos</A> | <A=20
href=3D"http://www.goldbook.ca/goldbook/oshawa.html">Goldbook</A> | <A=20
href=3D"http://facesofthefuture2009.durhamregion.com/">Faces 2009 =
Digital</A> | <A=20
href=3D"http://durham.freedateconnection.com/index.php?page=3Dindex">Dati=
ng</A> | <A=20
href=3D"http://eventnow.ca/events/index.php">Events</A> | <A=20
href=3D"http://durham.flyerland.ca/">Flyers</A> | <A=20
href=3D"http://localmarketplace.ca/">Marketplace</A> | <A=20
href=3D"http://www.newsdurhamregion.com/specialreports">Special =
Reports</A> | <A=20
href=3D"http://movienow.ca/">Movies</A> | <A=20
href=3D"http://www.communitynotices.ca/listing.php?category=3DDeath&amp;l=
ist=3Dall">Obituaries</A>=20
</DIV>
<DIV style=3D"BACKGROUND-COLOR: #fff" id=3Dwrapper>
<DIV id=3Dheader><!-- Header -->
<DIV id=3DtopAd><!-- begin ad tag (tile=3D1) -->
<SCRIPT type=3Dtext/javascript>
document.write('<script type=3D"text/javascript" =
src=3D"http://ad.doubleclick.net/adj/Newsdurhamregion/;pos=3D1;tile=3D1;d=
copt=3Dist;sz=3D728x90;ord=3D' + ord + '?"><\/script>');
</SCRIPT>
<NOSCRIPT><A=20
href=3D"http://ad.doubleclick.net/jump/Newsdurhamregion/;pos=3D1;tile=3D1=
;sz=3D728x90;ord=3D123456789?"=20
target=3D_blank><IMG border=3D0 alt=3D""=20
src=3D"http://ad.doubleclick.net/ad/Newsdurhamregion/;pos=3D1;tile=3D1;sz=
=3D728x90;ord=3D123456789?"></A></NOSCRIPT>=20
<!-- end ad tag --></DIV>
<DIV id=3Dweather></DIV>
<SCRIPT type=3Dtext/javascript>
	ContentInject ("/chunks/Weather", 'weather');
</SCRIPT>

<DIV id=3DnewsBanner>
<DIV class=3DloginBar>
<SCRIPT type=3Dtext/javascript>
                        function gologin() {
                            window.location.href =3D =
"/webapp/login?ReturnURL=3D/article/132249";
                        }
                    </SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/WebResource.axd?d=3DxLkG52jqiZXD_yK3sm=
Y5byuUdip35PIhurOOk37bdbtklSTy1o6-xslZR0QobNIUZT2plI6dyMLJms3nOBiSuEA2sel=
0hV6nReHiVG8rsDHqs4gOzZFESMkTDOvivF7H0&amp;t=3D633796383350000000"></SCRI=
PT>
<SPAN id=3Dctl00$LoginView1_ContentArea></SPAN>
<SCRIPT type=3Dtext/javascript>
                    function updatectl00$LoginView1(param, ignorecache, =
queryParam, callback) {
                        if (!param) param =3D ''; else param =3D '&' + =
param;
                        if (ignorecache) param +=3D =
'&ignorecache=3Dtrue';
                        param +=3D =
'&hostingPageUrl=3D%2farticle%2f132249';
                        =
updateControlContent2('ctl00$LoginView1_ContentArea', =
'/control-update?assetId=3D132249&virtualPath=3D/article','id=3Dctl00$Log=
inView1&source=3D~/Toplets/Login/LoginView.ascx&duration=3D0&' + param, =
queryParam, function(responseText) { if (callback) =
callback(responseText);})
                    }updatectl00$LoginView1();</SCRIPT>
</DIV>
<DIV class=3DwrapperSearchBox>
<SCRIPT type=3Dtext/javascript>
function SetAssetType(atype)
{
document.getElementById('AssetTypeValue').value=3Datype;
   =20
document.getElementById('tbArticle').style.fontWeight=3D"normal";

document.getElementById('tbPhoto').style.fontWeight=3D"normal";

document.getElementById('tbVideo').style.fontWeight=3D"normal";
   =20
var sname;   =20

if ( atype =3D=3D 'Article' ) { sname=3D'bgSearchArticle.gif'; =
document.getElementById('tbArticle').style.fontWeight=3D"bold";}

if ( atype =3D=3D 'Image' ) { sname=3D'bgSearchPhoto.gif'; =
document.getElementById('tbPhoto').style.fontWeight=3D"bold";}

if ( atype =3D=3D 'Multimedia' ) { sname=3D'bgSearchVideo.gif'; =
document.getElementById('tbVideo').style.fontWeight=3D"bold";}
=20
}
</SCRIPT>

<SCRIPT type=3Dtext/javascript>
function SetDestination(dst)
{
    document.getElementById('destination').value=3Ddst;
}
</SCRIPT>

<SCRIPT type=3Dtext/javascript>
function doHeaderSearch()
{
var atype=3Ddocument.getElementById('AssetTypeValue').value;
var dest=3Ddocument.getElementById('destination').value;
var kwrd=3Ddocument.getElementById('txtSearch').value;
var loc=3D"/searchresults?AssetType=3D" + atype + "&q=3D" + kwrd;
if( dest =3D=3D 'google' ) { loc=3D"http://www.google.com/search?q=3D" + =
kwrd; }
document.location.href=3Dloc;
return false;
}
</SCRIPT>

<DIV id=3DwrapperSearch>
<DIV id=3Dtopsearch>
<DIV id=3DassetType><A style=3D"FONT-WEIGHT: bold" id=3DtbArticle=20
onclick=3D"javascript:SetAssetType('Article');">Articles</A><SPAN =
class=3DassetDiv>=20
| </SPAN><A id=3DtbPhoto=20
onclick=3D"javascript:SetAssetType('Image');">Photos</A><SPAN =
class=3DassetDiv> |=20
</SPAN><A id=3DtbVideo =
onclick=3D"javascript:SetAssetType('Multimedia');">Videos</A>=20
</DIV>
<DIV id=3DwrapperTextButton>
<DIV id=3DwrapperText><INPUT id=3DtxtSearch class=3DtextField =
type=3Dtext> </DIV>
<DIV id=3DwrapperButton><INPUT id=3DbtnSearch class=3Dbutton =
onclick=3D"return doHeaderSearch();" type=3Dsubmit name=3DbtnSearch>=20
</DIV>
<DIV style=3D"CLEAR: left"></DIV></DIV>
<DIV id=3DwrapperRadio><INPUT id=3DAssetTypeValue value=3DArticle =
type=3Dhidden> <INPUT=20
id=3Ddestination value=3Dnewsdurhamregion type=3Dhidden>=20
<DIV class=3Dradio1><INPUT onclick=3D"javascript:SetDestination('');"=20
value=3Dnewsdurhamregion.com CHECKED type=3Dradio name=3Ddest> </DIV>
<DIV class=3Dradio2>newsdurhamregion </DIV>
<DIV class=3Dradio3><INPUT =
onclick=3D"javascript:SetDestination('google');"=20
value=3Dgoogle type=3Dradio name=3Ddest> </DIV>
<DIV class=3Dradio4>google </DIV>
<DIV style=3D"CLEAR: left"><INPUT style=3D"DISPLAY: none"=20
type=3Dtext></DIV></DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dlogos>
<UL>
  <LI><A href=3D"http://newsdurhamregion.com/news/ajax"><IMG alt=3D""=20
  =
src=3D"http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_ajax=
.gif"></A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/news/pickering"><IMG =
alt=3D""=20
  =
src=3D"http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_pick=
ering.gif"></A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/news/whitby"><IMG alt=3D""=20
  =
src=3D"http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_whit=
by.gif"></A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/news/clarington"><IMG =
alt=3D""=20
  =
src=3D"http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_clar=
ington.gif"></A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/news/oshawa"><IMG alt=3D""=20
  =
src=3D"http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_osha=
wa.gif"></A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/news/scugog"><IMG alt=3D""=20
  =
src=3D"http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_port=
perry.gif"></A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/news/uxbridge"><IMG =
alt=3D""=20
  =
src=3D"http://newsdurhamregion.com/App_themes/NewsDurham/images/logo_time=
sjournal.gif"></A></LI></UL></DIV></DIV>
<DIV id=3Dmenu_block><!-- main nav -->
<DIV id=3Dmenu>
<UL>
  <LI><A href=3D"http://newsdurhamregion.com/">Home</A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/news">News</A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/sports">Sports</A></LI>
  <LI><A =
href=3D"http://newsdurhamregion.com/entertainment">Entertainment</A></LI>=

  <LI><A href=3D"http://newsdurhamregion.com/life">Life</A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/opinion">Opinion</A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/business">Business</A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/multimedia">Photos And =
Video</A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/gminoshawa">GM In =
Oshawa</A></LI>
  <LI><A=20
href=3D"http://www.durhamregion.typepad.com/">Blogs</A></LI></UL></DIV></=
DIV>
<DIV id=3Dbody>
<DIV id=3Dctl00_mainContent_wrapperArticleBody>
<H4 style=3D"MARGIN-BOTTOM: 10px">Got the summer job blues?</H4>
<DIV id=3DwrapperArticleSideLinks>
<DIV class=3DarticleSideContainer>
<DIV class=3DarticleSideHeader>Tools </DIV>
<UL class=3D"articleTools listNoStyle">
  <LI class=3DtextSize><SPAN class=3DtextSize =
onclick=3DSetFontSize();>Smaller=20
  Text</SPAN> <SPAN class=3Ddivider>|</SPAN> <SPAN class=3DtextSize=20
  onclick=3D"SetFontSize('grow');">Larger Text</SPAN> </LI>
  <LI class=3DemailArticle><A=20
  =
href=3D"javascript:openWinSmall('/emailarticle/132249?path=3D/article/132=
249')">Email=20
  this Article</A> </LI>
  <LI class=3DemailAuthor><A=20
  =
href=3D"javascript:openWinSmall('/emailauthor/132249?path=3D/article/1322=
49')">Email=20
  this Author</A></LI>
  <LI class=3Dprint><A=20
  href=3D"http://newsdurhamregion.com/articlePrint/132249">Print this=20
Page</A></LI>
  <LI class=3Dtypo><A =
href=3D"javascript:openWin('/emailCorrection/132249')">Report=20
  Typo or Correction</A></LI>
  <LI class=3Dbookmark><!-- AddThis Button BEGIN -->
  <DIV style=3D"MARGIN: 0px auto; WIDTH: 85px">
  <SCRIPT type=3Dtext/javascript>var =
addthis_pub=3D"durhamnews";</SCRIPT>
  <A onmouseover=3D"return addthis_open(this, '', location.href, =
document.title)"=20
  onmouseout=3Daddthis_close() onclick=3D"return addthis_sendto()"=20
  href=3D"http://www.addthis.com/bookmark.php"><IMG=20
  style=3D"BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; =
BORDER-RIGHT: 0px"=20
  border=3D0 alt=3D"" =
src=3D"http://s7.addthis.com/static/btn/sm-bookmark-en.gif"=20
  width=3D83 height=3D16></A>
  <SCRIPT type=3Dtext/javascript=20
  src=3D"http://s7.addthis.com/js/152/addthis_widget.js"></SCRIPT>
   </DIV><!-- AddThis Button END --></LI></UL></DIV>
<SCRIPT type=3Dtext/javascript>
           =20
                function expandSidebar() {
               =20
                    =
document.getElementById('sidebarContent').style.height =3D '';
                    document.getElementById('sideBarMore').innerHTML =3D =
'';
                }
           =20
            </SCRIPT>
</DIV>
<DIV id=3DarticleBody>
<DIV class=3DsubTitle>Here's how to start your own successful summer =
company</DIV>
<P class=3Ddate>Jul 24, 2009 - 04:30 AM</P>
<P class=3Dauthor>By Wenda Abel </P>
<DIV style=3D"MARGIN-TOP: 6px"></DIV>
<P>If you've got a serious case of the summer job blues (boring job or =
no job at=20
all) there's still time to make some cash for the school year ahead. =
Start your=20
own summer business. Or, get a head start on creating your own summer =
job for=20
next year.
<P>How? Here are a few tips from some of this year's crop of Summer =
Company=20
young entrepreneurs.
<P>1. Start now. Tiffany didn't wait until her business idea was fully =
formed or=20
even until it looked like it would 'work'. She brought her rough =
'business plan'=20
-- some broad ideas about her business running summer classes to teach =
kids the=20
basics of sewing and quilting -- to Business Advisory Centre Durham way =
back in=20
September 2008, long before the Summer Company 2009 program was even =
open for=20
applications. Her business, Quilter's Workshop, has had full classes of =
happy=20
kids eight to 12, from her start up date of July 1. The best way to =
start is to=20
get started. Put your ideas and thoughts about what you'll do and how =
you'll do=20
it down on paper now.
<P>2. Do your homework. April was passionate about her idea for a =
selling a=20
different kind of street food. But, after talking to some people about =
it, she=20
realized there might be some special permits and licenses she'd need =
before she=20
could set up her stand to sell her unique and delicious Chinese crepes =
at a mall=20
location as she'd planned. She did some research and found that the =
complex=20
rules and regulations would cause delay in her start-up. After talking =
with the=20
Summer Company coordinator at BACD, April changed her ideas slightly and =
decided=20
to sell her crepes at summer outdoor events and street festivals where =
the=20
licensing requirements are taken care of by the organizers. Voila. This =
summer,=20
Beijing Creperie is serving up a very tasty storm.
<P>Before you put your ideas into action, talk to your friends, family, =
and=20
other business people you know. Talk to people you think might be your=20
prospective customers. Tell them what you want to do. Get their feedback =
on the=20
potential of your idea, what price they would pay, how they think you =
could=20
promote your business. Ask questions. Check out internet business sites. =
It's=20
called market research. You can start yours by visiting <A=20
href=3D"http://www.bossmaker.ca/">http://www.bossmaker.ca/</A> for more=20
information on how to plan and start a business.
<P>3. Be flexible and coachable. David, a talented artist, creates =
awesome=20
paintings using a special resin that gives them a unique 'glow'. At =
first, he=20
intended to sell his paintings and the special resin through his website =
on the=20
Internet. It was a great plan, but it would take too long to build the =
online=20
presence to ensure enough income from his business for school in the =
fall. The=20
Summer Company coordinator suggested he sell his paintings at summer art =
shows=20
and arts and crafts sales. David was open to the coaching and has taken =
a slight=20
'detour' in his business direction, selling his work in art shows and =
galleries=20
while building the online traffic for his website that will provide =
additional=20
income while he finishes his final year at university. Art Resin is a =
business=20
that will be successful well beyond the summer of 2009.
<P>Be open to feedback and advice. Consider ideas and information from =
your=20
customers and other business contacts carefully and be willing to change =
what=20
you are doing and the way you are doing it. The most successful =
businesses grow=20
and evolve by responding to the business environment, and especially the =

customers.
<P>4. Never give up. The big festival in Muskoka was supposed to be the =
big=20
money-making event for Jessica's Pebble Patch Jewellery. But only a =
fraction of=20
the expected visitors turned out for the weekend event. The revenue she =
expected=20
for July (and needed to make more product for upcoming shows) didn't=20
materialize. Jessica was discouraged for a day, then put her thinking =
cap on and=20
did some financial problem-solving. She's made plans for parties and =
more venues=20
that promise to add to her income substantially.=20
<P>Stuff happens, in business and in life. When you hit a bump in the =
road, you=20
can always find a way to go over it or around it. What leads to success =
is to=20
keep on going.=20
<P>So if you think you've got a good idea for a summer business, get =
started.=20
Who knows where the road will lead you?
<P>For more information on Summer Company and the student businesses =
featured=20
visit <A href=3D"http://www.bossmaker.ca/">http://www.bossmaker.ca/</A> =
or call=20
905-438-4008, ext. 226. </P>
<HR>
<I>Wenda Abel is the young entrepreneur program manager at ACD Business =
Advisory=20
Centre Durham. She is coordinator of the Summer Company program for =
student=20
entrepreneurs sponsored by the government of Ontario.</I>=20
<P></P><A id=3Dcomments></A>
<DIV=20
style=3D"BORDER-BOTTOM: #cfdae5 1px solid; BORDER-LEFT: #cfdae5 1px =
solid; PADDING-BOTTOM: 5px; MARGIN-TOP: 10px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; CLEAR: both; BORDER-TOP: #cfdae5 1px solid; =
BORDER-RIGHT: #cfdae5 1px solid; PADDING-TOP: 5px"><SPAN=20
style=3D"MARGIN-LEFT: 20px" class=3Dfav><SPAN=20
id=3Dctl00$mainContent$article_Body$Template0$ufav1_ContentArea></SPAN>
<SCRIPT type=3Dtext/javascript>
                    function =
updatectl00$mainContent$article_Body$Template0$ufav1(param, ignorecache, =
queryParam, callback) {
                        if (!param) param =3D ''; else param =3D '&' + =
param;
                        if (ignorecache) param +=3D =
'&ignorecache=3Dtrue';
                        param +=3D =
'&hostingPageUrl=3D%2farticle%2f132249';
                        =
updateControlContent2('ctl00$mainContent$article_Body$Template0$ufav1_Con=
tentArea', =
'/control-update?assetId=3D132249&virtualPath=3D/article','id=3Dctl00$mai=
nContent$article_Body$Template0$ufav1&source=3D~/Toplets/User/UserFavorit=
esButton.ascx&duration=3D-1&AssetUid=3D132249&' + param, queryParam, =
function(responseText) { if (callback) callback(responseText);})
                    =
}updatectl00$mainContent$article_Body$Template0$ufav1();</SCRIPT>
</SPAN><SPAN style=3D"MARGIN-LEFT: 20px" class=3Drec>Recommend : <SPAN=20
id=3Dctl00$mainContent$article_Body$Template0$rec11_ContentArea></SPAN>
<SCRIPT type=3Dtext/javascript>
                    function =
updatectl00$mainContent$article_Body$Template0$rec11(param, ignorecache, =
queryParam, callback) {
                        if (!param) param =3D ''; else param =3D '&' + =
param;
                        if (ignorecache) param +=3D =
'&ignorecache=3Dtrue';
                        param +=3D =
'&hostingPageUrl=3D%2farticle%2f132249';
                        =
updateControlContent2('ctl00$mainContent$article_Body$Template0$rec11_Con=
tentArea', =
'/control-update?assetId=3D132249&virtualPath=3D/article','id=3Dctl00$mai=
nContent$article_Body$Template0$rec11&source=3D~/Toplets/Counter/Recommen=
dButton.ascx&duration=3D-1&AssetUid=3D132249&CounterUID=3D100020&IsAnonym=
ous=3DTrue&CurrentTotalCount=3D0&' + param, queryParam, =
function(responseText) { if (callback) callback(responseText);})
                    =
}updatectl00$mainContent$article_Body$Template0$rec11();</SCRIPT>
</SPAN></DIV>
<DIV></DIV>
<DIV style=3D"MARGIN-TOP: 20px">
<H2 style=3D"MARGIN-BOTTOM: 5px">Latest News</H2><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132544">Crews still on scene =
of=20
massive fire in Oshawa</A><BR>
<DIV class=3DmoreStories>OSHAWA -- Efforts continue to extinguish an =
enormous fire=20
that devoured a structure in south Oshawa near the harbour lands this =
morning.=20
Several aerial units have been...</DIV><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132521">Massive fire in =
south=20
Oshawa</A><BR>
<DIV class=3DmoreStories>OSHAWA -- Firefighters are battling a huge =
blaze that has=20
consumed a structure near the harbour lands in south Oshawa. Thick black =
smoke=20
blocked out the sun and observers...</DIV><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132522">BREAKING NEWS VIDEO: =
Raging=20
flames and thick black smoke on Oshawa waterfront</A><BR>
<DIV class=3DmoreStories>OSHAWA -- Thick black smoke could be seen as =
far away as=20
Pickering as a fire burned at a south Oshawa industrial complex.&nbsp; =
The fire=20
broke out at 1123 Farewell St., just...</DIV><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132515">BREAKING NEWS VIDEO: =
Thick=20
black smoke in fire in south Oshawa</A><BR>
<DIV class=3DmoreStories>OSHAWA -- Thick black smoke can be seen in =
south Oshawa=20
with a fire reported at an industrial site on Farewell Street, just =
north of=20
Oshawa harbour.&nbsp;Six fire trucks are...</DIV><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132500">About 200 turn out =
in Whitby=20
for latest repatriation</A><BR>
<DIV class=3DmoreStories>DURHAM -- A smaller and more subdued crowd =
turned out=20
Tuesday as the bodies of Canadian soldiers travelled through Durham. =
About 200=20
people were at the Brock Street and Hwy...</DIV><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132492">Cops nab Durham =
Region holiday=20
traffic violators</A><BR>
<DIV class=3DmoreStories>DURHAM -- An unsafe van with four kids lying on =
the floor=20
was one of the vehicles pulled over during a long-weekend police blitz. =
The=20
safety blitz, which began July 31, and...</DIV><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132451">Police hope facial=20
reconstruction image will help identify woman found dead in =
Clarington</A><BR>
<DIV class=3DmoreStories>DURHAM -- Facial reconstruction images of a =
woman whose=20
skull was found in Clarington have been released by the Durham Regional =
Police.=20
The skull was found by a citizen...</DIV><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132445">Whitby teen stabbed =
in parking=20
lot argument Saturday night</A><BR>
<DIV class=3DmoreStories>WHITBY -- A 16-year-old Whitby teen suffered =
stab and=20
slash wounds in an incident on Saturday night. Durham Regional Police =
report a=20
small group of teens were involved in a...</DIV><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132444">Child found sleeping =
in=20
vehicle at Ajax slots</A><BR>
<DIV class=3DmoreStories>AJAX -- The Durham Region Children's Aid =
Society was=20
notified after a six-year-old child was discovered sleeping in a vehicle =
at the=20
OLG Slots Ajax Downs late Sunday night...</DIV><A class=3DsmallTitle=20
href=3D"http://newsdurhamregion.com/article/132435">Repatriation Tuesday =
afternoon=20
for two soldiers killed in Afghanistan</A><BR>
<DIV class=3DmoreStories>DURHAM / NORTHUMBERLAND -- A repatriation =
ceremony will=20
be held Tuesday afternoon for two soldiers killed in a roadside =
explosion in=20
Afghanistan. Sapper Matthieu Allard and...</DIV></DIV></DIV></DIV></DIV>
<DIV id=3DrightColumn>
<DIV class=3DspecialGraphic><A =
href=3D"http://www.twitter.com/newsdurham"><IMG=20
src=3D"http://media.durhamregion.topscms.com/images/62/56/e3e40d8f43f29a9=
ca834af7be556.jpeg"></A>=20
</DIV>
<DIV=20
style=3D"BORDER-BOTTOM: #dadada 1px solid; BORDER-LEFT: #dadada 1px =
solid; BORDER-TOP: #dadada 1px solid; BORDER-RIGHT: #dadada 1px solid"=20
class=3DbreakingNews_sidebar>
<H2=20
style=3D"TEXT-ALIGN: center; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: =
#eb4600; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; COLOR: #fff; FONT-SIZE: =
12px; PADDING-TOP: 2px">Breaking=20
News</H2>
<DIV=20
style=3D"PADDING-BOTTOM: 5px; MARGIN: 0px auto; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; PADDING-TOP: 5px">
<DIV style=3D"MARGIN-BOTTOM: 2px"><A style=3D"FONT-SIZE: 14px; =
FONT-WEIGHT: bold"=20
href=3D"http://newsdurhamregion.com/news/article/132522">BREAKING NEWS =
VIDEO:=20
Raging flames and thick black smoke on Oshawa waterfront</A></DIV>
<P style=3D"MARGIN: 4px 0px">OSHAWA -- Thick black smoke could be seen =
as far away=20
as Pickering as a fire burned at a south Oshawa industrial =
complex.&nbsp; The=20
fire broke out at 1123 Farewell St., just north of Oshawa Harbour Road =
shortly=20
before 9 a.m.&nbsp;</P>Newsdurhamregion... <A style=3D"TEXT-DECORATION: =
underline"=20
href=3D"http://newsdurhamregion.com/news/article/132522">read&nbsp;more</=
A>
<P></P>
<DIV style=3D"CLEAR: left"></DIV>
<DIV class=3Drelated><IMG alt=3Drelated=20
src=3D"http://newsdurhamregion.com/App_Themes/NewsDurham/images/related_a=
rrow_ico.gif"><A=20
href=3D"http://newsdurhamregion.com/article/132521" =
target=3D_blank>Massive fire in=20
south Oshawa</A></DIV></DIV></DIV>
<DIV class=3Dad_300x250><!-- begin ad tag (tile=3D2) -->
<SCRIPT type=3Dtext/javascript>
document.write('<script type=3D"text/javascript" =
src=3D"http://ad.doubleclick.net/adj/Newsdurhamregion/;pos=3D1;tile=3D2;s=
z=3D300x250;ord=3D' + ord + '?"><\/script>');
</SCRIPT>
<NOSCRIPT><A=20
href=3D"http://ad.doubleclick.net/jump/Newsdurhamregion/;pos=3D1;tile=3D2=
;sz=3D300x250;ord=3D123456789?"=20
target=3D_blank><IMG border=3D0 alt=3D""=20
src=3D"http://ad.doubleclick.net/ad/Newsdurhamregion/;pos=3D1;tile=3D2;sz=
=3D300x250;ord=3D123456789?"></A></NOSCRIPT>=20
<!-- end ad tag --></DIV>
<SCRIPT language=3Djavascript type=3Dtext/javascript>

                    var mm_mp =3D 1;

                    function mm_left (id) {=20

                        if (mm_mp > 1) {
                            mm_mp--;
                            =
document.getElementById('mm_jsCurrent').innerHTML =3D mm_mp;
                           =20
                            new Effect.Move(id,=20
                            { duration:0.1, x: 298, y: 0, mode: =
'relative', transition: Effect.Transitions.spring,=20
                                queue: {scope: 'mm_slide', =
position:'end'}
                            });=20
                        }
                       =20
                    }
                   =20
                    function mm_right (id) {=20

                        if (mm_mp < 6) {
                            mm_mp++;
                            =
document.getElementById('mm_jsCurrent').innerHTML =3D mm_mp;
                           =20
                            new Effect.Move(id,=20
                            { duration:0.1, x: -298, y: 0, mode: =
'relative', transition: Effect.Transitions.spring,
                                queue: {scope: 'mm_slide', =
position:'end'}=20
                            });=20
                        }

                    }

                </SCRIPT>

<DIV class=3DjsVideoWrapper>
<DIV class=3DjsHeader><IMG alt=3D"Media Mash Most Viewed Videos"=20
src=3D"http://newsdurhamregion.com/App_Themes/NewsDurham/images/jsHeader.=
gif">=20
</DIV>
<DIV id=3Dmm_slide class=3Dmm_slide>
<DIV class=3DjsItem><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://www.mediamash.ca/media/5009/Job%20of%20Looking%20for%20a%2=
0Job%20--%20Part%206/"=20
target=3D_blank><IMG class=3DjsThumb title=3D"Job of Looking for a Job =
-- Part 6"=20
alt=3D"Job of Looking for a Job -- Part 6"=20
src=3D"http://www.mediamash.ca/thumbs/c90eb772a9c5.jpg"> </A><B><A=20
href=3D"http://www.mediamash.ca/media/5009/Job%20of%20Looking%20for%20a%2=
0Job%20--%20Part%206/"=20
target=3D_blank>Job of Looking for a Job -- Part 6</A></B>=20
<P style=3D"MARGIN: 2px">When most people her age are preparing for =
retired, Elda=20
Pha...</P></DIV>
<DIV class=3DjsItem><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://www.mediamash.ca/media/5011/OPP%20long%20weekend%20highway=
%20safety%20blitz/"=20
target=3D_blank><IMG class=3DjsThumb title=3D"OPP long weekend highway =
safety blitz"=20
alt=3D"OPP long weekend highway safety blitz"=20
src=3D"http://www.mediamash.ca/thumbs/4b9b9efcd486.jpg"> </A><B><A=20
href=3D"http://www.mediamash.ca/media/5011/OPP%20long%20weekend%20highway=
%20safety%20blitz/"=20
target=3D_blank>OPP long weekend highway safety blitz</A></B>=20
<P style=3D"MARGIN: 2px">A wake-up call with police warning that drivers =
could=20
face f...</P></DIV>
<DIV class=3DjsItem><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://www.mediamash.ca/media/5010/Bed%20bugs%20bite%20Durham/"=20
target=3D_blank><IMG class=3DjsThumb title=3D"Bed bugs bite Durham"=20
alt=3D"Bed bugs bite Durham"=20
src=3D"http://www.mediamash.ca/thumbs/4877a2b25033.jpg"> </A><B><A=20
href=3D"http://www.mediamash.ca/media/5010/Bed%20bugs%20bite%20Durham/"=20
target=3D_blank>Bed bugs bite Durham</A></B>=20
<P style=3D"MARGIN: 2px">Bed bugs have come to Durham Region with =
tenants at one=20
apar...</P></DIV>
<DIV class=3DjsItem><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://www.mediamash.ca/media/5007/VIA%20Rail%20on%20Strike/"=20
target=3D_blank><IMG class=3DjsThumb title=3D"VIA Rail on Strike"=20
alt=3D"VIA Rail on Strike" =
src=3D"http://www.mediamash.ca/thumbs/762176389066.jpg">=20
</A><B><A =
href=3D"http://www.mediamash.ca/media/5007/VIA%20Rail%20on%20Strike/"=20
target=3D_blank>VIA Rail on Strike</A></B>=20
<P style=3D"MARGIN: 2px">Locomotive engineers with VIA Rail are =
officially on=20
strike....</P></DIV>
<DIV class=3DjsItem><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://www.mediamash.ca/media/5008/Suspicious%20fire%20in%20Brock=
%20Township/"=20
target=3D_blank><IMG class=3DjsThumb title=3D"Suspicious fire in Brock =
Township"=20
alt=3D"Suspicious fire in Brock Township"=20
src=3D"http://www.mediamash.ca/thumbs/3949324307b1.jpg"> </A><B><A=20
href=3D"http://www.mediamash.ca/media/5008/Suspicious%20fire%20in%20Brock=
%20Township/"=20
target=3D_blank>Suspicious fire in Brock Township</A></B>=20
<P style=3D"MARGIN: 2px">Police are looking for a man seen near a home =
destroyed=20
by f...</P></DIV>
<DIV class=3DjsItem><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://www.mediamash.ca/media/5006/A%20natural%20gem%20in%20Durha=
m/"=20
target=3D_blank><IMG class=3DjsThumb title=3D"A natural gem in Durham"=20
alt=3D"A natural gem in Durham"=20
src=3D"http://www.mediamash.ca/thumbs/869327549713.jpg"> </A><B><A=20
href=3D"http://www.mediamash.ca/media/5006/A%20natural%20gem%20in%20Durha=
m/"=20
target=3D_blank>A natural gem in Durham</A></B>=20
<P style=3D"MARGIN: 2px">You can hike for miles and see a priceless =
piece of=20
nature a...</P></DIV></DIV>
<DIV class=3DjsBase>
<DIV class=3DjsLogo><SPAN style=3D"COLOR: #eb4600">news</SPAN><SPAN=20
style=3D"COLOR: #999">durhamregion.com</SPAN></DIV>
<DIV class=3DjsControls><A onclick=3D"mm_left('mm_slide');"=20
href=3D"javascript:void(0);"><IMG alt=3DPrevious=20
src=3D"http://newsdurhamregion.com/App_Themes/NewsDurham/images/btn_jsLef=
t.gif"></A>=20

<DIV id=3Dmm_jsCurrent>1</DIV>
<DIV id=3Dmm_jsTotal>/ 6 </DIV><A onclick=3D"mm_right('mm_slide');"=20
href=3D"javascript:void(0);"><IMG alt=3DPrevious=20
src=3D"http://newsdurhamregion.com/App_Themes/NewsDurham/images/btn_jsRig=
ht.gif"></A>=20
</DIV></DIV></DIV>
<DIV class=3DspecialGraphic><A href=3D"http://www.mediamash.ca/" =
target=3D_blank><IMG=20
src=3D"http://media.durhamregion.topscms.com/images/38/d2/68c14ff94667a9c=
8c8804e61a59c.jpeg"></A>=20
</DIV>
<DIV=20
style=3D"BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; =
BORDER-TOP: medium none; BORDER-RIGHT: medium none"=20
class=3DtopletContainer><IFRAME height=3D260 marginHeight=3D1=20
src=3D"http://newsdurhamregion.com/toplets/news/mostpopular/home" =
frameBorder=3D0=20
width=3D300 marginWidth=3D0 scrolling=3Dno></IFRAME></DIV>
<DIV class=3DspecialGraphic><A =
href=3D"http://www.photosdurhamregion.com/"=20
target=3D_blank><IMG=20
src=3D"http://media.durhamregion.topscms.com/images/3f/29/4cde395a44b9bb9=
e82c596dcc54e.jpeg"></A>=20
</DIV>
<DIV=20
style=3D"PADDING-BOTTOM: 10px; PADDING-LEFT: 15px; WIDTH: 268px; =
PADDING-RIGHT: 15px; PADDING-TOP: 0px"=20
class=3DtopletContainer>
<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/TopletsResources/news/polling/js/Poll.=
js"></SCRIPT>

<DIV id=3DPolling></DIV>
<SCRIPT>ShowPoll('/Toplets/news/Polling/caching/PollRequest','132437', =
'/Toplets/news/Polling/PollResult',  '/Toplets/news/Polling', =
'/toplets/news/polling/sample/polling')</SCRIPT>

<DIV style=3D"MARGIN-BOTTOM: 10px; CLEAR: both"></DIV></DIV>
<DIV class=3Dblogs_skyscraper>
<DIV class=3Dblogs>
<H3><A href=3D"http://www.durhamregion.typepad.com/"=20
target=3D_blank>Blogs</A></H3><BR>
<DIV class=3DblogListing><B><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://durhamregion.typepad.com/word_count/2009/08/the-long-weeke=
nd.html"=20
target=3D_blank>Word Count</A></B> <BR>The long weekend </DIV>
<DIV class=3DblogListing><B><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://durhamregion.typepad.com/in_the_garden/2009/08/wind-farmin=
g.html"=20
target=3D_blank>Sustainable Living in Durham</A></B> <BR>Wind Farming =
</DIV>
<DIV class=3DblogListing><B><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://durhamregion.typepad.com/neil_crone/2009/08/go-with-your-s=
trengths.html"=20
target=3D_blank>Neil Crone - Enter Laughing</A></B> <BR>Go with your =
strengths...=20
</DIV>
<DIV class=3DblogListing><B><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://durhamregion.typepad.com/past_present_and_future/2009/08/r=
eady-for-action.html"=20
target=3D_blank>Past, Present and Future</A></B> <BR>Ready for action =
</DIV>
<DIV class=3DblogListing><B><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://durhamregion.typepad.com/people/2009/08/on-the-go-in-augus=
t.html"=20
target=3D_blank>People, Places and Things</A></B> <BR>On the go in =
August </DIV>
<DIV class=3DblogListing><B><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://durhamregion.typepad.com/past_present_and_future/2009/08/i=
f-you-have-been-paying-attention-wake-up-at-the-back-you-will-know-that-i=
-have-designing-a-boardgame-i-have-decided.html"=20
target=3D_blank>Past, Present and Future</A></B> <BR></DIV>
<DIV class=3DblogListing><B><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://durhamregion.typepad.com/will_mcguirk/2009/08/the-artist-l=
ife-johnny-bs-august-9.html"=20
target=3D_blank>Scene and Heard with Will McGuirk </A></B><BR>The Artist =
Life -=20
Johnny Bs - August 9 </DIV>
<DIV class=3DblogListing><B><A style=3D"TEXT-DECORATION: none"=20
href=3D"http://durhamregion.typepad.com/neil_crone/2009/07/norman-rockwel=
l-north.html"=20
target=3D_blank>Neil Crone - Enter Laughing</A></B> <BR>Norman Rockwell =
North...=20
</DIV></DIV>
<DIV class=3Dskyscraper><!-- begin ad tag (tile=3D3) -->
<SCRIPT type=3Dtext/javascript>
document.write('<script type=3D"text/javascript" =
src=3D"http://ad.doubleclick.net/adj/Newsdurhamregion/;pos=3D1;tile=3D3;s=
z=3D160x600;ord=3D' + ord + '?"><\/script>');
</SCRIPT>
<NOSCRIPT><A=20
href=3D"http://ad.doubleclick.net/jump/Newsdurhamregion/;pos=3D1;tile=3D3=
;sz=3D160x600;ord=3D123456789?"=20
target=3D_blank><IMG border=3D0 alt=3D""=20
src=3D"http://ad.doubleclick.net/ad/Newsdurhamregion/;pos=3D1;tile=3D3;sz=
=3D160x600;ord=3D123456789?"></A></NOSCRIPT>=20
<!-- end ad tag --></DIV>
<DIV style=3D"CLEAR: both"></DIV></DIV></DIV>
<DIV id=3Dfooter>
<STYLE type=3Dtext/css>DIV#footerWrapper {
	MARGIN: 10px auto; WIDTH: 775px; FONT: 12px Arial, Helvetica, =
sans-serif; PADDING-TOP: 10px
}
DIV#footerWrapper UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
DIV#footerWrapper UL LI A {
	COLOR: #999; TEXT-DECORATION: none
}
DIV#footerWrapper UL LI A:hover {
	COLOR: blue; TEXT-DECORATION: underline
}
#footerWrapper .footerSection {
	LINE-HEIGHT: 16px; WIDTH: 143px; FLOAT: left; MARGIN-LEFT: 15px; =
FONT-SIZE: 10px
}
LI.footerHeader {
	FONT: bold 12px Arial, Helvetica, sans-serif; MARGIN-BOTTOM: 0.5em; =
COLOR: #666
}
#footerWrapper .first {
	MARGIN: 0px
}
#global_footer_grey {
	BORDER-BOTTOM: #e3e3e3 1px solid; BORDER-LEFT: #e3e3e3 1px solid; =
BACKGROUND-COLOR: #f5f5f5; MARGIN: 10px auto 5px; PADDING-LEFT: 15px; =
WIDTH: 743px; PADDING-RIGHT: 15px; FONT-SIZE: 10px; BORDER-TOP: #e3e3e3 =
1px solid; BORDER-RIGHT: #e3e3e3 1px solid; PADDING-TOP: 15px
}
#global_footer {
	WIDTH: 775px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: =
#515151; MARGIN-LEFT: auto; FONT-SIZE: 10px; MARGIN-RIGHT: auto
}
#global_footer A {
	COLOR: #0098d6; FONT-SIZE: 10px; TEXT-DECORATION: none
}
#global_footer A:link {
	COLOR: #0098d6; FONT-SIZE: 10px; TEXT-DECORATION: none
}
#global_footer A:active {
	COLOR: #0098d6; FONT-SIZE: 10px; TEXT-DECORATION: none
}
#global_footer A:visited {
	COLOR: #0098d6; FONT-SIZE: 10px; TEXT-DECORATION: none
}
#global_footer A:hover {
	TEXT-DECORATION: underline
}
#global_footer SELECT {
	BORDER-BOTTOM: #e3e3e3 1px solid; BORDER-LEFT: #e3e3e3 1px solid; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #ffffff; PADDING-LEFT: 5px; =
WIDTH: 175px; PADDING-RIGHT: 5px; BORDER-TOP: #e3e3e3 1px solid; =
BORDER-RIGHT: #e3e3e3 1px solid; PADDING-TOP: 5px
}
#footerWrapper #copyright {
	FLOAT: right; COLOR: #808080
}
#footerWrapper #logos {
	FLOAT: left
}
</STYLE>

<DIV style=3D"WIDTH: 860px" id=3DfooterWrapper>
<DIV style=3D"TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 728px"><IMG=20
style=3D"MARGIN: 5px auto" alt=3D""=20
src=3D"http://newsdurhamregion.com/App_Themes/NewsDurham/images/ad_line.g=
if">
<SCRIPT type=3Dtext/javascript>
            /*<![CDATA[*/
            google_ad_client =3D "pub-2063586642000913";
            google_ad_width =3D 728;
            google_ad_height =3D 90;
            google_ad_format =3D "728x90_as";
            google_ad_type =3D "text_image";
            google_ad_channel =3D"4428987425";
            google_color_border =3D "1C5EAD";
            google_color_bg =3D "FFFFFF";
            google_color_link =3D "1C5EAD";
            google_color_text =3D "000000";
            google_color_url =3D "000000";
            /*]]>*/</SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js">
        </SCRIPT>
 </DIV><BR>
<DIV=20
style=3D"MARGIN-TOP: 5px; WIDTH: 480px; BACKGROUND: =
url(/App_Themes/NewsDurham/images/mdrmg_line.gif) #fff no-repeat; FLOAT: =
left; HEIGHT: 280px; PADDING-TOP: 15px">
<DIV class=3D"footerSection first">
<UL>
  <LI class=3DfooterHeader>Advertising</LI>
  <LI class=3Dfirst><A=20
  =
href=3D"http://www.metroland.com/page/Advertise">Durhamregion.com</A></LI=
>
  <LI><A=20
  =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Metroland=20
  Durham Region Newspapers (pdf)</A></LI>
  <LI><A=20
  =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Real=20
  Estate =E2=80=93 News Advertiser (pdf)</A></LI>
  <LI><A=20
  =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Real=20
  Estate =E2=80=93 This Week (pdf)</A></LI>
  <LI><A=20
  =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Durham=20
  Wheels (pdf)</A></LI>
  <LI><A=20
  =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Best=20
  Homes (pdf)</A></LI>
  <LI><A=20
  =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Durham=20
  Business Times (pdf)</A></LI>
  <LI><A=20
  =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Durham=20
  Parent (pdf)</A></LI>
  <LI><A=20
  =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Durham=20
  Parent Online (pdf)</A></LI>
  <LI><A=20
  =
href=3D"http://www.marketplacedurhamregion.com/index.php?page=3Dnewspaper=
">Classified=20
  Advertising</A></LI></UL></DIV>
<DIV class=3DfooterSection>
<UL>
  <LI class=3DfooterHeader>Consumers Shows</LI>
  <LI class=3Dfirst><A =
href=3D"http://www.showsdurhamregion.com/shows.php">Golf=20
  Show</A></LI>
  <LI><A href=3D"http://www.showsdurhamregion.com/shows.php">Spring Home =
and=20
  Garden</A></LI>
  <LI><A href=3D"http://www.showsdurhamregion.com/shows.php">Durham =
Parent Family=20
  Show</A></LI>
  <LI><A href=3D"http://www.showsdurhamregion.com/shows.php">Wedding=20
Show</A></LI></UL>
<UL style=3D"PADDING-TOP: 10px">
  <LI class=3DfooterHeader>Contact Us</LI>
  <LI class=3Dfirst><A=20
  =
href=3D"http://www.metrolanddurhamregion.com/circulationquestion.html">Ne=
wspaper=20
  Delivery</A></LI>
  <LI><A href=3D"http://durhamregion.com/stopdelivery.php">Temporarily =
Stop Your=20
  Newspaper</A></LI>
  <LI><A href=3D"http://www.metrolanddurhamregion.com/">Staff =
Directory</A></LI>
  <LI><A href=3D"http://www.metrolanddurhamregion.com/">Office=20
Information</A></LI>
  <LI><A href=3D"http://www.metrolanddurhamregion.com/">Corporate=20
  Information</A></LI></UL></DIV>
<DIV class=3DfooterSection>
<UL>
  <LI class=3DfooterHeader>newsdurhamregion.com<BR>Family of =
Publications</LI>
  <LI class=3Dfirst><A=20
  =
href=3D"http://www.metroland.com/Communities/100366/Oshawa_This_Week">Osh=
awa=20
  This Week</A></LI>
  <LI><A=20
  =
href=3D"http://www.metroland.com/Communities/101559/Whitby_This_Week">Whi=
tby=20
  This Week</A></LI>
  <LI><A=20
  =
href=3D"http://www.metroland.com/Communities/101442/Clarington_This_Week"=
>Clarington=20
  This Week</A></LI>
  <LI><A=20
  =
href=3D"http://www.metroland.com/Communities/101558/Ajax_News_Advertiser"=
>Ajax/Pickering=20
  News Advertiser</A></LI>
  <LI><A =
href=3D"http://www.metroland.com/Communities/100390/Port_Perry_Star">Port=
=20
  Perry Star</A></LI>
  <LI><A=20
  =
href=3D"http://www.metroland.com/Communities/100394/Uxbridge_Times_Journa=
l">Uxbridge=20
  Times Journal</A></LI></UL>
<UL style=3D"PADDING-TOP: 10px">
  <LI class=3DfooterHeader>Submit</LI>
  <LI class=3Dfirst><A=20
  href=3D"http://newsdurhamregion.com/posts/feedback">Feedback</A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/posts/submitletter">Letters =
to the=20
  Editor</A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/posts/gameReport">Game=20
  Reports</A></LI>
  <LI><A =
href=3D"http://newsdurhamregion.com/posts/newBusinessOpening">New=20
  Business Opening</A></LI>
  <LI><A href=3D"http://www.mediamash.ca/submit/">Upload Your Photos and =

  Videos</A></LI>
  <LI><A href=3D"http://newsdurhamregion.com/posts/newsTip">News=20
Tips</A></LI></UL></DIV></DIV>
<DIV style=3D"WIDTH: 340px; FLOAT: right"><IMG style=3D"MARGIN: 5px =
auto" alt=3D""=20
src=3D"http://newsdurhamregion.com/App_Themes/NewsDurham/images/ad_line.g=
if">=20
<TABLE style=3D"WIDTH: 340px; FLOAT: right" border=3D0 cellSpacing=3D0=20
  cellPadding=3D0><TBODY>
  <TR>
    <TD class=3DtxtadsBorder>
      <DIV class=3Dhotlistings><!-- begin ad tag-->
      <SCRIPT language=3DJavaScript type=3Dtext/javascript=20
      =
src=3D"http://ad.doubleclick.net/adj/durhamregion/dr/front;kw=3Dpos=3D1;s=
z=3D1x1;ord=3D[timestamp]?"></SCRIPT>
      <NOSCRIPT><A=20
      =
href=3D"http://ad.doubleclick.net/jump/durhamregion/dr/front;kw=3Dpos=3D1=
;sz=3D1x1;ord=3D[timestamp]?"=20
      target=3D_blank><IMG border=3D0 alt=3D""=20
      =
src=3D"http://ad.doubleclick.net/ad/durhamregion/dr/front;kw=3Dpos=3D1;sz=
=3D1x1;ord=3D[timestamp]?"=20
      width=3D1 height=3D1></A> </NOSCRIPT><!-- End ad tag --></DIV>
      <DIV class=3Dhotlistings><!-- begin ad tag-->
      <SCRIPT language=3DJavaScript type=3Dtext/javascript=20
      =
src=3D"http://ad.doubleclick.net/adj/durhamregion/dr/front;kw=3Dpos=3D2;s=
z=3D1x1;ord=3D[timestamp]?"></SCRIPT>
      <NOSCRIPT><A=20
      =
href=3D"http://ad.doubleclick.net/jump/durhamregion/dr/front;kw=3Dpos=3D2=
;sz=3D1x1;ord=3D[timestamp]?"=20
      target=3D_blank><IMG border=3D0 alt=3D""=20
      =
src=3D"http://ad.doubleclick.net/ad/durhamregion/dr/front;kw=3Dpos=3D2;sz=
=3D1x1;ord=3D[timestamp]?"=20
      width=3D1 height=3D1></A> </NOSCRIPT><!-- End ad tag --></DIV>
      <DIV class=3Dhotlistings><!-- begin ad tag-->
      <SCRIPT language=3DJavaScript type=3Dtext/javascript=20
      =
src=3D"http://ad.doubleclick.net/adj/durhamregion/dr/front;kw=3Dpos=3D3;s=
z=3D1x1;ord=3D[timestamp]?"></SCRIPT>
      <NOSCRIPT><A=20
      =
href=3D"http://ad.doubleclick.net/jump/durhamregion/dr/front;kw=3Dpos=3D3=
;sz=3D1x1;ord=3D[timestamp]?"=20
      target=3D_blank><IMG border=3D0 alt=3D""=20
      =
src=3D"http://ad.doubleclick.net/ad/durhamregion/dr/front;kw=3Dpos=3D3;sz=
=3D1x1;ord=3D[timestamp]?"=20
      width=3D1 height=3D1></A>=20
</NOSCRIPT><!-- End ad tag --></DIV></TD></TR></TBODY></TABLE><IMG=20
style=3D"MARGIN: 5px auto" alt=3D""=20
src=3D"http://newsdurhamregion.com/App_Themes/NewsDurham/images/ad_line.g=
if">=20
</DIV>
<DIV style=3D"CLEAR: both"></DIV><BR><BR>
<DIV id=3Dglobal_footer>
<DIV id=3Dglobal_footer_grey>
<TABLE style=3D"MARGIN-BOTTOM: 10px" cellSpacing=3D0 cellPadding=3D10 =
width=3D"100%">
  <TBODY>
  <TR>
    <TD>
      <P>
      <CENTER><FONT size=3D4>2009 Honours<BR></FONT><FONT =
color=3D#ff5733=20
      size=3D4>news</FONT><FONT size=3D4>durhamregion.com =
</FONT></CENTER>
      <P></P><!--       <select id=3D"footer_menu" name=3D"menu" =
onChange=3D"location=3Ddocument.getElementById('footer_menu').options[doc=
ument.getElementById('footer_menu').selectedIndex].value;" value=3D"GO">
            <option value=3D"#">Network Sites:</option>

            <option value=3D"http://411durhamregion.com/" >411</option>
            <option =
value=3D"http://couponsdurhamregion.com/">Coupons</option>
            <option =
value=3D"http://freedateconnection.com/">Dating</option>
            <option value=3D"http://eventnow.ca/events/">Events</option>
            <option =
value=3D"http://flyersdurhamregion.com/">Flyers</option>
            <option =
value=3D"http://flyersdurhamregion.com/">Marketplace</option>

            <option =
value=3D"http://menusdurhamregion.com/">Menus</option>
            <option =
value=3D"http://communitynotices.ca/">Notices</option>
            <option value=3D"http://movienow.ca/">Movies</option>
            <option value=3D"http://newsdurhamregion.com/">News</option>
            <option =
value=3D"http://photosdurhamregion.com">Photos</option>
            <option value=3D"http://homes.durhamregion.com/">Real =
Estate</option>

            <option =
value=3D"http://weatherdurhamregion.com/weather">Weather</option>
            <option value=3D"http://mediamash.ca/">Video</option>
          </select>
    --></TD>
    <TD align=3Dright><IMG style=3D"MARGIN-RIGHT: 15px"=20
      src=3D"http://durhamregion.com/images/logo_sna.gif" width=3D71 =
height=3D25></TD>
    <TD style=3D"FONT-SIZE: 11px"><STRONG>First Place</STRONG><BR>Best =
Site=20
      Architecture<BR>and Overall Design</TD>
    <TD style=3D"FONT-SIZE: 11px"><STRONG>First Place</STRONG><BR>Best=20
      Overall<BR>Local News Site</TD>
    <TD style=3D"FONT-SIZE: 11px"><STRONG>First Place</STRONG><BR>Local =
Web=20
      Site<BR>Innovator of the Year </TD></TR></TBODY></TABLE>
<TABLE style=3D"MARGIN-BOTTOM: 10px" width=3D"100%">
  <TBODY>
  <TR>
    <TD>Advertising Info: <A=20
      =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Contact=20
      Sales</A> | <A=20
      =
href=3D"http://media.durhamregion.topscms.com/acrobat/76/32/320c38be404f8=
633e5b19857a9a5.pdf">Sales=20
      Information</A></TD>
    <TD align=3Dright>Contact: <A=20
      href=3D"http://www.metroland.com/page/Privacy%20Policy">Privacy =
Policy</A> |=20
      <A =
href=3D"http://www.newsdurhamregion.com/posts/feedback">Contact</A> | <A =

      =
href=3D"http://www.newsdurhamregion.com/posts/feedback">Feedback</A>=20
  </TD></TR></TBODY></TABLE></DIV>
<TABLE>
  <TBODY>
  <TR>
    <TD><IMG border=3D0=20
      =
src=3D"http://newsdurhamregion.com/App_Themes/NewsDurham/images/MMG76x50.=
jpg"=20
      useMap=3D#footerlinks></TD>
    <TD style=3D"COLOR: #808080; VERTICAL-ALIGN: top">Copyright =C2=A9 =
1995-2009=20
      Metroland Media Group Ltd. - All Rights=20
Reserved</TD></TR></TBODY></TABLE></DIV></DIV></DIV><SPAN=20
id=3Dctl00$LoginWindow1_ContentArea></SPAN>
<SCRIPT type=3Dtext/javascript>
                    function updatectl00$LoginWindow1(param, =
ignorecache, queryParam, callback) {
                        if (!param) param =3D ''; else param =3D '&' + =
param;
                        if (ignorecache) param +=3D =
'&ignorecache=3Dtrue';
                        param +=3D =
'&hostingPageUrl=3D%2farticle%2f132249';
                        =
updateControlContent2('ctl00$LoginWindow1_ContentArea', =
'/control-update?assetId=3D132249&virtualPath=3D/article','id=3Dctl00$Log=
inWindow1&source=3D~/Toplets/Login/LoginWindow.ascx&duration=3D0&' + =
param, queryParam, function(responseText) { if (callback) =
callback(responseText);})
                    }updatectl00$LoginWindow1();</SCRIPT>
<SPAN id=3Dctl00$RegisterUserWindow1_ContentArea></SPAN>
<SCRIPT type=3Dtext/javascript>
                    function updatectl00$RegisterUserWindow1(param, =
ignorecache, queryParam, callback) {
                        if (!param) param =3D ''; else param =3D '&' + =
param;
                        if (ignorecache) param +=3D =
'&ignorecache=3Dtrue';
                        param +=3D =
'&hostingPageUrl=3D%2farticle%2f132249';
                        =
updateControlContent2('ctl00$RegisterUserWindow1_ContentArea', =
'/control-update?assetId=3D132249&virtualPath=3D/article','id=3Dctl00$Reg=
isterUserWindow1&source=3D~/Toplets/Login/RegisterUserWindow.ascx&duratio=
n=3D-1&' + param, queryParam, function(responseText) { if (callback) =
callback(responseText);})
                    }updatectl00$RegisterUserWindow1();</SCRIPT>
</DIV>
<SCRIPT type=3Dtext/javascript>
//<![CDATA[

var Page_ValidationActive =3D false;
if (typeof(ValidatorOnLoad) =3D=3D "function") {
    ValidatorOnLoad();
}

function ValidatorOnSubmit() {
    if (Page_ValidationActive) {
        return ValidatorCommonOnSubmit();
    }
    else {
        return true;
    }
}
        Sys.Application.initialize();
//]]>
</SCRIPT>
</FORM><IMG border=3D0=20
src=3D"http://newsdurhamregion.com/tops-counter?uid=3D132249&amp;counter=3D=
" width=3D0=20
height=3D0></BODY></HTML>

------=_NextPart_001_00EF_01CA15CF.5B6AF430
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/toplets/news/mostpopular/home

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD=20
id=3DHead1><TITLE>MostPopular</TITLE>
<META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type>
<STYLE type=3Dtext/css>BODY {
	FONT-FAMILY: Verdana, Arial, Helvetica, Sans-Serif; FONT-SIZE: 11px
}
A {
	COLOR: #369; TEXT-DECORATION: none
}
A:visited {
	COLOR: #369; TEXT-DECORATION: none
}
A:active {
	COLOR: #369; TEXT-DECORATION: none
}
A:hover {
	TEXT-DECORATION: underline
}
</STYLE>
<LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/topletsresources/news/mostpopular/css=
/mostpopular.css">
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18813"></HEAD>
<BODY>
<FORM id=3Dform2 method=3Dpost name=3Dform2 =
action=3D/toplets/news/mostpopular/home>
<DIV><INPUT id=3D__EVENTTARGET type=3Dhidden name=3D__EVENTTARGET> =
<INPUT=20
id=3D__EVENTARGUMENT type=3Dhidden name=3D__EVENTARGUMENT> <INPUT =
id=3D__VIEWSTATE=20
value=3D/wEPDwULLTE0MTI5ODk0ODRkZA=3D=3D type=3Dhidden =
name=3D__VIEWSTATE> </DIV>
<SCRIPT type=3Dtext/javascript>
//<![CDATA[
var theForm =3D document.forms['form2'];
if (!theForm) {
    theForm =3D document.form2;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() !=3D false)) {
        theForm.__EVENTTARGET.value =3D eventTarget;
        theForm.__EVENTARGUMENT.value =3D eventArgument;
        theForm.submit();
    }
}
//]]>
</SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/WebResource.axd?d=3DLnvhgTo-96yyUSYl08=
MQFg2&amp;t=3D633595190073246099"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/ScriptResource.axd?d=3DqXo0sjdh9Q2rdRl=
vYsYaFG-HgTAWbrA6UcG0APePZibwdnh50mccxd_s2AZ8Y99V0&amp;t=3D63371848076000=
0000"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/ScriptResource.axd?d=3DqXo0sjdh9Q2rdRl=
vYsYaFG-HgTAWbrA6UcG0APePZiYx80NeCSs50L8oiv57KklhkPExN0CUhYpSc95h4IyYVg2&=
amp;t=3D633718480760000000"></SCRIPT>

<SCRIPT type=3Dtext/javascript>
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager2', =
document.getElementById('form2'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tmostread=
counter$counterpanel'], [], [], 90);
//]]>
</SCRIPT>

<DIV id=3Dmostreadcounter_counterpanel>
<DIV class=3Dmostpopular><INPUT id=3Dmostreadcounter_currentcounter=20
value=3DMostReadCounter type=3Dhidden =
name=3Dmostreadcounter$currentcounter>=20
<DIV id=3Dmostreadcounter_counterscontainer class=3Dcounters><A=20
id=3Dmostreadcounter_MostReadCounter class=3Dactive=20
href=3D"javascript:__doPostBack('mostreadcounter$MostReadCounter','')">Po=
pular</A><A=20
id=3Dmostreadcounter_MostEmailedCounter=20
href=3D"javascript:__doPostBack('mostreadcounter$MostEmailedCounter','')"=
>Shared</A><A=20
id=3Dmostreadcounter_RecommendedCounter=20
href=3D"javascript:__doPostBack('mostreadcounter$RecommendedCounter','')"=
>Recommended</A></DIV><INPUT=20
id=3Dmostreadcounter_currentrange value=3Dtoday type=3Dhidden=20
name=3Dmostreadcounter$currentrange>=20
<DIV id=3Dmostreadcounter_rangescontainer class=3Dranges><A =
id=3Dmostreadcounter_today=20
class=3Dactive=20
href=3D"javascript:__doPostBack('mostreadcounter$today','')">Today</A><A =

id=3Dmostreadcounter_seven=20
href=3D"javascript:__doPostBack('mostreadcounter$seven','')">This =
Week</A><A=20
id=3Dmostreadcounter_thirty=20
href=3D"javascript:__doPostBack('mostreadcounter$thirty','')">This =
Month</A></DIV>
<DIV class=3Ddata>
<UL>
  <LI class=3Dodd>
  <DIV class=3Dmostread_title><A =
href=3D"http://newsdurhamregion.com/article/132515"=20
  target=3D_top>BREAKING NEWS VIDEO: Thick black smoke...</A></DIV>
  <DIV class=3Dmostreadviews></DIV>
  <DIV style=3D"CLEAR: both"></DIV></LI>
  <LI class=3Deven>
  <DIV class=3Dmostread_title><A =
href=3D"http://newsdurhamregion.com/article/132521"=20
  target=3D_top>Massive fire in south Oshawa</A></DIV>
  <DIV class=3Dmostreadviews></DIV>
  <DIV style=3D"CLEAR: both"></DIV></LI>
  <LI class=3Dodd>
  <DIV class=3Dmostread_title><A =
href=3D"http://newsdurhamregion.com/article/132444"=20
  target=3D_top>Child found sleeping in vehicle at Ajax...</A></DIV>
  <DIV class=3Dmostreadviews></DIV>
  <DIV style=3D"CLEAR: both"></DIV></LI>
  <LI class=3Deven>
  <DIV class=3Dmostread_title><A =
href=3D"http://newsdurhamregion.com/article/132451"=20
  target=3D_top>Police hope facial reconstruction image...</A></DIV>
  <DIV class=3Dmostreadviews></DIV>
  <DIV style=3D"CLEAR: both"></DIV></LI>
  <LI class=3Dodd>
  <DIV class=3Dmostread_title><A =
href=3D"http://newsdurhamregion.com/article/132348"=20
  target=3D_top>Two new night spots open in Oshawa</A></DIV>
  <DIV class=3Dmostreadviews></DIV>
  <DIV style=3D"CLEAR: both"></DIV></LI>
  <LI class=3Deven>
  <DIV class=3Dmostread_title><A =
href=3D"http://newsdurhamregion.com/article/132445"=20
  target=3D_top>Whitby teen stabbed in parking lot...</A></DIV>
  <DIV class=3Dmostreadviews></DIV>
  <DIV style=3D"CLEAR: both"></DIV></LI>
  <LI class=3Dodd>
  <DIV class=3Dmostread_title><A =
href=3D"http://newsdurhamregion.com/article/132392"=20
  target=3D_top>Oshawa woman cries foul over cancer...</A></DIV>
  <DIV class=3Dmostreadviews></DIV>
  <DIV style=3D"CLEAR: both"></DIV></LI>
  <LI class=3Deven>
  <DIV class=3Dmostread_title><A =
href=3D"http://newsdurhamregion.com/article/132522"=20
  target=3D_top>BREAKING NEWS VIDEO: Raging flames and...</A></DIV>
  <DIV class=3Dmostreadviews></DIV>
  <DIV style=3D"CLEAR: both"></DIV></LI></UL></DIV>
<DIV style=3D"CLEAR: both"></DIV></DIV></DIV>
<SCRIPT type=3Dtext/javascript>
//<![CDATA[
Sys.Application.initialize();
//]]>
</SCRIPT>
</FORM></BODY></HTML>

------=_NextPart_001_00EF_01CA15CF.5B6AF430--

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/js/newsDurham/master.js

=EF=BB=BFfunction ShowGallery(id)
{

window.open('/showgallery?gid=3D'+id,'PhotoGallery', 'Toolbar=3Dno, =
Location=3Dno, Directories=3Dno, Status=3D0, Menubar=3D0, =
Scrollbars=3D0,Resize=3D0, width=3D550, height=3D610');

}

 //Change font size for article body

var defaultfontsize=3D11;
function SetFontSize(p) {
if (p =3D=3D "grow") {
if(defaultfontsize<16) { defaultfontsize+=3D2; }
}
else {
if(defaultfontsize>10) { defaultfontsize-=3D2; }
}
document.getElementById('articleBody').style.fontSize=3Ddefaultfontsize+'=
px';
}

function initfontsize()
{
document.getElementById('articleBody').style.fontSize=3Ddefaultfontsize;
}

//Open new window
 function openWin(url) {
        aWindow =3D window.open(url, 'cgiwindow', 'Toolbar=3Dno, =
Location=3Dno, Directories=3Dno, Status=3D0, Menubar=3D0, =
Scrollbars=3D1,  Resize=3D1, width=3D780, height=3D750');
    }
   =20
//Open new window shorter height
 function openWinSmall(url) {
        aWindow =3D window.open(url, 'cgiwindow', 'Toolbar=3Dno, =
Location=3Dno, Directories=3Dno, Status=3D0, Menubar=3D0, =
Scrollbars=3D1,  Resize=3D1, width=3D780, height=3D580');
    }   =20
   =20
   =20
// Print    =20
function printArticle()
{
window.frames['this2print'].focus();
window.frames['this2print'].print();


}

// Minimize and maximize divs effect
var toggleOpenPic =3D new Image;
var toggleClosePic =3D new Image;
toggleOpenPic =3D =
"/App_Themes/ParentCentral/standard/images/icoEventSchedMinus.gif";=20
toggleClosePic =3D =
"/App_Themes/ParentCentral/standard/images/icoEventSchedPlus.gif";
	=09
function toggleImageLrg(myID)=20
{
var str =3D myID.src;
    if(str.indexOf('icoEventSchedMinus.gif') !=3D -1) {
	    myID.src =3D toggleClosePic;
    } else {
	    myID.src =3D toggleOpenPic;
    }
} =20



  function openWinMedia(url) {
aWindow=3Dwindow.open(url, 'cgiwindow', =
'toolbar=3D0,location=3D0,directories=3D0,status=3D0,menubar=3D0,scrollba=
rs=3D1,resizable=3D1,width=3D705,height=3D500');
 }
=20
=20
   function getArgs(title) {
        var args =3D new Object();
        var query =3D location.search.substring(1);
        var pairs =3D query.split("&");
       =20
        for(var i=3D0;i<pairs.length;i++){
            var pos =3D pairs[i].indexOf('=3D');
            if (pos =3D=3D -1) continue;
            var argname =3D pairs[i].substring(0,pos);
           =20
            if(argname =3D=3D "title") {
                var value =3D pairs[i].substring(pos+1);
                value =3D decodeURIComponent(value);
                args[argname] =3D value;
                document.write (args[argname]);
            }
        }
    } =20
   =20
      function openWinMediaVideo(url) {
aWindow=3Dwindow.open(url, 'cgiwindow', 'Toolbar=3D0, Location=3D0, =
Directories=3D0, Status=3D0, Menubar=3D0, Scrollbars=3D0, resizable=3D1, =
width=3D530, height=3D575');
 }
=20
 function openTimeline(url) {
aWindow=3Dwindow.open(url, 'cgiwindow', 'Toolbar=3D0, Location=3D0, =
Directories=3D0, Status=3D0, Menubar=3D0, Scrollbars=3D0,  =
resizable=3D1, width=3D880, height=3D600');
 }
=20
 function openAudioPlayer(url) {
aWindow=3Dwindow.open(url, 'cgiwindow', 'Toolbar=3D0, Location=3D0, =
Directories=3D0, Status=3D0, Menubar=3D0, Scrollbars=3D0,  =
resizable=3D0, width=3D300, height=3D100');
 }
=20
=20
=20
 // handles search from the header section of pages
//function sbmtsearch(id,keyword){
//    var form1 =3D document.getelementbyid(id);
//    if(form1 =3D=3D null)
//        form1 =3D document.forms[0];
//   =20
//    var dest=3Ddocument.getelementbyid('destination').value;
//    var kwrd=3Ddocument.getelementbyid('txtsearch').value;
//    var loc=3D"/searchresults?assettype=3D" + atype + "&q=3D" + kwrd;
//    if( dest =3D=3D 'google' ) { =
loc=3D"http://www.google.com/search?q=3D" + kwrd; }
//    document.location.href=3Dloc;
//   =20
//    return false;
//}
//=20
// function sbmtSrchKeyPress( e, id, keyword ) {
//  var keynum;
//  var keychar;

//  if(window.event) // IE
//  {
//    keynum =3D e.keyCode;
//  }
//  else if(e.which) // Netscape/Firefox/Opera
//  {
//    keynum =3D e.which;
//  }
//  keychar =3D String.fromCharCode(keynum);
//  if(keychar =3D=3D '\n' || keychar =3D=3D '\r')
//  {
//    sbmtSearch( id, keyword);
//    return false;
//  }
//}=20

//function killEnter(evt) {
//  if(evt.keyCode =3D=3D 13 || evt.which =3D=3D 13) {
//      return false;
//  }
//  return true;
//}

//function catchenter(evt, args) {
//  if (evt) {
//  keyCode=3Devt.keyCode;
//  } else {
//    keyCode =3D window.event.keyCode;
//  }
// =20
//  if (keyCode =3D=3D 13){
//     args['function'](args);
//     return false
//  }

//  return true;
//}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/js/swfobject.js

/**=0A=
 * SWFObject v1.5: Flash Player detection and embed - =
http://blog.deconcept.com/swfobject/=0A=
 *=0A=
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT =
License:=0A=
 * http://www.opensource.org/licenses/mit-license.php=0A=
 *=0A=
 */=0A=
if(typeof deconcept=3D=3D"undefined"){var deconcept=3Dnew =
Object();}if(typeof =
deconcept.util=3D=3D"undefined"){deconcept.util=3Dnew =
Object();}if(typeof =
deconcept.SWFObjectUtil=3D=3D"undefined"){deconcept.SWFObjectUtil=3Dnew =
Object();}deconcept.SWFObject=3Dfunction(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!=
document.getElementById){return;}this.DETECT_KEY=3D_a?_a:"detectflash";th=
is.skipDetect=3Ddeconcept.util.getRequestParameter(this.DETECT_KEY);this.=
params=3Dnew Object();this.variables=3Dnew =
Object();this.attributes=3Dnew =
Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id"=
,id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height=
",h);}if(_5){this.setAttribute("version",new =
deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=3Dd=
econcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&=
&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=3Dtrue;}if(c=
){this.addParam("bgcolor",c);}var =
q=3D_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpress=
Install",false);this.setAttribute("doExpressInstall",false);var =
_c=3D(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.s=
etAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);=
}};deconcept.SWFObject.prototype=3D{useExpressInstall:function(_d){this.x=
iSWFPath=3D!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInsta=
ll",true);},setAttribute:function(_e,_f){this.attributes[_e]=3D_f;},getAt=
tribute:function(_10){return =
this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=3D_12;=
},getParams:function(){return =
this.params;},addVariable:function(_13,_14){this.variables[_13]=3D_14;},g=
etVariable:function(_15){return =
this.variables[_15];},getVariables:function(){return =
this.variables;},getVariablePairs:function(){var _16=3Dnew Array();var =
key;var _18=3Dthis.getVariables();for(key in =
_18){_16[_16.length]=3Dkey+"=3D"+_18[key];}return =
_16;},getSWFHTML:function(){var =
_19=3D"";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.l=
ength){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplay=
erType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19=3D"<embed =
type=3D\"application/x-shockwave-flash\" =
src=3D\""+this.getAttribute("swf")+"\" =
width=3D\""+this.getAttribute("width")+"\" =
height=3D\""+this.getAttribute("height")+"\" =
style=3D\""+this.getAttribute("style")+"\"";_19+=3D" =
id=3D\""+this.getAttribute("id")+"\" =
name=3D\""+this.getAttribute("id")+"\" ";var =
_1a=3Dthis.getParams();for(var key in =
_1a){_19+=3D[key]+"=3D\""+_1a[key]+"\" ";}var =
_1c=3Dthis.getVariablePairs().join("&");if(_1c.length>0){_19+=3D"flashvar=
s=3D\""+_1c+"\"";}_19+=3D"/>";}else{if(this.getAttribute("doExpressInstal=
l")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",t=
his.xiSWFPath);}_19=3D"<object id=3D\""+this.getAttribute("id")+"\" =
classid=3D\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" =
width=3D\""+this.getAttribute("width")+"\" =
height=3D\""+this.getAttribute("height")+"\" =
style=3D\""+this.getAttribute("style")+"\">";_19+=3D"<param =
name=3D\"movie\" value=3D\""+this.getAttribute("swf")+"\" />";var =
_1d=3Dthis.getParams();for(var key in _1d){_19+=3D"<param =
name=3D\""+key+"\" value=3D\""+_1d[key]+"\" />";}var =
_1f=3Dthis.getVariablePairs().join("&");if(_1f.length>0){_19+=3D"<param =
name=3D\"flashvars\" value=3D\""+_1f+"\" />";}_19+=3D"</object>";}return =
_19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var =
_21=3Dnew =
deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21=
)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.=
setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",es=
cape(this.getAttribute("xiRedirectUrl")));document.title=3Ddocument.title=
.slice(0,47)+" - Flash Player =
Installation";this.addVariable("MMdoctitle",document.title);}}if(this.ski=
pDetect||this.getAttribute("doExpressInstall")||this.installedVer.version=
IsValid(this.getAttribute("version"))){var n=3D(typeof =
_20=3D=3D"string")?document.getElementById(_20):_20;n.innerHTML=3Dthis.ge=
tSWFHTML();return =
true;}else{if(this.getAttribute("redirectUrl")!=3D""){document.location.r=
eplace(this.getAttribute("redirectUrl"));}}return =
false;}};deconcept.SWFObjectUtil.getPlayerVersion=3Dfunction(){var =
_23=3Dnew =
deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeType=
s.length){var x=3Dnavigator.plugins["Shockwave =
Flash"];if(x&&x.description){_23=3Dnew =
deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replac=
e(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&nav=
igator.userAgent.indexOf("Windows CE")>=3D0){var axo=3D1;var =
_26=3D3;while(axo){try{_26++;axo=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=3Dnew =
deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=3Dnull;}}}else{try{var =
axo=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var =
axo=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=3Dnew =
deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=3D"always";}catch=
(e){if(_23.major=3D=3D6){return _23;}}try{axo=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=3Dnull=
){_23=3Dnew deconcept.PlayerVersion(axo.GetVariable("$version").split(" =
")[1].split(","));}}}return =
_23;};deconcept.PlayerVersion=3Dfunction(_29){this.major=3D_29[0]!=3Dnull=
?parseInt(_29[0]):0;this.minor=3D_29[1]!=3Dnull?parseInt(_29[1]):0;this.r=
ev=3D_29[2]!=3Dnull?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototyp=
e.versionIsValid=3Dfunction(fv){if(this.major<fv.major){return =
false;}if(this.major>fv.major){return =
true;}if(this.minor<fv.minor){return =
false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return =
false;}return =
true;};deconcept.util=3D{getRequestParameter:function(_2b){var =
q=3Ddocument.location.search||document.location.hash;if(_2b=3D=3Dnull){re=
turn q;}if(q){var _2d=3Dq.substring(1).split("&");for(var =
i=3D0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("=3D"))=3D=3D=
_2b){return _2d[i].substring((_2d[i].indexOf("=3D")+1));}}}return =
"";}};deconcept.SWFObjectUtil.cleanupSWFs=3Dfunction(){var =
_2f=3Ddocument.getElementsByTagName("OBJECT");for(var =
i=3D_2f.length-1;i>=3D0;i--){_2f[i].style.display=3D"none";for(var x in =
_2f[i]){if(typeof =
_2f[i][x]=3D=3D"function"){_2f[i][x]=3Dfunction(){};}}}};if(deconcept.SWF=
Object.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.pre=
pUnload=3Dfunction(){__flash_unloadHandler=3Dfunction(){};__flash_savedUn=
loadHandler=3Dfunction(){};window.attachEvent("onunload",deconcept.SWFObj=
ectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFO=
bjectUtil.prepUnload);deconcept.unloadSet=3Dtrue;}}if(!document.getElemen=
tById&&document.all){document.getElementById=3Dfunction(id){return =
document.all[id];};}var =
getQueryParamValue=3Ddeconcept.util.getRequestParameter;var =
FlashObject=3Ddeconcept.SWFObject;var SWFObject=3Ddeconcept.SWFObject;
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/js/prototype.js

/*  Prototype JavaScript framework, version 1.6.0.1=0A=
 *  (c) 2005-2007 Sam Stephenson=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *  For details, see the Prototype web site: http://www.prototypejs.org/=0A=
 *=0A=
 =
*------------------------------------------------------------------------=
--*/=0A=
=0A=
var Prototype =3D {=0A=
  Version: '1.6.0.1',=0A=
=0A=
  Browser: {=0A=
    IE:     !!(window.attachEvent && !window.opera),=0A=
    Opera:  !!window.opera,=0A=
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A=
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && =
navigator.userAgent.indexOf('KHTML') =3D=3D -1,=0A=
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A=
  },=0A=
=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate,=0A=
    ElementExtensions: !!window.HTMLElement,=0A=
    SpecificElementExtensions:=0A=
      document.createElement('div').__proto__ &&=0A=
      document.createElement('div').__proto__ !=3D=3D=0A=
        document.createElement('form').__proto__=0A=
  },=0A=
=0A=
  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',=0A=
  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A=
=0A=
  emptyFunction: function() { },=0A=
  K: function(x) { return x }=0A=
};=0A=
=0A=
if (Prototype.Browser.MobileSafari)=0A=
  Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A=
=0A=
=0A=
/* Based on Alex Arnell's inheritance implementation. */=0A=
var Class =3D {=0A=
  create: function() {=0A=
    var parent =3D null, properties =3D $A(arguments);=0A=
    if (Object.isFunction(properties[0]))=0A=
      parent =3D properties.shift();=0A=
=0A=
    function klass() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
=0A=
    Object.extend(klass, Class.Methods);=0A=
    klass.superclass =3D parent;=0A=
    klass.subclasses =3D [];=0A=
=0A=
    if (parent) {=0A=
      var subclass =3D function() { };=0A=
      subclass.prototype =3D parent.prototype;=0A=
      klass.prototype =3D new subclass;=0A=
      parent.subclasses.push(klass);=0A=
    }=0A=
=0A=
    for (var i =3D 0; i < properties.length; i++)=0A=
      klass.addMethods(properties[i]);=0A=
=0A=
    if (!klass.prototype.initialize)=0A=
      klass.prototype.initialize =3D Prototype.emptyFunction;=0A=
=0A=
    klass.prototype.constructor =3D klass;=0A=
=0A=
    return klass;=0A=
  }=0A=
};=0A=
=0A=
Class.Methods =3D {=0A=
  addMethods: function(source) {=0A=
    var ancestor   =3D this.superclass && this.superclass.prototype;=0A=
    var properties =3D Object.keys(source);=0A=
=0A=
    if (!Object.keys({ toString: true }).length)=0A=
      properties.push("toString", "valueOf");=0A=
=0A=
    for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A=
      var property =3D properties[i], value =3D source[property];=0A=
      if (ancestor && Object.isFunction(value) &&=0A=
          value.argumentNames().first() =3D=3D "$super") {=0A=
        var method =3D value, value =3D Object.extend((function(m) {=0A=
          return function() { return ancestor[m].apply(this, arguments) =
};=0A=
        })(property).wrap(method), {=0A=
          valueOf:  function() { return method },=0A=
          toString: function() { return method.toString() }=0A=
        });=0A=
      }=0A=
      this.prototype[property] =3D value;=0A=
    }=0A=
=0A=
    return this;=0A=
  }=0A=
};=0A=
=0A=
var Abstract =3D { };=0A=
=0A=
Object.extend =3D function(destination, source) {=0A=
  for (var property in source)=0A=
    destination[property] =3D source[property];=0A=
  return destination;=0A=
};=0A=
=0A=
Object.extend(Object, {=0A=
  inspect: function(object) {=0A=
    try {=0A=
      if (Object.isUndefined(object)) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : object.toString();=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  },=0A=
=0A=
  toJSON: function(object) {=0A=
    var type =3D typeof object;=0A=
    switch (type) {=0A=
      case 'undefined':=0A=
      case 'function':=0A=
      case 'unknown': return;=0A=
      case 'boolean': return object.toString();=0A=
    }=0A=
=0A=
    if (object =3D=3D=3D null) return 'null';=0A=
    if (object.toJSON) return object.toJSON();=0A=
    if (Object.isElement(object)) return;=0A=
=0A=
    var results =3D [];=0A=
    for (var property in object) {=0A=
      var value =3D Object.toJSON(object[property]);=0A=
      if (!Object.isUndefined(value))=0A=
        results.push(property.toJSON() + ': ' + value);=0A=
    }=0A=
=0A=
    return '{' + results.join(', ') + '}';=0A=
  },=0A=
=0A=
  toQueryString: function(object) {=0A=
    return $H(object).toQueryString();=0A=
  },=0A=
=0A=
  toHTML: function(object) {=0A=
    return object && object.toHTML ? object.toHTML() : =
String.interpret(object);=0A=
  },=0A=
=0A=
  keys: function(object) {=0A=
    var keys =3D [];=0A=
    for (var property in object)=0A=
      keys.push(property);=0A=
    return keys;=0A=
  },=0A=
=0A=
  values: function(object) {=0A=
    var values =3D [];=0A=
    for (var property in object)=0A=
      values.push(object[property]);=0A=
    return values;=0A=
  },=0A=
=0A=
  clone: function(object) {=0A=
    return Object.extend({ }, object);=0A=
  },=0A=
=0A=
  isElement: function(object) {=0A=
    return object && object.nodeType =3D=3D 1;=0A=
  },=0A=
=0A=
  isArray: function(object) {=0A=
    return object && object.constructor =3D=3D=3D Array;=0A=
  },=0A=
=0A=
  isHash: function(object) {=0A=
    return object instanceof Hash;=0A=
  },=0A=
=0A=
  isFunction: function(object) {=0A=
    return typeof object =3D=3D "function";=0A=
  },=0A=
=0A=
  isString: function(object) {=0A=
    return typeof object =3D=3D "string";=0A=
  },=0A=
=0A=
  isNumber: function(object) {=0A=
    return typeof object =3D=3D "number";=0A=
  },=0A=
=0A=
  isUndefined: function(object) {=0A=
    return typeof object =3D=3D "undefined";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Function.prototype, {=0A=
  argumentNames: function() {=0A=
    var names =3D =
this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").inv=
oke("strip");=0A=
    return names.length =3D=3D 1 && !names[0] ? [] : names;=0A=
  },=0A=
=0A=
  bind: function() {=0A=
    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return =
this;=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function() {=0A=
      return __method.apply(object, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  bindAsEventListener: function() {=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function(event) {=0A=
      return __method.apply(object, [event || =
window.event].concat(args));=0A=
    }=0A=
  },=0A=
=0A=
  curry: function() {=0A=
    if (!arguments.length) return this;=0A=
    var __method =3D this, args =3D $A(arguments);=0A=
    return function() {=0A=
      return __method.apply(this, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  delay: function() {=0A=
    var __method =3D this, args =3D $A(arguments), timeout =3D =
args.shift() * 1000;=0A=
    return window.setTimeout(function() {=0A=
      return __method.apply(__method, args);=0A=
    }, timeout);=0A=
  },=0A=
=0A=
  wrap: function(wrapper) {=0A=
    var __method =3D this;=0A=
    return function() {=0A=
      return wrapper.apply(this, =
[__method.bind(this)].concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  methodize: function() {=0A=
    if (this._methodized) return this._methodized;=0A=
    var __method =3D this;=0A=
    return this._methodized =3D function() {=0A=
      return __method.apply(null, [this].concat($A(arguments)));=0A=
    };=0A=
  }=0A=
});=0A=
=0A=
Function.prototype.defer =3D Function.prototype.delay.curry(0.01);=0A=
=0A=
Date.prototype.toJSON =3D function() {=0A=
  return '"' + this.getUTCFullYear() + '-' +=0A=
    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A=
    this.getUTCDate().toPaddedString(2) + 'T' +=0A=
    this.getUTCHours().toPaddedString(2) + ':' +=0A=
    this.getUTCMinutes().toPaddedString(2) + ':' +=0A=
    this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A=
};=0A=
=0A=
var Try =3D {=0A=
  these: function() {=0A=
    var returnValue;=0A=
=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var lambda =3D arguments[i];=0A=
      try {=0A=
        returnValue =3D lambda();=0A=
        break;=0A=
      } catch (e) { }=0A=
    }=0A=
=0A=
    return returnValue;=0A=
  }=0A=
};=0A=
=0A=
RegExp.prototype.match =3D RegExp.prototype.test;=0A=
=0A=
RegExp.escape =3D function(str) {=0A=
  return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var PeriodicalExecuter =3D Class.create({=0A=
  initialize: function(callback, frequency) {=0A=
    this.callback =3D callback;=0A=
    this.frequency =3D frequency;=0A=
    this.currentlyExecuting =3D false;=0A=
=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    this.timer =3D setInterval(this.onTimerEvent.bind(this), =
this.frequency * 1000);=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    this.callback(this);=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    if (!this.timer) return;=0A=
    clearInterval(this.timer);=0A=
    this.timer =3D null;=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    if (!this.currentlyExecuting) {=0A=
      try {=0A=
        this.currentlyExecuting =3D true;=0A=
        this.execute();=0A=
      } finally {=0A=
        this.currentlyExecuting =3D false;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
Object.extend(String, {=0A=
  interpret: function(value) {=0A=
    return value =3D=3D null ? '' : String(value);=0A=
  },=0A=
  specialChar: {=0A=
    '\b': '\\b',=0A=
    '\t': '\\t',=0A=
    '\n': '\\n',=0A=
    '\f': '\\f',=0A=
    '\r': '\\r',=0A=
    '\\': '\\\\'=0A=
  }=0A=
});=0A=
=0A=
Object.extend(String.prototype, {=0A=
  gsub: function(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D arguments.callee.prepareReplacement(replacement);=0A=
=0A=
    while (source.length > 0) {=0A=
      if (match =3D source.match(pattern)) {=0A=
        result +=3D source.slice(0, match.index);=0A=
        result +=3D String.interpret(replacement(match));=0A=
        source  =3D source.slice(match.index + match[0].length);=0A=
      } else {=0A=
        result +=3D source, source =3D '';=0A=
      }=0A=
    }=0A=
    return result;=0A=
  },=0A=
=0A=
  sub: function(pattern, replacement, count) {=0A=
    replacement =3D this.gsub.prepareReplacement(replacement);=0A=
    count =3D Object.isUndefined(count) ? 1 : count;=0A=
=0A=
    return this.gsub(pattern, function(match) {=0A=
      if (--count < 0) return match[0];=0A=
      return replacement(match);=0A=
    });=0A=
  },=0A=
=0A=
  scan: function(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return String(this);=0A=
  },=0A=
=0A=
  truncate: function(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : =
String(this);=0A=
  },=0A=
=0A=
  strip: function() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  },=0A=
=0A=
  stripTags: function() {=0A=
    return this.replace(/<\/?[^>]+>/gi, '');=0A=
  },=0A=
=0A=
  stripScripts: function() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  },=0A=
=0A=
  extractScripts: function() {=0A=
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A=
    var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A=
    return (this.match(matchAll) || []).map(function(scriptTag) {=0A=
      return (scriptTag.match(matchOne) || ['', ''])[1];=0A=
    });=0A=
  },=0A=
=0A=
  evalScripts: function() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  },=0A=
=0A=
  escapeHTML: function() {=0A=
    var self =3D arguments.callee;=0A=
    self.text.data =3D this;=0A=
    return self.div.innerHTML;=0A=
  },=0A=
=0A=
  unescapeHTML: function() {=0A=
    var div =3D new Element('div');=0A=
    div.innerHTML =3D this.stripTags();=0A=
    return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A=
      $A(div.childNodes).inject('', function(memo, node) { return =
memo+node.nodeValue }) :=0A=
      div.childNodes[0].nodeValue) : '';=0A=
  },=0A=
=0A=
  toQueryParams: function(separator) {=0A=
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A=
    if (!match) return { };=0A=
=0A=
    return match[1].split(separator || '&').inject({ }, function(hash, =
pair) {=0A=
      if ((pair =3D pair.split('=3D'))[0]) {=0A=
        var key =3D decodeURIComponent(pair.shift());=0A=
        var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A=
        if (value !=3D undefined) value =3D decodeURIComponent(value);=0A=
=0A=
        if (key in hash) {=0A=
          if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A=
          hash[key].push(value);=0A=
        }=0A=
        else hash[key] =3D value;=0A=
      }=0A=
      return hash;=0A=
    });=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.split('');=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  },=0A=
=0A=
  times: function(count) {=0A=
    return count < 1 ? '' : new Array(count + 1).join(this);=0A=
  },=0A=
=0A=
  camelize: function() {=0A=
    var parts =3D this.split('-'), len =3D parts.length;=0A=
    if (len =3D=3D 1) return parts[0];=0A=
=0A=
    var camelized =3D this.charAt(0) =3D=3D '-'=0A=
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A=
      : parts[0];=0A=
=0A=
    for (var i =3D 1; i < len; i++)=0A=
      camelized +=3D parts[i].charAt(0).toUpperCase() + =
parts[i].substring(1);=0A=
=0A=
    return camelized;=0A=
  },=0A=
=0A=
  capitalize: function() {=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  },=0A=
=0A=
  underscore: function() {=0A=
    return this.gsub(/::/, =
'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{=
1}_#{2}').gsub(/-/,'_').toLowerCase();=0A=
  },=0A=
=0A=
  dasherize: function() {=0A=
    return this.gsub(/_/,'-');=0A=
  },=0A=
=0A=
  inspect: function(useDoubleQuotes) {=0A=
    var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A=
      var character =3D String.specialChar[match[0]];=0A=
      return character ? character : '\\u00' + =
match[0].charCodeAt().toPaddedString(2, 16);=0A=
    });=0A=
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';=0A=
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return this.inspect(true);=0A=
  },=0A=
=0A=
  unfilterJSON: function(filter) {=0A=
    return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A=
  },=0A=
=0A=
  isJSON: function() {=0A=
    var str =3D this;=0A=
    if (str.blank()) return false;=0A=
    str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A=
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A=
  },=0A=
=0A=
  evalJSON: function(sanitize) {=0A=
    var json =3D this.unfilterJSON();=0A=
    try {=0A=
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A=
    } catch (e) { }=0A=
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A=
  },=0A=
=0A=
  include: function(pattern) {=0A=
    return this.indexOf(pattern) > -1;=0A=
  },=0A=
=0A=
  startsWith: function(pattern) {=0A=
    return this.indexOf(pattern) =3D=3D=3D 0;=0A=
  },=0A=
=0A=
  endsWith: function(pattern) {=0A=
    var d =3D this.length - pattern.length;=0A=
    return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A=
  },=0A=
=0A=
  empty: function() {=0A=
    return this =3D=3D '';=0A=
  },=0A=
=0A=
  blank: function() {=0A=
    return /^\s*$/.test(this);=0A=
  },=0A=
=0A=
  interpolate: function(object, pattern) {=0A=
    return new Template(this, pattern).evaluate(object);=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.WebKit || Prototype.Browser.IE) =
Object.extend(String.prototype, {=0A=
  escapeHTML: function() {=0A=
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');=0A=
  },=0A=
  unescapeHTML: function() {=0A=
    return =
this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');=0A=
  }=0A=
});=0A=
=0A=
String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A=
  if (Object.isFunction(replacement)) return replacement;=0A=
  var template =3D new Template(replacement);=0A=
  return function(match) { return template.evaluate(match) };=0A=
};=0A=
=0A=
String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A=
=0A=
Object.extend(String.prototype.escapeHTML, {=0A=
  div:  document.createElement('div'),=0A=
  text: document.createTextNode('')=0A=
});=0A=
=0A=
with (String.prototype.escapeHTML) div.appendChild(text);=0A=
=0A=
var Template =3D Class.create({=0A=
  initialize: function(template, pattern) {=0A=
    this.template =3D template.toString();=0A=
    this.pattern =3D pattern || Template.Pattern;=0A=
  },=0A=
=0A=
  evaluate: function(object) {=0A=
    if (Object.isFunction(object.toTemplateReplacements))=0A=
      object =3D object.toTemplateReplacements();=0A=
=0A=
    return this.template.gsub(this.pattern, function(match) {=0A=
      if (object =3D=3D null) return '';=0A=
=0A=
      var before =3D match[1] || '';=0A=
      if (before =3D=3D '\\') return match[2];=0A=
=0A=
      var ctx =3D object, expr =3D match[3];=0A=
      var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A=
      match =3D pattern.exec(expr);=0A=
      if (match =3D=3D null) return before;=0A=
=0A=
      while (match !=3D null) {=0A=
        var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', =
']') : match[1];=0A=
        ctx =3D ctx[comp];=0A=
        if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A=
        expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : =
match[0].length);=0A=
        match =3D pattern.exec(expr);=0A=
      }=0A=
=0A=
      return before + String.interpret(ctx);=0A=
    }.bind(this));=0A=
  }=0A=
});=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
=0A=
var $break =3D { };=0A=
=0A=
var Enumerable =3D {=0A=
  each: function(iterator, context) {=0A=
    var index =3D 0;=0A=
    iterator =3D iterator.bind(context);=0A=
    try {=0A=
      this._each(function(value) {=0A=
        iterator(value, index++);=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
    return this;=0A=
  },=0A=
=0A=
  eachSlice: function(number, iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var index =3D -number, slices =3D [], array =3D this.toArray();=0A=
    while ((index +=3D number) < array.length)=0A=
      slices.push(array.slice(index, index+number));=0A=
    return slices.collect(iterator, context);=0A=
  },=0A=
=0A=
  all: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!iterator(value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  any: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result =3D false;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!iterator(value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  collect: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(iterator(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  detect: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  findAll: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  grep: function(filter, iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var results =3D [];=0A=
=0A=
    if (Object.isString(filter))=0A=
      filter =3D new RegExp(filter);=0A=
=0A=
    this.each(function(value, index) {=0A=
      if (filter.match(value))=0A=
        results.push(iterator(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  include: function(object) {=0A=
    if (Object.isFunction(this.indexOf))=0A=
      if (this.indexOf(object) !=3D -1) return true;=0A=
=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  },=0A=
=0A=
  inGroupsOf: function(number, fillWith) {=0A=
    fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  },=0A=
=0A=
  inject: function(memo, iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator(memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  },=0A=
=0A=
  invoke: function(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.map(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  },=0A=
=0A=
  max: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator(value, index);=0A=
      if (result =3D=3D null || value >=3D result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  min: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator(value, index);=0A=
      if (result =3D=3D null || value < result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  partition: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      (iterator(value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  },=0A=
=0A=
  pluck: function(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  reject: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  sortBy: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    return this.map(function(value, index) {=0A=
      return {value: value, criteria: iterator(value, index)};=0A=
    }).sort(function(left, right) {=0A=
      var a =3D left.criteria, b =3D right.criteria;=0A=
      return a < b ? -1 : a > b ? 1 : 0;=0A=
    }).pluck('value');=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.map();=0A=
  },=0A=
=0A=
  zip: function() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (Object.isFunction(args.last()))=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      return iterator(collections.pluck(index));=0A=
    });=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.toArray().length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Enumerable, {=0A=
  map:     Enumerable.collect,=0A=
  find:    Enumerable.detect,=0A=
  select:  Enumerable.findAll,=0A=
  filter:  Enumerable.findAll,=0A=
  member:  Enumerable.include,=0A=
  entries: Enumerable.toArray,=0A=
  every:   Enumerable.all,=0A=
  some:    Enumerable.any=0A=
});=0A=
function $A(iterable) {=0A=
  if (!iterable) return [];=0A=
  if (iterable.toArray) return iterable.toArray();=0A=
  var length =3D iterable.length || 0, results =3D new Array(length);=0A=
  while (length--) results[length] =3D iterable[length];=0A=
  return results;=0A=
}=0A=
=0A=
if (Prototype.Browser.WebKit) {=0A=
  function $A(iterable) {=0A=
    if (!iterable) return [];=0A=
    if (!(Object.isFunction(iterable) && iterable =3D=3D '[object =
NodeList]') &&=0A=
        iterable.toArray) return iterable.toArray();=0A=
    var length =3D iterable.length || 0, results =3D new Array(length);=0A=
    while (length--) results[length] =3D iterable[length];=0A=
    return results;=0A=
  }=0A=
}=0A=
=0A=
Array.from =3D $A;=0A=
=0A=
Object.extend(Array.prototype, Enumerable);=0A=
=0A=
if (!Array.prototype._reverse) Array.prototype._reverse =3D =
Array.prototype.reverse;=0A=
=0A=
Object.extend(Array.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      iterator(this[i]);=0A=
  },=0A=
=0A=
  clear: function() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  },=0A=
=0A=
  first: function() {=0A=
    return this[0];=0A=
  },=0A=
=0A=
  last: function() {=0A=
    return this[this.length - 1];=0A=
  },=0A=
=0A=
  compact: function() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  },=0A=
=0A=
  flatten: function() {=0A=
    return this.inject([], function(array, value) {=0A=
      return array.concat(Object.isArray(value) ?=0A=
        value.flatten() : [value]);=0A=
    });=0A=
  },=0A=
=0A=
  without: function() {=0A=
    var values =3D $A(arguments);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  },=0A=
=0A=
  reverse: function(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  },=0A=
=0A=
  reduce: function() {=0A=
    return this.length > 1 ? this : this[0];=0A=
  },=0A=
=0A=
  uniq: function(sorted) {=0A=
    return this.inject([], function(array, value, index) {=0A=
      if (0 =3D=3D index || (sorted ? array.last() !=3D value : =
!array.include(value)))=0A=
        array.push(value);=0A=
      return array;=0A=
    });=0A=
  },=0A=
=0A=
  intersect: function(array) {=0A=
    return this.uniq().findAll(function(item) {=0A=
      return array.detect(function(value) { return item =3D=3D=3D value =
});=0A=
    });=0A=
  },=0A=
=0A=
  clone: function() {=0A=
    return [].concat(this);=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    var results =3D [];=0A=
    this.each(function(object) {=0A=
      var value =3D Object.toJSON(object);=0A=
      if (!Object.isUndefined(value)) results.push(value);=0A=
    });=0A=
    return '[' + results.join(', ') + ']';=0A=
  }=0A=
});=0A=
=0A=
// use native browser JS 1.6 implementation if available=0A=
if (Object.isFunction(Array.prototype.forEach))=0A=
  Array.prototype._each =3D Array.prototype.forEach;=0A=
=0A=
if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, =
i) {=0A=
  i || (i =3D 0);=0A=
  var length =3D this.length;=0A=
  if (i < 0) i =3D length + i;=0A=
  for (; i < length; i++)=0A=
    if (this[i] =3D=3D=3D item) return i;=0A=
  return -1;=0A=
};=0A=
=0A=
if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D =
function(item, i) {=0A=
  i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A=
  var n =3D this.slice(0, i).reverse().indexOf(item);=0A=
  return (n < 0) ? n : i - n - 1;=0A=
};=0A=
=0A=
Array.prototype.toArray =3D Array.prototype.clone;=0A=
=0A=
function $w(string) {=0A=
  if (!Object.isString(string)) return [];=0A=
  string =3D string.strip();=0A=
  return string ? string.split(/\s+/) : [];=0A=
}=0A=
=0A=
if (Prototype.Browser.Opera){=0A=
  Array.prototype.concat =3D function() {=0A=
    var array =3D [];=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++) =
array.push(this[i]);=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      if (Object.isArray(arguments[i])) {=0A=
        for (var j =3D 0, arrayLength =3D arguments[i].length; j < =
arrayLength; j++)=0A=
          array.push(arguments[i][j]);=0A=
      } else {=0A=
        array.push(arguments[i]);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  };=0A=
}=0A=
Object.extend(Number.prototype, {=0A=
  toColorPart: function() {=0A=
    return this.toPaddedString(2, 16);=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this + 1;=0A=
  },=0A=
=0A=
  times: function(iterator) {=0A=
    $R(0, this, true).each(iterator);=0A=
    return this;=0A=
  },=0A=
=0A=
  toPaddedString: function(length, radix) {=0A=
    var string =3D this.toString(radix || 10);=0A=
    return '0'.times(length - string.length) + string;=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return isFinite(this) ? this.toString() : 'null';=0A=
  }=0A=
});=0A=
=0A=
$w('abs round ceil floor').each(function(method){=0A=
  Number.prototype[method] =3D Math[method].methodize();=0A=
});=0A=
function $H(object) {=0A=
  return new Hash(object);=0A=
};=0A=
=0A=
var Hash =3D Class.create(Enumerable, (function() {=0A=
=0A=
  function toQueryPair(key, value) {=0A=
    if (Object.isUndefined(value)) return key;=0A=
    return key + '=3D' + encodeURIComponent(String.interpret(value));=0A=
  }=0A=
=0A=
  return {=0A=
    initialize: function(object) {=0A=
      this._object =3D Object.isHash(object) ? object.toObject() : =
Object.clone(object);=0A=
    },=0A=
=0A=
    _each: function(iterator) {=0A=
      for (var key in this._object) {=0A=
        var value =3D this._object[key], pair =3D [key, value];=0A=
        pair.key =3D key;=0A=
        pair.value =3D value;=0A=
        iterator(pair);=0A=
      }=0A=
    },=0A=
=0A=
    set: function(key, value) {=0A=
      return this._object[key] =3D value;=0A=
    },=0A=
=0A=
    get: function(key) {=0A=
      return this._object[key];=0A=
    },=0A=
=0A=
    unset: function(key) {=0A=
      var value =3D this._object[key];=0A=
      delete this._object[key];=0A=
      return value;=0A=
    },=0A=
=0A=
    toObject: function() {=0A=
      return Object.clone(this._object);=0A=
    },=0A=
=0A=
    keys: function() {=0A=
      return this.pluck('key');=0A=
    },=0A=
=0A=
    values: function() {=0A=
      return this.pluck('value');=0A=
    },=0A=
=0A=
    index: function(value) {=0A=
      var match =3D this.detect(function(pair) {=0A=
        return pair.value =3D=3D=3D value;=0A=
      });=0A=
      return match && match.key;=0A=
    },=0A=
=0A=
    merge: function(object) {=0A=
      return this.clone().update(object);=0A=
    },=0A=
=0A=
    update: function(object) {=0A=
      return new Hash(object).inject(this, function(result, pair) {=0A=
        result.set(pair.key, pair.value);=0A=
        return result;=0A=
      });=0A=
    },=0A=
=0A=
    toQueryString: function() {=0A=
      return this.map(function(pair) {=0A=
        var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A=
=0A=
        if (values && typeof values =3D=3D 'object') {=0A=
          if (Object.isArray(values))=0A=
            return values.map(toQueryPair.curry(key)).join('&');=0A=
        }=0A=
        return toQueryPair(key, values);=0A=
      }).join('&');=0A=
    },=0A=
=0A=
    inspect: function() {=0A=
      return '#<Hash:{' + this.map(function(pair) {=0A=
        return pair.map(Object.inspect).join(': ');=0A=
      }).join(', ') + '}>';=0A=
    },=0A=
=0A=
    toJSON: function() {=0A=
      return Object.toJSON(this.toObject());=0A=
    },=0A=
=0A=
    clone: function() {=0A=
      return new Hash(this);=0A=
    }=0A=
  }=0A=
})());=0A=
=0A=
Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;=0A=
Hash.from =3D $H;=0A=
var ObjectRange =3D Class.create(Enumerable, {=0A=
  initialize: function(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  },=0A=
=0A=
  include: function(value) {=0A=
    if (value < this.start)=0A=
      return false;=0A=
    if (this.exclusive)=0A=
      return value < this.end;=0A=
    return value <=3D this.end;=0A=
  }=0A=
});=0A=
=0A=
var $R =3D function(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
};=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new XMLHttpRequest()},=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
};=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responder) {=0A=
    if (!this.include(responder))=0A=
      this.responders.push(responder);=0A=
  },=0A=
=0A=
  unregister: function(responder) {=0A=
    this.responders =3D this.responders.without(responder);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (Object.isFunction(responder[callback])) {=0A=
        try {=0A=
          responder[callback].apply(responder, [request, transport, =
json]);=0A=
        } catch (e) { }=0A=
      }=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Ajax.Responders, Enumerable);=0A=
=0A=
Ajax.Responders.register({=0A=
  onCreate:   function() { Ajax.activeRequestCount++ },=0A=
  onComplete: function() { Ajax.activeRequestCount-- }=0A=
});=0A=
=0A=
Ajax.Base =3D Class.create({=0A=
  initialize: function(options) {=0A=
    this.options =3D {=0A=
      method:       'post',=0A=
      asynchronous: true,=0A=
      contentType:  'application/x-www-form-urlencoded',=0A=
      encoding:     'UTF-8',=0A=
      parameters:   '',=0A=
      evalJSON:     true,=0A=
      evalJS:       true=0A=
    };=0A=
    Object.extend(this.options, options || { });=0A=
=0A=
    this.options.method =3D this.options.method.toLowerCase();=0A=
=0A=
    if (Object.isString(this.options.parameters))=0A=
      this.options.parameters =3D =
this.options.parameters.toQueryParams();=0A=
    else if (Object.isHash(this.options.parameters))=0A=
      this.options.parameters =3D this.options.parameters.toObject();=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request =3D Class.create(Ajax.Base, {=0A=
  _complete: false,=0A=
=0A=
  initialize: function($super, url, options) {=0A=
    $super(options);=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    this.url =3D url;=0A=
    this.method =3D this.options.method;=0A=
    var params =3D Object.clone(this.options.parameters);=0A=
=0A=
    if (!['get', 'post'].include(this.method)) {=0A=
      // simulate other verbs over post=0A=
      params['_method'] =3D this.method;=0A=
      this.method =3D 'post';=0A=
    }=0A=
=0A=
    this.parameters =3D params;=0A=
=0A=
    if (params =3D Object.toQueryString(params)) {=0A=
      // when GET, append parameters to URL=0A=
      if (this.method =3D=3D 'get')=0A=
        this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A=
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A=
        params +=3D '&_=3D';=0A=
    }=0A=
=0A=
    try {=0A=
      var response =3D new Ajax.Response(this);=0A=
      if (this.options.onCreate) this.options.onCreate(response);=0A=
      Ajax.Responders.dispatch('onCreate', this, response);=0A=
=0A=
      this.transport.open(this.method.toUpperCase(), this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous) =
this.respondToReadyState.bind(this).defer(1);=0A=
=0A=
      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
      this.setRequestHeaders();=0A=
=0A=
      this.body =3D this.method =3D=3D 'post' ? (this.options.postBody =
|| params) : null;=0A=
      this.transport.send(this.body);=0A=
=0A=
      /* Force Firefox to handle ready state 4 for synchronous requests =
*/=0A=
      if (!this.options.asynchronous && this.transport.overrideMimeType)=0A=
        this.onStateChange();=0A=
=0A=
    }=0A=
    catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var headers =3D {=0A=
      'X-Requested-With': 'XMLHttpRequest',=0A=
      'X-Prototype-Version': Prototype.Version,=0A=
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'=0A=
    };=0A=
=0A=
    if (this.method =3D=3D 'post') {=0A=
      headers['Content-type'] =3D this.options.contentType +=0A=
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');=0A=
=0A=
      /* Force "Connection: close" for older Mozilla browsers to work=0A=
       * around a bug where XMLHttpRequest sends an incorrect=0A=
       * Content-length header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType &&=0A=
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)=0A=
            headers['Connection'] =3D 'close';=0A=
    }=0A=
=0A=
    // user-defined headers=0A=
    if (typeof this.options.requestHeaders =3D=3D 'object') {=0A=
      var extras =3D this.options.requestHeaders;=0A=
=0A=
      if (Object.isFunction(extras.push))=0A=
        for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A=
          headers[extras[i]] =3D extras[i+1];=0A=
      else=0A=
        $H(extras).each(function(pair) { headers[pair.key] =3D =
pair.value });=0A=
    }=0A=
=0A=
    for (var name in headers)=0A=
      this.transport.setRequestHeader(name, headers[name]);=0A=
  },=0A=
=0A=
  success: function() {=0A=
    var status =3D this.getStatus();=0A=
    return !status || (status >=3D 200 && status < 300);=0A=
  },=0A=
=0A=
  getStatus: function() {=0A=
    try {=0A=
      return this.transport.status || 0;=0A=
    } catch (e) { return 0 }=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var state =3D Ajax.Request.Events[readyState], response =3D new =
Ajax.Response(this);=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      try {=0A=
        this._complete =3D true;=0A=
        (this.options['on' + response.status]=0A=
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A=
         || Prototype.emptyFunction)(response, response.headerJSON);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      var contentType =3D response.getHeader('Content-type');=0A=
      if (this.options.evalJS =3D=3D 'force'=0A=
          || (this.options.evalJS && contentType=0A=
          && =
contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s=
*$/i)))=0A=
        this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + state] || Prototype.emptyFunction)(response, =
response.headerJSON);=0A=
      Ajax.Responders.dispatch('on' + state, this, response, =
response.headerJSON);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      // avoid memory leak in MSIE: clean up=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name) || null;=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval((this.transport.responseText || '').unfilterJSON());=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  dispatchException: function(exception) {=0A=
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);=0A=
    Ajax.Responders.dispatch('onException', this, exception);=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
Ajax.Response =3D Class.create({=0A=
  initialize: function(request){=0A=
    this.request =3D request;=0A=
    var transport  =3D this.transport  =3D request.transport,=0A=
        readyState =3D this.readyState =3D transport.readyState;=0A=
=0A=
    if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) =
{=0A=
      this.status       =3D this.getStatus();=0A=
      this.statusText   =3D this.getStatusText();=0A=
      this.responseText =3D String.interpret(transport.responseText);=0A=
      this.headerJSON   =3D this._getHeaderJSON();=0A=
    }=0A=
=0A=
    if(readyState =3D=3D 4) {=0A=
      var xml =3D transport.responseXML;=0A=
      this.responseXML  =3D Object.isUndefined(xml) ? null : xml;=0A=
      this.responseJSON =3D this._getResponseJSON();=0A=
    }=0A=
  },=0A=
=0A=
  status:      0,=0A=
  statusText: '',=0A=
=0A=
  getStatus: Ajax.Request.prototype.getStatus,=0A=
=0A=
  getStatusText: function() {=0A=
    try {=0A=
      return this.transport.statusText || '';=0A=
    } catch (e) { return '' }=0A=
  },=0A=
=0A=
  getHeader: Ajax.Request.prototype.getHeader,=0A=
=0A=
  getAllHeaders: function() {=0A=
    try {=0A=
      return this.getAllResponseHeaders();=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  getResponseHeader: function(name) {=0A=
    return this.transport.getResponseHeader(name);=0A=
  },=0A=
=0A=
  getAllResponseHeaders: function() {=0A=
    return this.transport.getAllResponseHeaders();=0A=
  },=0A=
=0A=
  _getHeaderJSON: function() {=0A=
    var json =3D this.getHeader('X-JSON');=0A=
    if (!json) return null;=0A=
    json =3D decodeURIComponent(escape(json));=0A=
    try {=0A=
      return json.evalJSON(this.request.options.sanitizeJSON);=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  _getResponseJSON: function() {=0A=
    var options =3D this.request.options;=0A=
    if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A=
      !(this.getHeader('Content-type') || =
'').include('application/json')) ||=0A=
        this.responseText.blank())=0A=
          return null;=0A=
    try {=0A=
      return this.responseText.evalJSON(options.sanitizeJSON);=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.Updater =3D Class.create(Ajax.Request, {=0A=
  initialize: function($super, container, url, options) {=0A=
    this.container =3D {=0A=
      success: (container.success || container),=0A=
      failure: (container.failure || (container.success ? null : =
container))=0A=
    };=0A=
=0A=
    options =3D Object.clone(options);=0A=
    var onComplete =3D options.onComplete;=0A=
    options.onComplete =3D (function(response, json) {=0A=
      this.updateContent(response.responseText);=0A=
      if (Object.isFunction(onComplete)) onComplete(response, json);=0A=
    }).bind(this);=0A=
=0A=
    $super(url, options);=0A=
  },=0A=
=0A=
  updateContent: function(responseText) {=0A=
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'],=0A=
        options =3D this.options;=0A=
=0A=
    if (!options.evalScripts) responseText =3D =
responseText.stripScripts();=0A=
=0A=
    if (receiver =3D $(receiver)) {=0A=
      if (options.insertion) {=0A=
        if (Object.isString(options.insertion)) {=0A=
          var insertion =3D { }; insertion[options.insertion] =3D =
responseText;=0A=
          receiver.insert(insertion);=0A=
        }=0A=
        else options.insertion(receiver, responseText);=0A=
      }=0A=
      else receiver.update(responseText);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A=
  initialize: function($super, container, url, options) {=0A=
    $super(options);=0A=
    this.onComplete =3D this.options.onComplete;=0A=
=0A=
    this.frequency =3D (this.options.frequency || 2);=0A=
    this.decay =3D (this.options.decay || 1);=0A=
=0A=
    this.updater =3D { };=0A=
    this.container =3D container;=0A=
    this.url =3D url;=0A=
=0A=
    this.start();=0A=
  },=0A=
=0A=
  start: function() {=0A=
    this.options.onComplete =3D this.updateComplete.bind(this);=0A=
    this.onTimerEvent();=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    this.updater.options.onComplete =3D undefined;=0A=
    clearTimeout(this.timer);=0A=
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A=
  },=0A=
=0A=
  updateComplete: function(response) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (response.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D response.responseText;=0A=
    }=0A=
    this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * =
this.frequency);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
function $(element) {=0A=
  if (arguments.length > 1) {=0A=
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)=0A=
      elements.push($(arguments[i]));=0A=
    return elements;=0A=
  }=0A=
  if (Object.isString(element))=0A=
    element =3D document.getElementById(element);=0A=
  return Element.extend(element);=0A=
}=0A=
=0A=
if (Prototype.BrowserFeatures.XPath) {=0A=
  document._getElementsByXPath =3D function(expression, parentElement) {=0A=
    var results =3D [];=0A=
    var query =3D document.evaluate(expression, $(parentElement) || =
document,=0A=
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
    for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A=
      results.push(Element.extend(query.snapshotItem(i)));=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!window.Node) var Node =3D { };=0A=
=0A=
if (!Node.ELEMENT_NODE) {=0A=
  // DOM level 2 ECMAScript Language Binding=0A=
  Object.extend(Node, {=0A=
    ELEMENT_NODE: 1,=0A=
    ATTRIBUTE_NODE: 2,=0A=
    TEXT_NODE: 3,=0A=
    CDATA_SECTION_NODE: 4,=0A=
    ENTITY_REFERENCE_NODE: 5,=0A=
    ENTITY_NODE: 6,=0A=
    PROCESSING_INSTRUCTION_NODE: 7,=0A=
    COMMENT_NODE: 8,=0A=
    DOCUMENT_NODE: 9,=0A=
    DOCUMENT_TYPE_NODE: 10,=0A=
    DOCUMENT_FRAGMENT_NODE: 11,=0A=
    NOTATION_NODE: 12=0A=
  });=0A=
}=0A=
=0A=
(function() {=0A=
  var element =3D this.Element;=0A=
  this.Element =3D function(tagName, attributes) {=0A=
    attributes =3D attributes || { };=0A=
    tagName =3D tagName.toLowerCase();=0A=
    var cache =3D Element.cache;=0A=
    if (Prototype.Browser.IE && attributes.name) {=0A=
      tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A=
      delete attributes.name;=0A=
      return Element.writeAttribute(document.createElement(tagName), =
attributes);=0A=
    }=0A=
    if (!cache[tagName]) cache[tagName] =3D =
Element.extend(document.createElement(tagName));=0A=
    return Element.writeAttribute(cache[tagName].cloneNode(false), =
attributes);=0A=
  };=0A=
  Object.extend(this.Element, element || { });=0A=
}).call(window);=0A=
=0A=
Element.cache =3D { };=0A=
=0A=
Element.Methods =3D {=0A=
  visible: function(element) {=0A=
    return $(element).style.display !=3D 'none';=0A=
  },=0A=
=0A=
  toggle: function(element) {=0A=
    element =3D $(element);=0A=
    Element[Element.visible(element) ? 'hide' : 'show'](element);=0A=
    return element;=0A=
  },=0A=
=0A=
  hide: function(element) {=0A=
    $(element).style.display =3D 'none';=0A=
    return element;=0A=
  },=0A=
=0A=
  show: function(element) {=0A=
    $(element).style.display =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  remove: function(element) {=0A=
    element =3D $(element);=0A=
    element.parentNode.removeChild(element);=0A=
    return element;=0A=
  },=0A=
=0A=
  update: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
    content =3D Object.toHTML(content);=0A=
    element.innerHTML =3D content.stripScripts();=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  },=0A=
=0A=
  replace: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    else if (!Object.isElement(content)) {=0A=
      content =3D Object.toHTML(content);=0A=
      var range =3D element.ownerDocument.createRange();=0A=
      range.selectNode(element);=0A=
      content.evalScripts.bind(content).defer();=0A=
      content =3D range.createContextualFragment(content.stripScripts());=0A=
    }=0A=
    element.parentNode.replaceChild(content, element);=0A=
    return element;=0A=
  },=0A=
=0A=
  insert: function(element, insertions) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A=
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))=0A=
          insertions =3D {bottom:insertions};=0A=
=0A=
    var content, insert, tagName, childNodes;=0A=
=0A=
    for (position in insertions) {=0A=
      content  =3D insertions[position];=0A=
      position =3D position.toLowerCase();=0A=
      insert =3D Element._insertionTranslations[position];=0A=
=0A=
      if (content && content.toElement) content =3D content.toElement();=0A=
      if (Object.isElement(content)) {=0A=
        insert(element, content);=0A=
        continue;=0A=
      }=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A=
        ? element.parentNode : element).tagName.toUpperCase();=0A=
=0A=
      childNodes =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
=0A=
      if (position =3D=3D 'top' || position =3D=3D 'after') =
childNodes.reverse();=0A=
      childNodes.each(insert.curry(element));=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  wrap: function(element, wrapper, attributes) {=0A=
    element =3D $(element);=0A=
    if (Object.isElement(wrapper))=0A=
      $(wrapper).writeAttribute(attributes || { });=0A=
    else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, =
attributes);=0A=
    else wrapper =3D new Element('div', wrapper);=0A=
    if (element.parentNode)=0A=
      element.parentNode.replaceChild(wrapper, element);=0A=
    wrapper.appendChild(element);=0A=
    return wrapper;=0A=
  },=0A=
=0A=
  inspect: function(element) {=0A=
    element =3D $(element);=0A=
    var result =3D '<' + element.tagName.toLowerCase();=0A=
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A=
      var property =3D pair.first(), attribute =3D pair.last();=0A=
      var value =3D (element[property] || '').toString();=0A=
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);=0A=
    });=0A=
    return result + '>';=0A=
  },=0A=
=0A=
  recursivelyCollect: function(element, property) {=0A=
    element =3D $(element);=0A=
    var elements =3D [];=0A=
    while (element =3D element[property])=0A=
      if (element.nodeType =3D=3D 1)=0A=
        elements.push(Element.extend(element));=0A=
    return elements;=0A=
  },=0A=
=0A=
  ancestors: function(element) {=0A=
    return $(element).recursivelyCollect('parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return $(element).getElementsBySelector("*");=0A=
  },=0A=
=0A=
  firstDescendant: function(element) {=0A=
    element =3D $(element).firstChild;=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    return $(element);=0A=
  },=0A=
=0A=
  immediateDescendants: function(element) {=0A=
    if (!(element =3D $(element).firstChild)) return [];=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    if (element) return [element].concat($(element).nextSiblings());=0A=
    return [];=0A=
  },=0A=
=0A=
  previousSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return =
element.previousSiblings().reverse().concat(element.nextSiblings());=0A=
  },=0A=
=0A=
  match: function(element, selector) {=0A=
    if (Object.isString(selector))=0A=
      selector =3D new Selector(selector);=0A=
    return selector.match($(element));=0A=
  },=0A=
=0A=
  up: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return $(element.parentNode);=0A=
    var ancestors =3D element.ancestors();=0A=
    return Object.isNumber(expression) ? ancestors[expression] :=0A=
      Selector.findElement(ancestors, expression, index);=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return element.firstDescendant();=0A=
    return Object.isNumber(expression) ? =
element.descendants()[expression] :=0A=
      element.select(expression)[index || 0];=0A=
  },=0A=
=0A=
  previous: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.previousElementSibling(element));=0A=
    var previousSiblings =3D element.previousSiblings();=0A=
    return Object.isNumber(expression) ? previousSiblings[expression] :=0A=
      Selector.findElement(previousSiblings, expression, index);=0A=
  },=0A=
=0A=
  next: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.nextElementSibling(element));=0A=
    var nextSiblings =3D element.nextSiblings();=0A=
    return Object.isNumber(expression) ? nextSiblings[expression] :=0A=
      Selector.findElement(nextSiblings, expression, index);=0A=
  },=0A=
=0A=
  select: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element, args);=0A=
  },=0A=
=0A=
  adjacent: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element.parentNode, =
args).without(element);=0A=
  },=0A=
=0A=
  identify: function(element) {=0A=
    element =3D $(element);=0A=
    var id =3D element.readAttribute('id'), self =3D arguments.callee;=0A=
    if (id) return id;=0A=
    do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));=0A=
    element.writeAttribute('id', id);=0A=
    return id;=0A=
  },=0A=
=0A=
  readAttribute: function(element, name) {=0A=
    element =3D $(element);=0A=
    if (Prototype.Browser.IE) {=0A=
      var t =3D Element._attributeTranslations.read;=0A=
      if (t.values[name]) return t.values[name](element, name);=0A=
      if (t.names[name]) name =3D t.names[name];=0A=
      if (name.include(':')) {=0A=
        return (!element.attributes || !element.attributes[name]) ? null =
:=0A=
         element.attributes[name].value;=0A=
      }=0A=
    }=0A=
    return element.getAttribute(name);=0A=
  },=0A=
=0A=
  writeAttribute: function(element, name, value) {=0A=
    element =3D $(element);=0A=
    var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A=
=0A=
    if (typeof name =3D=3D 'object') attributes =3D name;=0A=
    else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A=
=0A=
    for (var attr in attributes) {=0A=
      name =3D t.names[attr] || attr;=0A=
      value =3D attributes[attr];=0A=
      if (t.values[attr]) name =3D t.values[attr](element, value);=0A=
      if (value =3D=3D=3D false || value =3D=3D=3D null)=0A=
        element.removeAttribute(name);=0A=
      else if (value =3D=3D=3D true)=0A=
        element.setAttribute(name, name);=0A=
      else element.setAttribute(name, value);=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    return $(element).getDimensions().height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return $(element).getDimensions().width;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var elementClassName =3D element.className;=0A=
    return (elementClassName.length > 0 && (elementClassName =3D=3D =
className ||=0A=
      new RegExp("(^|\\s)" + className + =
"(\\s|$)").test(elementClassName)));=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    if (!element.hasClassName(className))=0A=
      element.className +=3D (element.className ? ' ' : '') + className;=0A=
    return element;=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    element.className =3D element.className.replace(=0A=
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A=
    return element;=0A=
  },=0A=
=0A=
  toggleClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return element[element.hasClassName(className) ?=0A=
      'removeClassName' : 'addClassName'](className);=0A=
  },=0A=
=0A=
  // removes whitespace-only text node children=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    var node =3D element.firstChild;=0A=
    while (node) {=0A=
      var nextNode =3D node.nextSibling;=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        element.removeChild(node);=0A=
      node =3D nextNode;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.blank();=0A=
  },=0A=
=0A=
  descendantOf: function(element, ancestor) {=0A=
    element =3D $(element), ancestor =3D $(ancestor);=0A=
    var originalAncestor =3D ancestor;=0A=
=0A=
    if (element.compareDocumentPosition)=0A=
      return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A=
=0A=
    if (element.sourceIndex && !Prototype.Browser.Opera) {=0A=
      var e =3D element.sourceIndex, a =3D ancestor.sourceIndex,=0A=
       nextAncestor =3D ancestor.nextSibling;=0A=
      if (!nextAncestor) {=0A=
        do { ancestor =3D ancestor.parentNode; }=0A=
        while (!(nextAncestor =3D ancestor.nextSibling) && =
ancestor.parentNode);=0A=
      }=0A=
      if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);=0A=
    }=0A=
=0A=
    while (element =3D element.parentNode)=0A=
      if (element =3D=3D originalAncestor) return true;=0A=
    return false;=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D element.cumulativeOffset();=0A=
    window.scrollTo(pos[0], pos[1]);=0A=
    return element;=0A=
  },=0A=
=0A=
  getStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value) {=0A=
      var css =3D document.defaultView.getComputedStyle(element, null);=0A=
      value =3D css ? css[style] : null;=0A=
    }=0A=
    if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A=
    return value =3D=3D 'auto' ? null : value;=0A=
  },=0A=
=0A=
  getOpacity: function(element) {=0A=
    return $(element).getStyle('opacity');=0A=
  },=0A=
=0A=
  setStyle: function(element, styles) {=0A=
    element =3D $(element);=0A=
    var elementStyle =3D element.style, match;=0A=
    if (Object.isString(styles)) {=0A=
      element.style.cssText +=3D ';' + styles;=0A=
      return styles.include('opacity') ?=0A=
        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : =
element;=0A=
    }=0A=
    for (var property in styles)=0A=
      if (property =3D=3D 'opacity') =
element.setOpacity(styles[property]);=0A=
      else=0A=
        elementStyle[(property =3D=3D 'float' || property =3D=3D =
'cssFloat') ?=0A=
          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : =
'styleFloat') :=0A=
            property] =3D styles[property];=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  setOpacity: function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  },=0A=
=0A=
  getDimensions: function(element) {=0A=
    element =3D $(element);=0A=
    var display =3D $(element).getStyle('display');=0A=
    if (display !=3D 'none' && display !=3D null) // Safari bug=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=0A=
    // All *Width and *Height properties give 0 on elements with display =
none,=0A=
    // so enable the element temporarily=0A=
    var els =3D element.style;=0A=
    var originalVisibility =3D els.visibility;=0A=
    var originalPosition =3D els.position;=0A=
    var originalDisplay =3D els.display;=0A=
    els.visibility =3D 'hidden';=0A=
    els.position =3D 'absolute';=0A=
    els.display =3D 'block';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D originalDisplay;=0A=
    els.position =3D originalPosition;=0A=
    els.visibility =3D originalVisibility;=0A=
    return {width: originalWidth, height: originalHeight};=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      // Opera returns the offset relative to the positioning context, =
when an=0A=
      // element is position relative but top and left have not been =
defined=0A=
      if (window.opera) {=0A=
        element.style.top =3D 0;=0A=
        element.style.left =3D 0;=0A=
      }=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  undoPositioned: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._madePositioned) {=0A=
      element._madePositioned =3D undefined;=0A=
      element.style.position =3D=0A=
        element.style.top =3D=0A=
        element.style.left =3D=0A=
        element.style.bottom =3D=0A=
        element.style.right =3D '';=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  makeClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return element;=0A=
    element._overflow =3D Element.getStyle(element, 'overflow') || =
'auto';=0A=
    if (element._overflow !=3D=3D 'hidden')=0A=
      element.style.overflow =3D 'hidden';=0A=
    return element;=0A=
  },=0A=
=0A=
  undoClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element._overflow) return element;=0A=
    element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : =
element._overflow;=0A=
    element._overflow =3D null;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  positionedOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
      if (element) {=0A=
        if (element.tagName =3D=3D 'BODY') break;=0A=
        var p =3D Element.getStyle(element, 'position');=0A=
        if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A=
      }=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  absolutize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.getStyle('position') =3D=3D 'absolute') return;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    var offsets =3D element.positionedOffset();=0A=
    var top     =3D offsets[1];=0A=
    var left    =3D offsets[0];=0A=
    var width   =3D element.clientWidth;=0A=
    var height  =3D element.clientHeight;=0A=
=0A=
    element._originalLeft   =3D left - parseFloat(element.style.left  || =
0);=0A=
    element._originalTop    =3D top  - parseFloat(element.style.top || =
0);=0A=
    element._originalWidth  =3D element.style.width;=0A=
    element._originalHeight =3D element.style.height;=0A=
=0A=
    element.style.position =3D 'absolute';=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.width  =3D width + 'px';=0A=
    element.style.height =3D height + 'px';=0A=
    return element;=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.getStyle('position') =3D=3D 'relative') return;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    element.style.position =3D 'relative';=0A=
    var top  =3D parseFloat(element.style.top  || 0) - =
(element._originalTop || 0);=0A=
    var left =3D parseFloat(element.style.left || 0) - =
(element._originalLeft || 0);=0A=
=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.height =3D element._originalHeight;=0A=
    element.style.width  =3D element._originalWidth;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeScrollOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.scrollTop  || 0;=0A=
      valueL +=3D element.scrollLeft || 0;=0A=
      element =3D element.parentNode;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  getOffsetParent: function(element) {=0A=
    if (element.offsetParent) return $(element.offsetParent);=0A=
    if (element =3D=3D document.body) return $(element);=0A=
=0A=
    while ((element =3D element.parentNode) && element !=3D =
document.body)=0A=
      if (Element.getStyle(element, 'position') !=3D 'static')=0A=
        return $(element);=0A=
=0A=
    return $(document.body);=0A=
  },=0A=
=0A=
  viewportOffset: function(forElement) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
=0A=
      // Safari fix=0A=
      if (element.offsetParent =3D=3D document.body &&=0A=
        Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A=
=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      if (!Prototype.Browser.Opera || element.tagName =3D=3D 'BODY') {=0A=
        valueT -=3D element.scrollTop  || 0;=0A=
        valueL -=3D element.scrollLeft || 0;=0A=
      }=0A=
    } while (element =3D element.parentNode);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  clonePosition: function(element, source) {=0A=
    var options =3D Object.extend({=0A=
      setLeft:    true,=0A=
      setTop:     true,=0A=
      setWidth:   true,=0A=
      setHeight:  true,=0A=
      offsetTop:  0,=0A=
      offsetLeft: 0=0A=
    }, arguments[2] || { });=0A=
=0A=
    // find page position of source=0A=
    source =3D $(source);=0A=
    var p =3D source.viewportOffset();=0A=
=0A=
    // find coordinate system to use=0A=
    element =3D $(element);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    // delta [0,0] will do fine with position: fixed elements,=0A=
    // position:absolute needs offsetParent deltas=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A=
      parent =3D element.getOffsetParent();=0A=
      delta =3D parent.viewportOffset();=0A=
    }=0A=
=0A=
    // correct by body offsets (fixes Safari)=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    // set position=0A=
    if (options.setLeft)   element.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if (options.setTop)    element.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if (options.setWidth)  element.style.width =3D source.offsetWidth + =
'px';=0A=
    if (options.setHeight) element.style.height =3D source.offsetHeight =
+ 'px';=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.identify.counter =3D 1;=0A=
=0A=
Object.extend(Element.Methods, {=0A=
  getElementsBySelector: Element.Methods.select,=0A=
  childElements: Element.Methods.immediateDescendants=0A=
});=0A=
=0A=
Element._attributeTranslations =3D {=0A=
  write: {=0A=
    names: {=0A=
      className: 'class',=0A=
      htmlFor:   'for'=0A=
    },=0A=
    values: { }=0A=
  }=0A=
};=0A=
=0A=
if (Prototype.Browser.Opera) {=0A=
  Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A=
    function(proceed, element, style) {=0A=
      switch (style) {=0A=
        case 'left': case 'top': case 'right': case 'bottom':=0A=
          if (proceed(element, 'position') =3D=3D=3D 'static') return =
null;=0A=
        case 'height': case 'width':=0A=
          // returns '0px' for hidden elements; we want it to return null=0A=
          if (!Element.visible(element)) return null;=0A=
=0A=
          // returns the border-box dimensions rather than the =
content-box=0A=
          // dimensions, so we subtract padding and borders from the =
value=0A=
          var dim =3D parseInt(proceed(element, style), 10);=0A=
=0A=
          if (dim !=3D=3D element['offset' + style.capitalize()])=0A=
            return dim + 'px';=0A=
=0A=
          var properties;=0A=
          if (style =3D=3D=3D 'height') {=0A=
            properties =3D ['border-top-width', 'padding-top',=0A=
             'padding-bottom', 'border-bottom-width'];=0A=
          }=0A=
          else {=0A=
            properties =3D ['border-left-width', 'padding-left',=0A=
             'padding-right', 'border-right-width'];=0A=
          }=0A=
          return properties.inject(dim, function(memo, property) {=0A=
            var val =3D proceed(element, property);=0A=
            return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A=
          }) + 'px';=0A=
        default: return proceed(element, style);=0A=
      }=0A=
    }=0A=
  );=0A=
=0A=
  Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A=
    function(proceed, element, attribute) {=0A=
      if (attribute =3D=3D=3D 'title') return element.title;=0A=
      return proceed(element, attribute);=0A=
    }=0A=
  );=0A=
}=0A=
=0A=
else if (Prototype.Browser.IE) {=0A=
  $w('positionedOffset getOffsetParent =
viewportOffset').each(function(method) {=0A=
    Element.Methods[method] =3D Element.Methods[method].wrap(=0A=
      function(proceed, element) {=0A=
        element =3D $(element);=0A=
        var position =3D element.getStyle('position');=0A=
        if (position !=3D 'static') return proceed(element);=0A=
        element.setStyle({ position: 'relative' });=0A=
        var value =3D proceed(element);=0A=
        element.setStyle({ position: position });=0A=
        return value;=0A=
      }=0A=
    );=0A=
  });=0A=
=0A=
  Element.Methods.getStyle =3D function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? =
'styleFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value && element.currentStyle) value =3D =
element.currentStyle[style];=0A=
=0A=
    if (style =3D=3D 'opacity') {=0A=
      if (value =3D (element.getStyle('filter') || =
'').match(/alpha\(opacity=3D(.*)\)/))=0A=
        if (value[1]) return parseFloat(value[1]) / 100;=0A=
      return 1.0;=0A=
    }=0A=
=0A=
    if (value =3D=3D 'auto') {=0A=
      if ((style =3D=3D 'width' || style =3D=3D 'height') && =
(element.getStyle('display') !=3D 'none'))=0A=
        return element['offset' + style.capitalize()] + 'px';=0A=
      return null;=0A=
    }=0A=
    return value;=0A=
  };=0A=
=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    function stripAlpha(filter){=0A=
      return filter.replace(/alpha\([^\)]*\)/gi,'');=0A=
    }=0A=
    element =3D $(element);=0A=
    var currentStyle =3D element.currentStyle;=0A=
    if ((currentStyle && !currentStyle.hasLayout) ||=0A=
      (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A=
        element.style.zoom =3D 1;=0A=
=0A=
    var filter =3D element.getStyle('filter'), style =3D element.style;=0A=
    if (value =3D=3D 1 || value =3D=3D=3D '') {=0A=
      (filter =3D stripAlpha(filter)) ?=0A=
        style.filter =3D filter : style.removeAttribute('filter');=0A=
      return element;=0A=
    } else if (value < 0.00001) value =3D 0;=0A=
    style.filter =3D stripAlpha(filter) +=0A=
      'alpha(opacity=3D' + (value * 100) + ')';=0A=
    return element;=0A=
  };=0A=
=0A=
  Element._attributeTranslations =3D {=0A=
    read: {=0A=
      names: {=0A=
        'class': 'className',=0A=
        'for':   'htmlFor'=0A=
      },=0A=
      values: {=0A=
        _getAttr: function(element, attribute) {=0A=
          return element.getAttribute(attribute, 2);=0A=
        },=0A=
        _getAttrNode: function(element, attribute) {=0A=
          var node =3D element.getAttributeNode(attribute);=0A=
          return node ? node.value : "";=0A=
        },=0A=
        _getEv: function(element, attribute) {=0A=
          attribute =3D element.getAttribute(attribute);=0A=
          return attribute ? attribute.toString().slice(23, -2) : null;=0A=
        },=0A=
        _flag: function(element, attribute) {=0A=
          return $(element).hasAttribute(attribute) ? attribute : null;=0A=
        },=0A=
        style: function(element) {=0A=
          return element.style.cssText.toLowerCase();=0A=
        },=0A=
        title: function(element) {=0A=
          return element.title;=0A=
        }=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.write =3D {=0A=
    names: Object.clone(Element._attributeTranslations.read.names),=0A=
    values: {=0A=
      checked: function(element, value) {=0A=
        element.checked =3D !!value;=0A=
      },=0A=
=0A=
      style: function(element, value) {=0A=
        element.style.cssText =3D value ? value : '';=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.has =3D {};=0A=
=0A=
  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A=
      'encType maxLength readOnly longDesc').each(function(attr) {=0A=
    Element._attributeTranslations.write.names[attr.toLowerCase()] =3D =
attr;=0A=
    Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A=
  });=0A=
=0A=
  (function(v) {=0A=
    Object.extend(v, {=0A=
      href:        v._getAttr,=0A=
      src:         v._getAttr,=0A=
      type:        v._getAttr,=0A=
      action:      v._getAttrNode,=0A=
      disabled:    v._flag,=0A=
      checked:     v._flag,=0A=
      readonly:    v._flag,=0A=
      multiple:    v._flag,=0A=
      onload:      v._getEv,=0A=
      onunload:    v._getEv,=0A=
      onclick:     v._getEv,=0A=
      ondblclick:  v._getEv,=0A=
      onmousedown: v._getEv,=0A=
      onmouseup:   v._getEv,=0A=
      onmouseover: v._getEv,=0A=
      onmousemove: v._getEv,=0A=
      onmouseout:  v._getEv,=0A=
      onfocus:     v._getEv,=0A=
      onblur:      v._getEv,=0A=
      onkeypress:  v._getEv,=0A=
      onkeydown:   v._getEv,=0A=
      onkeyup:     v._getEv,=0A=
      onsubmit:    v._getEv,=0A=
      onreset:     v._getEv,=0A=
      onselect:    v._getEv,=0A=
      onchange:    v._getEv=0A=
    });=0A=
  })(Element._attributeTranslations.read.values);=0A=
}=0A=
=0A=
else if (Prototype.Browser.Gecko && =
/rv:1\.8\.0/.test(navigator.userAgent)) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A=
      (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
else if (Prototype.Browser.WebKit) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
=0A=
    if (value =3D=3D 1)=0A=
      if(element.tagName =3D=3D 'IMG' && element.width) {=0A=
        element.width++; element.width--;=0A=
      } else try {=0A=
        var n =3D document.createTextNode(' ');=0A=
        element.appendChild(n);=0A=
        element.removeChild(n);=0A=
      } catch (e) { }=0A=
=0A=
    return element;=0A=
  };=0A=
=0A=
  // Safari returns margins on body which is incorrect if the child is =
absolutely=0A=
  // positioned.  For performance reasons, redefine =
Element#cumulativeOffset for=0A=
  // KHTML/WebKit only.=0A=
  Element.Methods.cumulativeOffset =3D function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      if (element.offsetParent =3D=3D document.body)=0A=
        if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;=0A=
=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  };=0A=
}=0A=
=0A=
if (Prototype.Browser.IE || Prototype.Browser.Opera) {=0A=
  // IE and Opera are missing .innerHTML support for TABLE-related and =
SELECT elements=0A=
  Element.Methods.update =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var tagName =3D element.tagName.toUpperCase();=0A=
=0A=
    if (tagName in Element._insertionTranslations.tags) {=0A=
      $A(element.childNodes).each(function(node) { =
element.removeChild(node) });=0A=
      Element._getContentFromAnonymousElement(tagName, =
content.stripScripts())=0A=
        .each(function(node) { element.appendChild(node) });=0A=
    }=0A=
    else element.innerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
if (document.createElement('div').outerHTML) {=0A=
  Element.Methods.replace =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) {=0A=
      element.parentNode.replaceChild(content, element);=0A=
      return element;=0A=
    }=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var parent =3D element.parentNode, tagName =3D =
parent.tagName.toUpperCase();=0A=
=0A=
    if (Element._insertionTranslations.tags[tagName]) {=0A=
      var nextSibling =3D element.next();=0A=
      var fragments =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
      parent.removeChild(element);=0A=
      if (nextSibling)=0A=
        fragments.each(function(node) { parent.insertBefore(node, =
nextSibling) });=0A=
      else=0A=
        fragments.each(function(node) { parent.appendChild(node) });=0A=
    }=0A=
    else element.outerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
Element._returnOffset =3D function(l, t) {=0A=
  var result =3D [l, t];=0A=
  result.left =3D l;=0A=
  result.top =3D t;=0A=
  return result;=0A=
};=0A=
=0A=
Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A=
  var div =3D new Element('div'), t =3D =
Element._insertionTranslations.tags[tagName];=0A=
  if (t) {=0A=
    div.innerHTML =3D t[0] + html + t[1];=0A=
    t[2].times(function() { div =3D div.firstChild });=0A=
  } else div.innerHTML =3D html;=0A=
  return $A(div.childNodes);=0A=
};=0A=
=0A=
Element._insertionTranslations =3D {=0A=
  before: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element);=0A=
  },=0A=
  top: function(element, node) {=0A=
    element.insertBefore(node, element.firstChild);=0A=
  },=0A=
  bottom: function(element, node) {=0A=
    element.appendChild(node);=0A=
  },=0A=
  after: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element.nextSibling);=0A=
  },=0A=
  tags: {=0A=
    TABLE:  ['<table>',                '</table>',                   1],=0A=
    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],=0A=
    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],=0A=
    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],=0A=
    SELECT: ['<select>',               '</select>',                  1]=0A=
  }=0A=
};=0A=
=0A=
(function() {=0A=
  Object.extend(this.tags, {=0A=
    THEAD: this.tags.TBODY,=0A=
    TFOOT: this.tags.TBODY,=0A=
    TH:    this.tags.TD=0A=
  });=0A=
}).call(Element._insertionTranslations);=0A=
=0A=
Element.Methods.Simulated =3D {=0A=
  hasAttribute: function(element, attribute) {=0A=
    attribute =3D Element._attributeTranslations.has[attribute] || =
attribute;=0A=
    var node =3D $(element).getAttributeNode(attribute);=0A=
    return node && node.specified;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.ByTag =3D { };=0A=
=0A=
Object.extend(Element, Element.Methods);=0A=
=0A=
if (!Prototype.BrowserFeatures.ElementExtensions &&=0A=
    document.createElement('div').__proto__) {=0A=
  window.HTMLElement =3D { };=0A=
  window.HTMLElement.prototype =3D =
document.createElement('div').__proto__;=0A=
  Prototype.BrowserFeatures.ElementExtensions =3D true;=0A=
}=0A=
=0A=
Element.extend =3D (function() {=0A=
  if (Prototype.BrowserFeatures.SpecificElementExtensions)=0A=
    return Prototype.K;=0A=
=0A=
  var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A=
=0A=
  var extend =3D Object.extend(function(element) {=0A=
    if (!element || element._extendedByPrototype ||=0A=
        element.nodeType !=3D 1 || element =3D=3D window) return element;=0A=
=0A=
    var methods =3D Object.clone(Methods),=0A=
      tagName =3D element.tagName, property, value;=0A=
=0A=
    // extend methods for specific tags=0A=
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A=
=0A=
    for (property in methods) {=0A=
      value =3D methods[property];=0A=
      if (Object.isFunction(value) && !(property in element))=0A=
        element[property] =3D value.methodize();=0A=
    }=0A=
=0A=
    element._extendedByPrototype =3D Prototype.emptyFunction;=0A=
    return element;=0A=
=0A=
  }, {=0A=
    refresh: function() {=0A=
      // extend methods for all tags (Safari doesn't need this)=0A=
      if (!Prototype.BrowserFeatures.ElementExtensions) {=0A=
        Object.extend(Methods, Element.Methods);=0A=
        Object.extend(Methods, Element.Methods.Simulated);=0A=
      }=0A=
    }=0A=
  });=0A=
=0A=
  extend.refresh();=0A=
  return extend;=0A=
})();=0A=
=0A=
Element.hasAttribute =3D function(element, attribute) {=0A=
  if (element.hasAttribute) return element.hasAttribute(attribute);=0A=
  return Element.Methods.Simulated.hasAttribute(element, attribute);=0A=
};=0A=
=0A=
Element.addMethods =3D function(methods) {=0A=
  var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A=
=0A=
  if (!methods) {=0A=
    Object.extend(Form, Form.Methods);=0A=
    Object.extend(Form.Element, Form.Element.Methods);=0A=
    Object.extend(Element.Methods.ByTag, {=0A=
      "FORM":     Object.clone(Form.Methods),=0A=
      "INPUT":    Object.clone(Form.Element.Methods),=0A=
      "SELECT":   Object.clone(Form.Element.Methods),=0A=
      "TEXTAREA": Object.clone(Form.Element.Methods)=0A=
    });=0A=
  }=0A=
=0A=
  if (arguments.length =3D=3D 2) {=0A=
    var tagName =3D methods;=0A=
    methods =3D arguments[1];=0A=
  }=0A=
=0A=
  if (!tagName) Object.extend(Element.Methods, methods || { });=0A=
  else {=0A=
    if (Object.isArray(tagName)) tagName.each(extend);=0A=
    else extend(tagName);=0A=
  }=0A=
=0A=
  function extend(tagName) {=0A=
    tagName =3D tagName.toUpperCase();=0A=
    if (!Element.Methods.ByTag[tagName])=0A=
      Element.Methods.ByTag[tagName] =3D { };=0A=
    Object.extend(Element.Methods.ByTag[tagName], methods);=0A=
  }=0A=
=0A=
  function copy(methods, destination, onlyIfAbsent) {=0A=
    onlyIfAbsent =3D onlyIfAbsent || false;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (!Object.isFunction(value)) continue;=0A=
      if (!onlyIfAbsent || !(property in destination))=0A=
        destination[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  function findDOMClass(tagName) {=0A=
    var klass;=0A=
    var trans =3D {=0A=
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A=
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": =
"DList",=0A=
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": =
"Heading",=0A=
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A=
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", =
"CAPTION":=0A=
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A=
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", =
"TR":=0A=
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A=
      "FrameSet", "IFRAME": "IFrame"=0A=
    };=0A=
    if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
=0A=
    window[klass] =3D { };=0A=
    window[klass].prototype =3D =
document.createElement(tagName).__proto__;=0A=
    return window[klass];=0A=
  }=0A=
=0A=
  if (F.ElementExtensions) {=0A=
    copy(Element.Methods, HTMLElement.prototype);=0A=
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A=
  }=0A=
=0A=
  if (F.SpecificElementExtensions) {=0A=
    for (var tag in Element.Methods.ByTag) {=0A=
      var klass =3D findDOMClass(tag);=0A=
      if (Object.isUndefined(klass)) continue;=0A=
      copy(T[tag], klass.prototype);=0A=
    }=0A=
  }=0A=
=0A=
  Object.extend(Element, Element.Methods);=0A=
  delete Element.ByTag;=0A=
=0A=
  if (Element.extend.refresh) Element.extend.refresh();=0A=
  Element.cache =3D { };=0A=
};=0A=
=0A=
document.viewport =3D {=0A=
  getDimensions: function() {=0A=
    var dimensions =3D { };=0A=
    var B =3D Prototype.Browser;=0A=
    $w('width height').each(function(d) {=0A=
      var D =3D d.capitalize();=0A=
      dimensions[d] =3D (B.WebKit && !document.evaluate) ? self['inner' =
+ D] :=0A=
        (B.Opera) ? document.body['client' + D] : =
document.documentElement['client' + D];=0A=
    });=0A=
    return dimensions;=0A=
  },=0A=
=0A=
  getWidth: function() {=0A=
    return this.getDimensions().width;=0A=
  },=0A=
=0A=
  getHeight: function() {=0A=
    return this.getDimensions().height;=0A=
  },=0A=
=0A=
  getScrollOffsets: function() {=0A=
    return Element._returnOffset(=0A=
      window.pageXOffset || document.documentElement.scrollLeft || =
document.body.scrollLeft,=0A=
      window.pageYOffset || document.documentElement.scrollTop || =
document.body.scrollTop);=0A=
  }=0A=
};=0A=
/* Portions of the Selector class are derived from Jack Slocum=E2=80=99s =
DomQuery,=0A=
 * part of YUI-Ext version 0.40, distributed under the terms of an =
MIT-style=0A=
 * license.  Please see http://www.yui-ext.com/ for more information. */=0A=
=0A=
var Selector =3D Class.create({=0A=
  initialize: function(expression) {=0A=
    this.expression =3D expression.strip();=0A=
    this.compileMatcher();=0A=
  },=0A=
=0A=
  shouldUseXPath: function() {=0A=
    if (!Prototype.BrowserFeatures.XPath) return false;=0A=
=0A=
    var e =3D this.expression;=0A=
=0A=
    // Safari 3 chokes on :*-of-type and :empty=0A=
    if (Prototype.Browser.WebKit &&=0A=
     (e.include("-of-type") || e.include(":empty")))=0A=
      return false;=0A=
=0A=
    // XPath can't do namespaced attributes, nor can it read=0A=
    // the "checked" property from DOM nodes=0A=
    if ((/(\[[\w-]*?:|:checked)/).test(this.expression))=0A=
      return false;=0A=
=0A=
    return true;=0A=
  },=0A=
=0A=
  compileMatcher: function() {=0A=
    if (this.shouldUseXPath())=0A=
      return this.compileXPathMatcher();=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, h =3D =
Selector.handlers,=0A=
        c =3D Selector.criteria, le, p, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.matcher =3D Selector._cache[e];=0A=
      return;=0A=
    }=0A=
=0A=
    this.matcher =3D ["this.matcher =3D function(root) {",=0A=
                    "var r =3D root, h =3D Selector.handlers, c =3D =
false, n;"];=0A=
=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :=0A=
    	      new Template(c[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.matcher.push("return h.unique(n);\n}");=0A=
    eval(this.matcher.join('\n'));=0A=
    Selector._cache[this.expression] =3D this.matcher;=0A=
  },=0A=
=0A=
  compileXPathMatcher: function() {=0A=
    var e =3D this.expression, ps =3D Selector.patterns,=0A=
        x =3D Selector.xpath, le, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.xpath =3D Selector._cache[e]; return;=0A=
    }=0A=
=0A=
    this.matcher =3D ['.//*'];=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        if (m =3D e.match(ps[i])) {=0A=
          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :=0A=
            new Template(x[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.xpath =3D this.matcher.join('');=0A=
    Selector._cache[this.expression] =3D this.xpath;=0A=
  },=0A=
=0A=
  findElements: function(root) {=0A=
    root =3D root || document;=0A=
    if (this.xpath) return document._getElementsByXPath(this.xpath, =
root);=0A=
    return this.matcher(root);=0A=
  },=0A=
=0A=
  match: function(element) {=0A=
    this.tokens =3D [];=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, as =3D =
Selector.assertions;=0A=
    var le, p, m;=0A=
=0A=
    while (e && le !=3D=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          // use the Selector.assertions methods unless the selector=0A=
          // is too complex.=0A=
          if (as[i]) {=0A=
            this.tokens.push([i, Object.clone(m)]);=0A=
            e =3D e.replace(m[0], '');=0A=
          } else {=0A=
            // reluctantly do a document-wide search=0A=
            // and look for a match in the array=0A=
            return this.findElements(document).include(element);=0A=
          }=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    var match =3D true, name, matches;=0A=
    for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A=
      name =3D token[0], matches =3D token[1];=0A=
      if (!Selector.assertions[name](element, matches)) {=0A=
        match =3D false; break;=0A=
      }=0A=
    }=0A=
=0A=
    return match;=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.expression;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return "#<Selector:" + this.expression.inspect() + ">";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Selector, {=0A=
  _cache: { },=0A=
=0A=
  xpath: {=0A=
    descendant:   "//*",=0A=
    child:        "/*",=0A=
    adjacent:     "/following-sibling::*[1]",=0A=
    laterSibling: '/following-sibling::*',=0A=
    tagName:      function(m) {=0A=
      if (m[1] =3D=3D '*') return '';=0A=
      return "[local-name()=3D'" + m[1].toLowerCase() +=0A=
             "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A=
    },=0A=
    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A=
    id:           "[@id=3D'#{1}']",=0A=
    attrPresence: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      return new Template("[@#{1}]").evaluate(m);=0A=
    },=0A=
    attr: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      m[3] =3D m[5] || m[6];=0A=
      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      var h =3D Selector.xpath.pseudos[m[1]];=0A=
      if (!h) return '';=0A=
      if (Object.isFunction(h)) return h(m);=0A=
      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A=
    },=0A=
    operators: {=0A=
      '=3D':  "[@#{1}=3D'#{3}']",=0A=
      '!=3D': "[@#{1}!=3D'#{3}']",=0A=
      '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A=
      '$=3D': "[substring(@#{1}, (string-length(@#{1}) - =
string-length('#{3}') + 1))=3D'#{3}']",=0A=
      '*=3D': "[contains(@#{1}, '#{3}')]",=0A=
      '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A=
      '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A=
    },=0A=
    pseudos: {=0A=
      'first-child': '[not(preceding-sibling::*)]',=0A=
      'last-child':  '[not(following-sibling::*)]',=0A=
      'only-child':  '[not(preceding-sibling::* or =
following-sibling::*)]',=0A=
      'empty':       "[count(*) =3D 0 and (count(text()) =3D 0 or =
translate(text(), ' \t\r\n', '') =3D '')]",=0A=
      'checked':     "[@checked]",=0A=
      'disabled':    "[@disabled]",=0A=
      'enabled':     "[not(@disabled)]",=0A=
      'not': function(m) {=0A=
        var e =3D m[6], p =3D Selector.patterns,=0A=
            x =3D Selector.xpath, le, v;=0A=
=0A=
        var exclusion =3D [];=0A=
        while (e && le !=3D e && (/\S/).test(e)) {=0A=
          le =3D e;=0A=
          for (var i in p) {=0A=
            if (m =3D e.match(p[i])) {=0A=
              v =3D Object.isFunction(x[i]) ? x[i](m) : new =
Template(x[i]).evaluate(m);=0A=
              exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A=
              e =3D e.replace(m[0], '');=0A=
              break;=0A=
            }=0A=
          }=0A=
        }=0A=
        return "[not(" + exclusion.join(" and ") + ")]";=0A=
      },=0A=
      'nth-child':      function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-last-child': function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-of-type':    function(m) {=0A=
        return Selector.xpath.pseudos.nth("position() ", m);=0A=
      },=0A=
      'nth-last-of-type': function(m) {=0A=
        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", =
m);=0A=
      },=0A=
      'first-of-type':  function(m) {=0A=
        m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A=
      },=0A=
      'last-of-type':   function(m) {=0A=
        m[6] =3D "1"; return =
Selector.xpath.pseudos['nth-last-of-type'](m);=0A=
      },=0A=
      'only-of-type':   function(m) {=0A=
        var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + =
p['last-of-type'](m);=0A=
      },=0A=
      nth: function(fragment, m) {=0A=
        var mm, formula =3D m[6], predicate;=0A=
        if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
        if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
        if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A=
          return '[' + fragment + "=3D " + mm[1] + ']';=0A=
        if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A=
          if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A=
          var a =3D mm[1] ? Number(mm[1]) : 1;=0A=
          var b =3D mm[2] ? Number(mm[2]) : 0;=0A=
          predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A=
          "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A=
          return new Template(predicate).evaluate({=0A=
            fragment: fragment, a: a, b: b });=0A=
        }=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  criteria: {=0A=
    tagName:      'n =3D h.tagName(n, r, "#{1}", c);   c =3D false;',=0A=
    className:    'n =3D h.className(n, r, "#{1}", c); c =3D false;',=0A=
    id:           'n =3D h.id(n, r, "#{1}", c);        c =3D false;',=0A=
    attrPresence: 'n =3D h.attrPresence(n, r, "#{1}"); c =3D false;',=0A=
    attr: function(m) {=0A=
      m[3] =3D (m[5] || m[6]);=0A=
      return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A=
      return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    descendant:   'c =3D "descendant";',=0A=
    child:        'c =3D "child";',=0A=
    adjacent:     'c =3D "adjacent";',=0A=
    laterSibling: 'c =3D "laterSibling";'=0A=
  },=0A=
=0A=
  patterns: {=0A=
    // combinators must be listed first=0A=
    // (and descendant needs to be last combinator)=0A=
    laterSibling: /^\s*~\s*/,=0A=
    child:        /^\s*>\s*/,=0A=
    adjacent:     /^\s*\+\s*/,=0A=
    descendant:   /^\s/,=0A=
=0A=
    // selectors follow=0A=
    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,=0A=
    id:           /^#([\w\-\*]+)(\b|$)/,=0A=
    className:    /^\.([\w\-\*]+)(\b|$)/,=0A=
    pseudo:=0A=
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis=
)abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/,=0A=
    attrPresence: /^\[([\w]+)\]/,=0A=
    attr:         =
/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^=
\]]*?)))?\]/=0A=
  },=0A=
=0A=
  // for Selector.match and Element#match=0A=
  assertions: {=0A=
    tagName: function(element, matches) {=0A=
      return matches[1].toUpperCase() =3D=3D =
element.tagName.toUpperCase();=0A=
    },=0A=
=0A=
    className: function(element, matches) {=0A=
      return Element.hasClassName(element, matches[1]);=0A=
    },=0A=
=0A=
    id: function(element, matches) {=0A=
      return element.id =3D=3D=3D matches[1];=0A=
    },=0A=
=0A=
    attrPresence: function(element, matches) {=0A=
      return Element.hasAttribute(element, matches[1]);=0A=
    },=0A=
=0A=
    attr: function(element, matches) {=0A=
      var nodeValue =3D Element.readAttribute(element, matches[1]);=0A=
      return Selector.operators[matches[2]](nodeValue, matches[3]);=0A=
    }=0A=
  },=0A=
=0A=
  handlers: {=0A=
    // UTILITY FUNCTIONS=0A=
    // joins two collections=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    // marks an array of nodes for counting=0A=
    mark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._counted =3D true;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    unmark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._counted =3D undefined;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    // mark each child node with its position (for nth calls)=0A=
    // "ofType" flag indicates whether we're indexing for nth-of-type=0A=
    // rather than nth-child=0A=
    index: function(parentNode, reverse, ofType) {=0A=
      parentNode._counted =3D true;=0A=
      if (reverse) {=0A=
        for (var nodes =3D parentNode.childNodes, i =3D nodes.length - =
1, j =3D 1; i >=3D 0; i--) {=0A=
          var node =3D nodes[i];=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) =
node.nodeIndex =3D j++;=0A=
        }=0A=
      } else {=0A=
        for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node =
=3D nodes[i]; i++)=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) =
node.nodeIndex =3D j++;=0A=
      }=0A=
    },=0A=
=0A=
    // filters out duplicates and extends all nodes=0A=
    unique: function(nodes) {=0A=
      if (nodes.length =3D=3D 0) return nodes;=0A=
      var results =3D [], n;=0A=
      for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A=
        if (!(n =3D nodes[i])._counted) {=0A=
          n._counted =3D true;=0A=
          results.push(Element.extend(n));=0A=
        }=0A=
      return Selector.handlers.unmark(results);=0A=
    },=0A=
=0A=
    // COMBINATOR FUNCTIONS=0A=
    descendant: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, node.getElementsByTagName('*'));=0A=
      return results;=0A=
    },=0A=
=0A=
    child: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A=
          if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') =
results.push(child);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    adjacent: function(nodes) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        var next =3D this.nextElementSibling(node);=0A=
        if (next) results.push(next);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    laterSibling: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, Element.nextSiblings(node));=0A=
      return results;=0A=
    },=0A=
=0A=
    nextElementSibling: function(node) {=0A=
      while (node =3D node.nextSibling)=0A=
	      if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    previousElementSibling: function(node) {=0A=
      while (node =3D node.previousSibling)=0A=
        if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    // TOKEN FUNCTIONS=0A=
    tagName: function(nodes, root, tagName, combinator) {=0A=
      var uTagName =3D tagName.toUpperCase();=0A=
      var results =3D [], h =3D Selector.handlers;=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          // fastlane for ordinary descendant combinators=0A=
          if (combinator =3D=3D "descendant") {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              h.concat(results, node.getElementsByTagName(tagName));=0A=
            return results;=0A=
          } else nodes =3D this[combinator](nodes);=0A=
          if (tagName =3D=3D "*") return nodes;=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName.toUpperCase() =3D=3D=3D uTagName) =
results.push(node);=0A=
        return results;=0A=
      } else return root.getElementsByTagName(tagName);=0A=
    },=0A=
=0A=
    id: function(nodes, root, id, combinator) {=0A=
      var targetNode =3D $(id), h =3D Selector.handlers;=0A=
      if (!targetNode) return [];=0A=
      if (!nodes && root =3D=3D document) return [targetNode];=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          if (combinator =3D=3D 'child') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (targetNode.parentNode =3D=3D node) return [targetNode];=0A=
          } else if (combinator =3D=3D 'descendant') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Element.descendantOf(targetNode, node)) return =
[targetNode];=0A=
          } else if (combinator =3D=3D 'adjacent') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Selector.handlers.previousElementSibling(targetNode) =
=3D=3D node)=0A=
                return [targetNode];=0A=
          } else nodes =3D h[combinator](nodes);=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node =3D=3D targetNode) return [targetNode];=0A=
        return [];=0A=
      }=0A=
      return (targetNode && Element.descendantOf(targetNode, root)) ? =
[targetNode] : [];=0A=
    },=0A=
=0A=
    className: function(nodes, root, className, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      return Selector.handlers.byClassName(nodes, root, className);=0A=
    },=0A=
=0A=
    byClassName: function(nodes, root, className) {=0A=
      if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A=
      var needle =3D ' ' + className + ' ';=0A=
      for (var i =3D 0, results =3D [], node, nodeClassName; node =3D =
nodes[i]; i++) {=0A=
        nodeClassName =3D node.className;=0A=
        if (nodeClassName.length =3D=3D 0) continue;=0A=
        if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' =
').include(needle))=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    attrPresence: function(nodes, root, attr) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      var results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        if (Element.hasAttribute(node, attr)) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    attr: function(nodes, root, attr, value, operator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      var handler =3D Selector.operators[operator], results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        var nodeValue =3D Element.readAttribute(node, attr);=0A=
        if (nodeValue =3D=3D=3D null) continue;=0A=
        if (handler(nodeValue, value)) results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    pseudo: function(nodes, name, value, root, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      return Selector.pseudos[name](nodes, value, root);=0A=
    }=0A=
  },=0A=
=0A=
  pseudos: {=0A=
    'first-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.previousElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'last-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.nextElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'only-child': function(nodes, value, root) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!h.previousElementSibling(node) && =
!h.nextElementSibling(node))=0A=
          results.push(node);=0A=
      return results;=0A=
    },=0A=
    'nth-child':        function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root);=0A=
    },=0A=
    'nth-last-child':   function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true);=0A=
    },=0A=
    'nth-of-type':      function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, false, true);=0A=
    },=0A=
    'nth-last-of-type': function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true, true);=0A=
    },=0A=
    'first-of-type':    function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, false, true);=0A=
    },=0A=
    'last-of-type':     function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, true, true);=0A=
    },=0A=
    'only-of-type':     function(nodes, formula, root) {=0A=
      var p =3D Selector.pseudos;=0A=
      return p['last-of-type'](p['first-of-type'](nodes, formula, root), =
formula, root);=0A=
    },=0A=
=0A=
    // handles the an+b logic=0A=
    getIndices: function(a, b, total) {=0A=
      if (a =3D=3D 0) return b > 0 ? [b] : [];=0A=
      return $R(1, total).inject([], function(memo, i) {=0A=
        if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A=
        return memo;=0A=
      });=0A=
    },=0A=
=0A=
    // handles nth(-last)-child, nth(-last)-of-type, and =
(first|last)-of-type=0A=
    nth: function(nodes, formula, root, reverse, ofType) {=0A=
      if (nodes.length =3D=3D 0) return [];=0A=
      if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
      if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
      var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A=
      h.mark(nodes);=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        if (!node.parentNode._counted) {=0A=
          h.index(node.parentNode, reverse, ofType);=0A=
          indexed.push(node.parentNode);=0A=
        }=0A=
      }=0A=
      if (formula.match(/^\d+$/)) { // just a number=0A=
        formula =3D Number(formula);=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.nodeIndex =3D=3D formula) results.push(node);=0A=
      } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // =
an+b=0A=
        if (m[1] =3D=3D "-") m[1] =3D -1;=0A=
        var a =3D m[1] ? Number(m[1]) : 1;=0A=
        var b =3D m[2] ? Number(m[2]) : 0;=0A=
        var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A=
        for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; =
i++) {=0A=
          for (var j =3D 0; j < l; j++)=0A=
            if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A=
        }=0A=
      }=0A=
      h.unmark(nodes);=0A=
      h.unmark(indexed);=0A=
      return results;=0A=
    },=0A=
=0A=
    'empty': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        // IE treats comments as element nodes=0A=
        if (node.tagName =3D=3D '!' || (node.firstChild && =
!node.innerHTML.match(/^\s*$/))) continue;=0A=
        results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    'not': function(nodes, selector, root) {=0A=
      var h =3D Selector.handlers, selectorType, m;=0A=
      var exclusions =3D new Selector(selector).findElements(root);=0A=
      h.mark(exclusions);=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node._counted) results.push(node);=0A=
      h.unmark(exclusions);=0A=
      return results;=0A=
    },=0A=
=0A=
    'enabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'disabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'checked': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.checked) results.push(node);=0A=
      return results;=0A=
    }=0A=
  },=0A=
=0A=
  operators: {=0A=
    '=3D':  function(nv, v) { return nv =3D=3D v; },=0A=
    '!=3D': function(nv, v) { return nv !=3D v; },=0A=
    '^=3D': function(nv, v) { return nv.startsWith(v); },=0A=
    '$=3D': function(nv, v) { return nv.endsWith(v); },=0A=
    '*=3D': function(nv, v) { return nv.include(v); },=0A=
    '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + =
' '); },=0A=
    '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + =
'-').include('-' + v.toUpperCase() + '-'); }=0A=
  },=0A=
=0A=
  matchElements: function(elements, expression) {=0A=
    var matches =3D new Selector(expression).findElements(), h =3D =
Selector.handlers;=0A=
    h.mark(matches);=0A=
    for (var i =3D 0, results =3D [], element; element =3D elements[i]; =
i++)=0A=
      if (element._counted) results.push(element);=0A=
    h.unmark(matches);=0A=
    return results;=0A=
  },=0A=
=0A=
  findElement: function(elements, expression, index) {=0A=
    if (Object.isNumber(expression)) {=0A=
      index =3D expression; expression =3D false;=0A=
    }=0A=
    return Selector.matchElements(elements, expression || '*')[index || =
0];=0A=
  },=0A=
=0A=
  findChildElements: function(element, expressions) {=0A=
    var exprs =3D expressions.join(',');=0A=
    expressions =3D [];=0A=
    exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {=0A=
      expressions.push(m[1].strip());=0A=
    });=0A=
    var results =3D [], h =3D Selector.handlers;=0A=
    for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A=
      selector =3D new Selector(expressions[i].strip());=0A=
      h.concat(results, selector.findElements(element));=0A=
    }=0A=
    return (l > 1) ? h.unique(results) : results;=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.IE) {=0A=
  // IE returns comment nodes on getElementsByTagName("*").=0A=
  // Filter them out.=0A=
  Selector.handlers.concat =3D function(a, b) {=0A=
    for (var i =3D 0, node; node =3D b[i]; i++)=0A=
      if (node.tagName !=3D=3D "!") a.push(node);=0A=
    return a;=0A=
  };=0A=
}=0A=
=0A=
function $$() {=0A=
  return Selector.findChildElements(document, $A(arguments));=0A=
}=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    $(form).reset();=0A=
    return form;=0A=
  },=0A=
=0A=
  serializeElements: function(elements, options) {=0A=
    if (typeof options !=3D 'object') options =3D { hash: !!options };=0A=
    else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A=
    var key, value, submitted =3D false, submit =3D options.submit;=0A=
=0A=
    var data =3D elements.inject({ }, function(result, element) {=0A=
      if (!element.disabled && element.name) {=0A=
        key =3D element.name; value =3D $(element).getValue();=0A=
        if (value !=3D null && (element.type !=3D 'submit' || =
(!submitted &&=0A=
            submit !=3D=3D false && (!submit || key =3D=3D submit) && =
(submitted =3D true)))) {=0A=
          if (key in result) {=0A=
            // a key is already present; construct an array of values=0A=
            if (!Object.isArray(result[key])) result[key] =3D =
[result[key]];=0A=
            result[key].push(value);=0A=
          }=0A=
          else result[key] =3D value;=0A=
        }=0A=
      }=0A=
      return result;=0A=
    });=0A=
=0A=
    return options.hash ? data : Object.toQueryString(data);=0A=
  }=0A=
};=0A=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form, options) {=0A=
    return Form.serializeElements(Form.getElements(form), options);=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    return $A($(form).getElementsByTagName('*')).inject([],=0A=
      function(elements, child) {=0A=
        if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A=
          elements.push(Element.extend(child));=0A=
        return elements;=0A=
      }=0A=
    );=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name) return $A(inputs).map(Element.extend);=0A=
=0A=
    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))=0A=
        continue;=0A=
      matchingInputs.push(Element.extend(input));=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('disable');=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('enable');=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    var elements =3D $(form).getElements().findAll(function(element) {=0A=
      return 'hidden' !=3D element.type && !element.disabled;=0A=
    });=0A=
    var firstByIndex =3D elements.findAll(function(element) {=0A=
      return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A=
    }).sortBy(function(element) { return element.tabIndex }).first();=0A=
=0A=
    return firstByIndex ? firstByIndex : elements.find(function(element) =
{=0A=
      return ['input', 'select', =
'textarea'].include(element.tagName.toLowerCase());=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    form =3D $(form);=0A=
    form.findFirstElement().activate();=0A=
    return form;=0A=
  },=0A=
=0A=
  request: function(form, options) {=0A=
    form =3D $(form), options =3D Object.clone(options || { });=0A=
=0A=
    var params =3D options.parameters, action =3D =
form.readAttribute('action') || '';=0A=
    if (action.blank()) action =3D window.location.href;=0A=
    options.parameters =3D form.serialize(true);=0A=
=0A=
    if (params) {=0A=
      if (Object.isString(params)) params =3D params.toQueryParams();=0A=
      Object.extend(options.parameters, params);=0A=
    }=0A=
=0A=
    if (form.hasAttribute('method') && !options.method)=0A=
      options.method =3D form.method;=0A=
=0A=
    return new Ajax.Request(action, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element =3D {=0A=
  focus: function(element) {=0A=
    $(element).focus();=0A=
    return element;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    $(element).select();=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Form.Element.Methods =3D {=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element.disabled && element.name) {=0A=
      var value =3D element.getValue();=0A=
      if (value !=3D undefined) {=0A=
        var pair =3D { };=0A=
        pair[element.name] =3D value;=0A=
        return Object.toQueryString(pair);=0A=
      }=0A=
    }=0A=
    return '';=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    return Form.Element.Serializers[method](element);=0A=
  },=0A=
=0A=
  setValue: function(element, value) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    Form.Element.Serializers[method](element, value);=0A=
    return element;=0A=
  },=0A=
=0A=
  clear: function(element) {=0A=
    $(element).value =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  present: function(element) {=0A=
    return $(element).value !=3D '';=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    try {=0A=
      element.focus();=0A=
      if (element.select && (element.tagName.toLowerCase() !=3D 'input' =
||=0A=
          !['button', 'reset', 'submit'].include(element.type)))=0A=
        element.select();=0A=
    } catch (e) { }=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.blur();=0A=
    element.disabled =3D true;=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D false;=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Field =3D Form.Element;=0A=
var $F =3D Form.Element.Methods.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element.Serializers =3D {=0A=
  input: function(element, value) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return Form.Element.Serializers.inputSelector(element, value);=0A=
      default:=0A=
        return Form.Element.Serializers.textarea(element, value);=0A=
    }=0A=
  },=0A=
=0A=
  inputSelector: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.checked ? =
element.value : null;=0A=
    else element.checked =3D !!value;=0A=
  },=0A=
=0A=
  textarea: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.value;=0A=
    else element.value =3D value;=0A=
  },=0A=
=0A=
  select: function(element, index) {=0A=
    if (Object.isUndefined(index))=0A=
      return this[element.type =3D=3D 'select-one' ?=0A=
        'selectOne' : 'selectMany'](element);=0A=
    else {=0A=
      var opt, value, single =3D !Object.isArray(index);=0A=
      for (var i =3D 0, length =3D element.length; i < length; i++) {=0A=
        opt =3D element.options[i];=0A=
        value =3D this.optionValue(opt);=0A=
        if (single) {=0A=
          if (value =3D=3D index) {=0A=
            opt.selected =3D true;=0A=
            return;=0A=
          }=0A=
        }=0A=
        else opt.selected =3D index.include(value);=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  selectOne: function(element) {=0A=
    var index =3D element.selectedIndex;=0A=
    return index >=3D 0 ? this.optionValue(element.options[index]) : =
null;=0A=
  },=0A=
=0A=
  selectMany: function(element) {=0A=
    var values, length =3D element.length;=0A=
    if (!length) return null;=0A=
=0A=
    for (var i =3D 0, values =3D []; i < length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected) values.push(this.optionValue(opt));=0A=
    }=0A=
    return values;=0A=
  },=0A=
=0A=
  optionValue: function(opt) {=0A=
    // extend element because hasAttribute may not be native=0A=
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A=
  initialize: function($super, element, frequency, callback) {=0A=
    $super(callback, frequency);=0A=
    this.element   =3D $(element);=0A=
    this.lastValue =3D this.getValue();=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    var value =3D this.getValue();=0A=
    if (Object.isString(this.lastValue) && Object.isString(value) ?=0A=
        this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value)) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D Class.create({=0A=
  initialize: function(element, callback) {=0A=
    this.element  =3D $(element);=0A=
    this.callback =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A=
      this.registerFormCallbacks();=0A=
    else=0A=
      this.registerCallback(this.element);=0A=
  },=0A=
=0A=
  onElementEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  },=0A=
=0A=
  registerFormCallbacks: function() {=0A=
    Form.getElements(this.element).each(this.registerCallback, this);=0A=
  },=0A=
=0A=
  registerCallback: function(element) {=0A=
    if (element.type) {=0A=
      switch (element.type.toLowerCase()) {=0A=
        case 'checkbox':=0A=
        case 'radio':=0A=
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
        default:=0A=
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
if (!window.Event) var Event =3D { };=0A=
=0A=
Object.extend(Event, {=0A=
  KEY_BACKSPACE: 8,=0A=
  KEY_TAB:       9,=0A=
  KEY_RETURN:   13,=0A=
  KEY_ESC:      27,=0A=
  KEY_LEFT:     37,=0A=
  KEY_UP:       38,=0A=
  KEY_RIGHT:    39,=0A=
  KEY_DOWN:     40,=0A=
  KEY_DELETE:   46,=0A=
  KEY_HOME:     36,=0A=
  KEY_END:      35,=0A=
  KEY_PAGEUP:   33,=0A=
  KEY_PAGEDOWN: 34,=0A=
  KEY_INSERT:   45,=0A=
=0A=
  cache: { },=0A=
=0A=
  relatedTarget: function(event) {=0A=
    var element;=0A=
    switch(event.type) {=0A=
      case 'mouseover': element =3D event.fromElement; break;=0A=
      case 'mouseout':  element =3D event.toElement;   break;=0A=
      default: return null;=0A=
    }=0A=
    return Element.extend(element);=0A=
  }=0A=
});=0A=
=0A=
Event.Methods =3D (function() {=0A=
  var isButton;=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A=
    isButton =3D function(event, code) {=0A=
      return event.button =3D=3D buttonMap[code];=0A=
    };=0A=
=0A=
  } else if (Prototype.Browser.WebKit) {=0A=
    isButton =3D function(event, code) {=0A=
      switch (code) {=0A=
        case 0: return event.which =3D=3D 1 && !event.metaKey;=0A=
        case 1: return event.which =3D=3D 1 && event.metaKey;=0A=
        default: return false;=0A=
      }=0A=
    };=0A=
=0A=
  } else {=0A=
    isButton =3D function(event, code) {=0A=
      return event.which ? (event.which =3D=3D=3D code + 1) : =
(event.button =3D=3D=3D code);=0A=
    };=0A=
  }=0A=
=0A=
  return {=0A=
    isLeftClick:   function(event) { return isButton(event, 0) },=0A=
    isMiddleClick: function(event) { return isButton(event, 1) },=0A=
    isRightClick:  function(event) { return isButton(event, 2) },=0A=
=0A=
    element: function(event) {=0A=
      var node =3D Event.extend(event).target;=0A=
      return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? =
node.parentNode : node);=0A=
    },=0A=
=0A=
    findElement: function(event, expression) {=0A=
      var element =3D Event.element(event);=0A=
      if (!expression) return element;=0A=
      var elements =3D [element].concat(element.ancestors());=0A=
      return Selector.findElement(elements, expression, 0);=0A=
    },=0A=
=0A=
    pointer: function(event) {=0A=
      return {=0A=
        x: event.pageX || (event.clientX +=0A=
          (document.documentElement.scrollLeft || =
document.body.scrollLeft)),=0A=
        y: event.pageY || (event.clientY +=0A=
          (document.documentElement.scrollTop || =
document.body.scrollTop))=0A=
      };=0A=
    },=0A=
=0A=
    pointerX: function(event) { return Event.pointer(event).x },=0A=
    pointerY: function(event) { return Event.pointer(event).y },=0A=
=0A=
    stop: function(event) {=0A=
      Event.extend(event);=0A=
      event.preventDefault();=0A=
      event.stopPropagation();=0A=
      event.stopped =3D true;=0A=
    }=0A=
  };=0A=
})();=0A=
=0A=
Event.extend =3D (function() {=0A=
  var methods =3D Object.keys(Event.Methods).inject({ }, function(m, =
name) {=0A=
    m[name] =3D Event.Methods[name].methodize();=0A=
    return m;=0A=
  });=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    Object.extend(methods, {=0A=
      stopPropagation: function() { this.cancelBubble =3D true },=0A=
      preventDefault:  function() { this.returnValue =3D false },=0A=
      inspect: function() { return "[object Event]" }=0A=
    });=0A=
=0A=
    return function(event) {=0A=
      if (!event) return false;=0A=
      if (event._extendedByPrototype) return event;=0A=
=0A=
      event._extendedByPrototype =3D Prototype.emptyFunction;=0A=
      var pointer =3D Event.pointer(event);=0A=
      Object.extend(event, {=0A=
        target: event.srcElement,=0A=
        relatedTarget: Event.relatedTarget(event),=0A=
        pageX:  pointer.x,=0A=
        pageY:  pointer.y=0A=
      });=0A=
      return Object.extend(event, methods);=0A=
    };=0A=
=0A=
  } else {=0A=
    Event.prototype =3D Event.prototype || =
document.createEvent("HTMLEvents").__proto__;=0A=
    Object.extend(Event.prototype, methods);=0A=
    return Prototype.K;=0A=
  }=0A=
})();=0A=
=0A=
Object.extend(Event, (function() {=0A=
  var cache =3D Event.cache;=0A=
=0A=
  function getEventID(element) {=0A=
    if (element._eventID) return element._eventID;=0A=
    arguments.callee.id =3D arguments.callee.id || 1;=0A=
    return element._eventID =3D ++arguments.callee.id;=0A=
  }=0A=
=0A=
  function getDOMEventName(eventName) {=0A=
    if (eventName && eventName.include(':')) return "dataavailable";=0A=
    return eventName;=0A=
  }=0A=
=0A=
  function getCacheForID(id) {=0A=
    return cache[id] =3D cache[id] || { };=0A=
  }=0A=
=0A=
  function getWrappersForEventName(id, eventName) {=0A=
    var c =3D getCacheForID(id);=0A=
    return c[eventName] =3D c[eventName] || [];=0A=
  }=0A=
=0A=
  function createWrapper(element, eventName, handler) {=0A=
    var id =3D getEventID(element);=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    if (c.pluck("handler").include(handler)) return false;=0A=
=0A=
    var wrapper =3D function(event) {=0A=
      if (!Event || !Event.extend ||=0A=
        (event.eventName && event.eventName !=3D eventName))=0A=
          return false;=0A=
=0A=
      Event.extend(event);=0A=
      handler.call(element, event);=0A=
    };=0A=
=0A=
    wrapper.handler =3D handler;=0A=
    c.push(wrapper);=0A=
    return wrapper;=0A=
  }=0A=
=0A=
  function findWrapper(id, eventName, handler) {=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    return c.find(function(wrapper) { return wrapper.handler =3D=3D =
handler });=0A=
  }=0A=
=0A=
  function destroyWrapper(id, eventName, handler) {=0A=
    var c =3D getCacheForID(id);=0A=
    if (!c[eventName]) return false;=0A=
    c[eventName] =3D c[eventName].without(findWrapper(id, eventName, =
handler));=0A=
  }=0A=
=0A=
  function destroyCache() {=0A=
    for (var id in cache)=0A=
      for (var eventName in cache[id])=0A=
        cache[id][eventName] =3D null;=0A=
  }=0A=
=0A=
  if (window.attachEvent) {=0A=
    window.attachEvent("onunload", destroyCache);=0A=
  }=0A=
=0A=
  return {=0A=
    observe: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var name =3D getDOMEventName(eventName);=0A=
=0A=
      var wrapper =3D createWrapper(element, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.addEventListener) {=0A=
        element.addEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.attachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    stopObserving: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var id =3D getEventID(element), name =3D =
getDOMEventName(eventName);=0A=
=0A=
      if (!handler && eventName) {=0A=
        getWrappersForEventName(id, eventName).each(function(wrapper) {=0A=
          element.stopObserving(eventName, wrapper.handler);=0A=
        });=0A=
        return element;=0A=
=0A=
      } else if (!eventName) {=0A=
        Object.keys(getCacheForID(id)).each(function(eventName) {=0A=
          element.stopObserving(eventName);=0A=
        });=0A=
        return element;=0A=
      }=0A=
=0A=
      var wrapper =3D findWrapper(id, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.removeEventListener) {=0A=
        element.removeEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.detachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      destroyWrapper(id, eventName, handler);=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    fire: function(element, eventName, memo) {=0A=
      element =3D $(element);=0A=
      if (element =3D=3D document && document.createEvent && =
!element.dispatchEvent)=0A=
        element =3D document.documentElement;=0A=
=0A=
      var event;=0A=
      if (document.createEvent) {=0A=
        event =3D document.createEvent("HTMLEvents");=0A=
        event.initEvent("dataavailable", true, true);=0A=
      } else {=0A=
        event =3D document.createEventObject();=0A=
        event.eventType =3D "ondataavailable";=0A=
      }=0A=
=0A=
      event.eventName =3D eventName;=0A=
      event.memo =3D memo || { };=0A=
=0A=
      if (document.createEvent) {=0A=
        element.dispatchEvent(event);=0A=
      } else {=0A=
        element.fireEvent(event.eventType, event);=0A=
      }=0A=
=0A=
      return Event.extend(event);=0A=
    }=0A=
  };=0A=
})());=0A=
=0A=
Object.extend(Event, Event.Methods);=0A=
=0A=
Element.addMethods({=0A=
  fire:          Event.fire,=0A=
  observe:       Event.observe,=0A=
  stopObserving: Event.stopObserving=0A=
});=0A=
=0A=
Object.extend(document, {=0A=
  fire:          Element.Methods.fire.methodize(),=0A=
  observe:       Element.Methods.observe.methodize(),=0A=
  stopObserving: Element.Methods.stopObserving.methodize(),=0A=
  loaded:        false=0A=
});=0A=
=0A=
(function() {=0A=
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A=
     Matthias Miller, Dean Edwards and John Resig. */=0A=
=0A=
  var timer;=0A=
=0A=
  function fireContentLoadedEvent() {=0A=
    if (document.loaded) return;=0A=
    if (timer) window.clearInterval(timer);=0A=
    document.fire("dom:loaded");=0A=
    document.loaded =3D true;=0A=
  }=0A=
=0A=
  if (document.addEventListener) {=0A=
    if (Prototype.Browser.WebKit) {=0A=
      timer =3D window.setInterval(function() {=0A=
        if (/loaded|complete/.test(document.readyState))=0A=
          fireContentLoadedEvent();=0A=
      }, 0);=0A=
=0A=
      Event.observe(window, "load", fireContentLoadedEvent);=0A=
=0A=
    } else {=0A=
      document.addEventListener("DOMContentLoaded",=0A=
        fireContentLoadedEvent, false);=0A=
    }=0A=
=0A=
  } else {=0A=
    document.write("<script id=3D__onDOMContentLoaded defer =
src=3D//:><\/script>");=0A=
    $("__onDOMContentLoaded").onreadystatechange =3D function() {=0A=
      if (this.readyState =3D=3D "complete") {=0A=
        this.onreadystatechange =3D null;=0A=
        fireContentLoadedEvent();=0A=
      }=0A=
    };=0A=
  }=0A=
})();=0A=
/*------------------------------- DEPRECATED =
-------------------------------*/=0A=
=0A=
Hash.toQueryString =3D Object.toQueryString;=0A=
=0A=
var Toggle =3D { display: Element.toggle };=0A=
=0A=
Element.Methods.childOf =3D Element.Methods.descendantOf;=0A=
=0A=
var Insertion =3D {=0A=
  Before: function(element, content) {=0A=
    return Element.insert(element, {before:content});=0A=
  },=0A=
=0A=
  Top: function(element, content) {=0A=
    return Element.insert(element, {top:content});=0A=
  },=0A=
=0A=
  Bottom: function(element, content) {=0A=
    return Element.insert(element, {bottom:content});=0A=
  },=0A=
=0A=
  After: function(element, content) {=0A=
    return Element.insert(element, {after:content});=0A=
  }=0A=
};=0A=
=0A=
var $continue =3D new Error('"throw $continue" is deprecated, use =
"return" instead');=0A=
=0A=
// This should be moved to script.aculo.us; notice the deprecated methods=0A=
// further below, that map to the newer Element methods.=0A=
var Position =3D {=0A=
  // set to true if needed, warning: firefox performance problems=0A=
  // NOT neeeded for page scrolling, only if draggable contained in=0A=
  // scrollable elements=0A=
  includeScrollOffsets: false,=0A=
=0A=
  // must be called before calling withinIncludingScrolloffset, every =
time the=0A=
  // page is scrolled=0A=
  prepare: function() {=0A=
    this.deltaX =3D  window.pageXOffset=0A=
                || document.documentElement.scrollLeft=0A=
                || document.body.scrollLeft=0A=
                || 0;=0A=
    this.deltaY =3D  window.pageYOffset=0A=
                || document.documentElement.scrollTop=0A=
                || document.body.scrollTop=0A=
                || 0;=0A=
  },=0A=
=0A=
  // caches x/y coordinate pair to use with overlap=0A=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (y >=3D this.offset[1] &&=0A=
            y <  this.offset[1] + element.offsetHeight &&=0A=
            x >=3D this.offset[0] &&=0A=
            x <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  withinIncludingScrolloffsets: function(element, x, y) {=0A=
    var offsetcache =3D Element.cumulativeScrollOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  // within must be called directly before=0A=
  overlap: function(mode, element) {=0A=
    if (!mode) return 0;=0A=
    if (mode =3D=3D 'vertical')=0A=
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A=
        element.offsetHeight;=0A=
    if (mode =3D=3D 'horizontal')=0A=
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A=
        element.offsetWidth;=0A=
  },=0A=
=0A=
  // Deprecation layer -- use newer Element methods now (1.5.2).=0A=
=0A=
  cumulativeOffset: Element.Methods.cumulativeOffset,=0A=
=0A=
  positionedOffset: Element.Methods.positionedOffset,=0A=
=0A=
  absolutize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.absolutize(element);=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.relativize(element);=0A=
  },=0A=
=0A=
  realOffset: Element.Methods.cumulativeScrollOffset,=0A=
=0A=
  offsetParent: Element.Methods.getOffsetParent,=0A=
=0A=
  page: Element.Methods.viewportOffset,=0A=
=0A=
  clone: function(source, target, options) {=0A=
    options =3D options || { };=0A=
    return Element.clonePosition(target, source, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!document.getElementsByClassName) document.getElementsByClassName =
=3D function(instanceMethods){=0A=
  function iter(name) {=0A=
    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' =
" + name + " ')]";=0A=
  }=0A=
=0A=
  instanceMethods.getElementsByClassName =3D =
Prototype.BrowserFeatures.XPath ?=0A=
  function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') =
: iter(className);=0A=
    return cond ? document._getElementsByXPath('.//*' + cond, element) : =
[];=0A=
  } : function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var elements =3D [], classNames =3D (/\s/.test(className) ? =
$w(className) : null);=0A=
    if (!classNames && !className) return elements;=0A=
=0A=
    var nodes =3D $(element).getElementsByTagName('*');=0A=
    className =3D ' ' + className + ' ';=0A=
=0A=
    for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A=
      if (child.className && (cn =3D ' ' + child.className + ' ') && =
(cn.include(className) ||=0A=
          (classNames && classNames.all(function(name) {=0A=
            return !name.toString().blank() && cn.include(' ' + name + ' =
');=0A=
          }))))=0A=
        elements.push(Element.extend(child));=0A=
    }=0A=
    return elements;=0A=
  };=0A=
=0A=
  return function(className, parentElement) {=0A=
    return $(parentElement || =
document.body).getElementsByClassName(className);=0A=
  };=0A=
}(Element.Methods);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.ClassNames =3D Class.create();=0A=
Element.ClassNames.prototype =3D {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    this.element.className.split(/\s+/).select(function(name) {=0A=
      return name.length > 0;=0A=
    })._each(iterator);=0A=
  },=0A=
=0A=
  set: function(className) {=0A=
    this.element.className =3D className;=0A=
  },=0A=
=0A=
  add: function(classNameToAdd) {=0A=
    if (this.include(classNameToAdd)) return;=0A=
    this.set($A(this).concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set($A(this).without(classNameToRemove).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return $A(this).join(' ');=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.ClassNames.prototype, Enumerable);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.addMethods();
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/js/scriptaculous.js

// script.aculo.us scriptaculous.js v1.8.1, Thu Jan 03 22:07:12 -0500 =
2008=0A=
=0A=
// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
// =0A=
// Permission is hereby granted, free of charge, to any person obtaining=0A=
// a copy of this software and associated documentation files (the=0A=
// "Software"), to deal in the Software without restriction, including=0A=
// without limitation the rights to use, copy, modify, merge, publish,=0A=
// distribute, sublicense, and/or sell copies of the Software, and to=0A=
// permit persons to whom the Software is furnished to do so, subject to=0A=
// the following conditions:=0A=
// =0A=
// The above copyright notice and this permission notice shall be=0A=
// included in all copies or substantial portions of the Software.=0A=
//=0A=
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,=0A=
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF=0A=
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND=0A=
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE=0A=
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION=0A=
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION=0A=
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.=0A=
//=0A=
// For details, see the script.aculo.us web site: http://script.aculo.us/=0A=
=0A=
var Scriptaculous =3D {=0A=
  Version: '1.8.1',=0A=
  require: function(libraryName) {=0A=
    // inserting via DOM fails in Safari 2.0, so brute force approach=0A=
    document.write('<script type=3D"text/javascript" =
src=3D"'+libraryName+'"><\/script>');=0A=
  },=0A=
  REQUIRED_PROTOTYPE: '1.6.0',=0A=
  load: function() {=0A=
    function convertVersionString(versionString){=0A=
      var r =3D versionString.split('.');=0A=
      return parseInt(r[0])*100000 + parseInt(r[1])*1000 + =
parseInt(r[2]);=0A=
    }=0A=
 =0A=
    if((typeof Prototype=3D=3D'undefined') || =0A=
       (typeof Element =3D=3D 'undefined') || =0A=
       (typeof Element.Methods=3D=3D'undefined') ||=0A=
       (convertVersionString(Prototype.Version) < =0A=
        convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))=0A=
       throw("script.aculo.us requires the Prototype JavaScript =
framework >=3D " +=0A=
        Scriptaculous.REQUIRED_PROTOTYPE);=0A=
    =0A=
    $A(document.getElementsByTagName("script")).findAll( function(s) {=0A=
      return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))=0A=
    }).each( function(s) {=0A=
      var path =3D s.src.replace(/scriptaculous\.js(\?.*)?$/,'');=0A=
      var includes =3D s.src.match(/\?.*load=3D([a-z,]*)/);=0A=
      (includes ? includes[1] : =
'builder,effects,dragdrop,controls,slider,sound').split(',').each(=0A=
       function(include) { Scriptaculous.require(path+include+'.js') });=0A=
    });=0A=
  }=0A=
}=0A=
=0A=
Scriptaculous.load();
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/js/functions.js

=EF=BB=BF// JScript File

//see if we can grab the date on the server
var latest;

function TimeSincePublished(publish, current, formattedPublish) {
    var curdate;
    var maxseconds =3D 5400;
    //parse publish date into date object
    var year =3D publish.substr(0,4);
    var month =3D publish.substr(5,2);
    month--;
    var days =3D publish.substr(8,2);
    var hours =3D publish.substr(11,2);
    var mins =3D publish.substr(14,2);
    var seconds =3D publish.substr(17,2);
    var pubdate =3D new Date(year,month,days,hours,mins,seconds,0);
   =20
    if (!latest) { //if not already loaded then try loading it
      latest =3D readHTTPHeaders("/js/functions.js?" + =
Math.random()*5000);
    }
   =20
    if (latest.length > 1) {
      curdate =3D new Date(latest);
    } else {
      // if that failed that parse the stale date that came with the =
page
      year =3D current.substr(0,4);
      month =3D current.substr(5,2);
      month--;
      days =3D current.substr(8,2);
      hours =3D current.substr(11,2);
      mins =3D current.substr(14,2);
      seconds =3D current.substr(17,2);
      curdate =3D new Date(year,month,days,hours,mins,seconds,0);
    }

    //figure out the difference
   =20
    var difference =3D curdate.getTime() - pubdate.getTime();
    =20
    difference =3D difference / 1000;

    if (difference < maxseconds && difference > 0)=20
    //if (difference < maxseconds)=20
    {
 =20
              var minutes =3D Math.round(difference / (60));
              if (minutes) {=20
             =20
              document.write("<span class=3D'minutesAgo'>" + minutes + " =
min. ago</span><br/>");}
    =20
    }
//     else {
//     if (formattedPublish.substr(0,4) =3D=3D 'May.')
//     formattedPublish =3D formattedPublish.substr(0,3) + =
formattedPublish.substr(4);
//     document.write(" <span class=3D'publishDate'>" + formattedPublish =
+ "</span>");
    }



function TimeSincePublishedBreakingNews(publish, current, =
formattedPublish) {
    var curdate;
    var maxseconds =3D 5400;
    //parse publish date into date object
    var year =3D publish.substr(0,4);
    var month =3D publish.substr(5,2);
    month--;
    var days =3D publish.substr(8,2);
    var hours =3D publish.substr(11,2);
    var mins =3D publish.substr(14,2);
    var seconds =3D publish.substr(17,2);
    var pubdate =3D new Date(year,month,days,hours,mins,seconds,0);
   =20
    if (!latest) { //if not already loaded then try loading it
      latest =3D readHTTPHeaders("/js/functions.js?" + =
Math.random()*5000);
    }
   =20
    if (latest.length > 1) {
      curdate =3D new Date(latest);
    } else {
      // if that failed that parse the stale date that came with the =
page
      year =3D current.substr(0,4);
      month =3D current.substr(5,2);
      month--;
      days =3D current.substr(8,2);
      hours =3D current.substr(11,2);
      mins =3D current.substr(14,2);
      seconds =3D current.substr(17,2);
      curdate =3D new Date(year,month,days,hours,mins,seconds,0);
    }

    //figure out the difference
   =20
    var difference =3D curdate.getTime() - pubdate.getTime();
    difference =3D difference / 1000;
    if (difference < maxseconds) {   =20
      var minutes =3D Math.round(difference / (60));
      if (minutes) { document.write("<span class=3D'minutesAgo'>" + =
minutes + "&nbsp;min.&nbsp;ago</span><br/>");}
      }
}

 function readHTTPHeaders (url) {=20
 var req =3D false;
     if(window.XMLHttpRequest && !(window.ActiveXObject)) {
        try {
                        req =3D new XMLHttpRequest();
        } catch(e) {
                        req =3D false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
        try {
                req =3D new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
                try {
                        req =3D new ActiveXObject("Microsoft.XMLHTTP");
                } catch(e) {
                        req =3D false;
                }
                }
    }
   =20
    try {=20
      req.open('HEAD', url, false);=20
      req.send(null);=20
      return req.getResponseHeader("Date");=20
    }=20
    catch (e) {=20
      return "";=20
    }
}

//for article list back/forth
function Querystring(qs) {
 var value;
  var pair;
  var name;
  this.params =3D new Object();
  this.get=3D function (key) { return this.params[key]; }

  if (qs =3D=3D null) {
    qs=3Dlocation.search.substring(1,location.search.length);
  }

  if (qs.length =3D=3D 0) {
    return;
  }

  qs =3D qs.replace(/\+/g, ' ');
  var args =3D qs.split('&');
  for (var i=3D0;i<args.length;i++) {
    value;
    pair =3D args[i].split('=3D');
    name =3D unescape(pair[0]);
    if (pair.length =3D=3D 2) {
      value =3D unescape(pair[1]);
    } else {
      value =3D name;
    }
    this.params[name] =3D value;
  }
}


function jumpto(pagenum)
{
  pagenum =3D parseInt(pagenum) + parseInt(index);
  if (pagenum >=3D 0 && pagenum < idarray.length) {
   location=3D"article?assetID=3D"+idarray[pagenum]+"&assetIDx=3D"+ids;
  }
}

var qs =3D new Querystring();
var idxID =3D qs.get("assetID");
var index =3D 0;
var idarray;

if (idxID && idxID.length > 0) {
  var ids =3D qs.get("assetIDx");

  idarray =3D ids.split(","); =20
  index =3D 0;
  for (i=3D0;i<idarray.length;i++) {
    if (idarray[i] =3D=3D idxID) {
      index =3D i;
      break;
    }
  }
}

//add default prev next functions? lets see if it causes any problems
function drawPrev()
{
  if (index > 0) {
    document.write('<a href=3D"javascript:jumpto(-1)">< Previous story =
</a>');
  }
}
function drawNext()
{
  if (idarray && index < idarray.length - 1) {
    document.write('<a href=3D"javascript:jumpto(1)">Next story ></a>');
  }
}

var ListOfIds =3D new Array(); //holds=20
function addid(key, id)
{

  if (ListOfIds[key]) {
    ListOfIds[key] =3D ListOfIds[key] + "," + id;
  } else {
    ListOfIds[key] =3D id;
  }
}

function gotolink(key, id)
{
  location=3D"/article?assetID=3D"+id+"&assetIDx=3D" + ListOfIds[key];
}

function getElementsByClass(searchClass,node,tag) {
	var classElements =3D new Array();
	if ( node =3D=3D null )
		node =3D document;
	if ( tag =3D=3D null )
		tag =3D '*';
	var els =3D node.getElementsByTagName(tag);
	var elsLen =3D els.length;
	var pattern =3D new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i =3D 0, j =3D 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] =3D els[i];
			j++;
		}
	}
	return classElements;
}

function highlightWord(node,word) {
	// Iterate into this nodes childNodes
	if (node.hasChildNodes) {
		var hi_cn;
		for (hi_cn=3D0;hi_cn<node.childNodes.length;hi_cn++) {
			highlightWord(node.childNodes[hi_cn],word);
		}
	}

	// And do this node itself
	if (node.nodeType =3D=3D 3) { // text node
		tempNodeVal =3D node.nodeValue.toLowerCase();
		tempWordVal =3D word.toLowerCase();
		var pattern =3D new RegExp("\\b" + tempWordVal + "\\b");
		if (tempNodeVal.match(pattern)) {
			pn =3D node.parentNode;
			if (pn.className !=3D "searchword") {
				// word has not already been highlighted!
				nv =3D node.nodeValue;
				ni =3D tempNodeVal.indexOf(tempWordVal);
				// Create a load of replacement nodes
				before =3D document.createTextNode(nv.substr(0,ni));
				docWordVal =3D nv.substr(ni,word.length);
				after =3D document.createTextNode(nv.substr(ni+word.length));
				hiwordtext =3D document.createTextNode(docWordVal);
				hiword =3D document.createElement("span");
				hiword.className =3D "searchword";
				hiword.appendChild(hiwordtext);
				pn.insertBefore(before,node);
				pn.insertBefore(hiword,node);
				pn.insertBefore(after,node);
				pn.removeChild(node);
			}
		}
	}
}

function localSearchHighlight(searchStr) {
	if (!document.createElement) return;
        if (searchStr =3D=3D '') return;
	// Trim leading and trailing spaces after unescaping
	searchstr =3D unescape(searchStr).replace(/^\s+|\s+$/g, "");
	if( searchStr =3D=3D '' ) return;
	phrases =3D searchStr.replace(/\+/g,' ').split(/\"/);
	// Use this next line if you would like to force the script to always
	// search for phrases. See below as well!!!
	//phrases =3D new Array(); phrases[0] =3D ''; phrases[1] =3D =
searchStr.replace(/\+/g,' ');
	for(p=3D0;p<phrases.length;p++) {
	        phrases[p] =3D unescape(phrases[p]).replace(/^\s+|\s+$/g, "");
		if( phrases[p] =3D=3D '' ) continue;
		if( p % 2 =3D=3D 0 ) words =3D =
phrases[p].replace(/([+,()]|%(29|28)|\W+(AND|OR)\W+)/g,' =
').split(/\s+/);
		else { words=3DArray(1); words[0] =3D phrases[p]; }
		var LuceneResults =3D document.getElementById("LuceneResults");
		var hiliteTextAreas =3D =
getElementsByClass("hiliteText",LuceneResults,"div");
        for (w=3D0;w<words.length;w++) {
			if( words[w] =3D=3D '' ) continue;
			for (var j=3D0;j<hiliteTextAreas.length;j++) {
			  highlightWord(hiliteTextAreas[j],words[w]);
			}
        }
	}
}

function clearDefault(el)
{
   if (el.defaultValue=3D=3Del.value) el.value =3D ""
}


function doSearch(form) {
    var searchurl=3D"/search?";
    var headline;
    if (form.headline) {
      headline =3D form.headline.value;
    }
   =20
    var keywords;
    if (form.kquery) {
      keywords =3D form.kquery.value;
    } else {
       if (form.keywords) {
         keywords =3D form.keywords.value;
       }
    }
   =20
    var category;
    if (form.category) {
      category =3D =
form.category.options[form.category.selectedIndex].value;
    }
     =20
    var byline;
    if (form.byline) {
      byline =3D form.byline.value;
    }
   =20
    var body;
    if (form.body) {
      body =3D form.body.value;
    }
 =20
    var daterange;
    if (form.daterange) {
      daterange =3D =
form.daterange.options[form.daterange.selectedIndex].value;
    }
   =20
    var title;
    setSessionCookie('title','ALL DATES');   =20
    if (form.daterange) {
      var temp =3D form.daterange.selectedIndex;
      if (temp =3D=3D 0) title =3D "ALL DATES";
      if (temp =3D=3D 1) title =3D "TODAY";=20
      if (temp =3D=3D 2) title =3D "YESTERDAY";=20
      if (temp =3D=3D 3) title =3D "PAST 3 DAYS";=20
      if (temp =3D=3D 4) title =3D "PAST 14 DAYS";=20
      setSessionCookie('title',title);
    }    =20
   =20
    var orderby; =20
    if (form.orderby && form.orderby[1].checked) {
      orderby =3D form.orderby[1].value;
    }
   =20
    searchurl +=3D "&q=3D"; =20
    if (keywords) {
       searchurl +=3D keywords; =20
    } else {
       searchurl +=3D "1&t=3Dall";
    }
 =20
    searchurl +=3D "&r=3D";
    if (headline) {
       searchurl +=3D "Title:\"" + headline + "\" AND ";
    }
    if (category) {
       searchurl +=3D "category:\"" + category + "\" AND ";
    }
    if (byline) {
       searchurl +=3D "(SubTitle1:\"" + byline + "\" OR SubTitle2:\"" + =
byline + "\") AND ";
    }
    if (body) {
       searchurl +=3D "Body:\"" + body + "\" AND ";
    }
    if (daterange) {
       searchurl +=3D daterange + " AND ";
    }
    if (headline || category || byline || body || daterange) {
       searchurl =3D searchurl.substr(0, searchurl.length -5)
    }   =20
    if (orderby) {
       searchurl +=3D "&OrderBy=3D" + orderby;
    } =20
    =20
    //check if we should do a google request instead
    if (form.searchType && form.searchType[1].checked) {
      searchurl =3D "http://www.google.com/search?q=3D" + keywords;
    }
    document.location =3D searchurl;
  return false;
}


function  GetCurrDate() {
    var m_names =3D new Array("January", "February", "March",
            "April", "May", "June", "July", "August", "September",
            "October", "November", "December");
           =20
    var d_names =3D new Array("Sunday", "Monday", "Tuesday",
            "Wednesday", "Thursday", "Friday", "Saturday");

    var d =3D new Date();
    var curr_day =3D d.getDay();
    var curr_date =3D d.getDate();
    var curr_month =3D d.getMonth();
    var curr_year =3D d.getFullYear();

    document.write(d_names[curr_day] + ", " + m_names[curr_month] + " " =
+ curr_date +  ", " + curr_year);
}

function checkenter(evt, form) {
  if (evt) {
  keyCode=3Devt.keyCode;
   =20
  } else {
    keyCode =3D window.event.keyCode;
  }
  if (keyCode =3D=3D 13){
     doSearch(form);
     return false
  }

  return true;
}

function noenter(evt) {
  if (evt) {
    keyCode =3D evt.which;
  } else {
    keyCode =3D window.event.keyCode;
  }
      if (keyCode =3D=3D 13){
        return false;
      }
     =20
  return true;
}
//Popup Video Clip
function Pop_Window (url, width, height, vname)
{   =20
    window.open(url, vname, 'toolbar=3Dno, location=3Dno, =
directories=3Dno, resizable=3Dno, scrollbars=3Dno, status=3Dno, =
menubar=3Dno, dependent=3Dno, width=3D'+width+', height=3D'+height);
    return this.href;
}
//Popup Graphic
function Popup()
{

    var floater =3D document.getElementById("graphic");
    var yScroll=3D 0;
    yScroll =3D window.pageYOffset ||
               document.body.scrollTop ||
               document.documentElement.scrollTop;

    floater.style.top =3D 20 + yScroll + 'px';
    floater.style.right =3D 30 + 'px';

}

function New_Window (url, wname)
{   =20
    window.open(url, wname);
    return this.href;
}

=20
   function getArgs(title) {
        var args =3D new Object();
        var query =3D location.search.substring(1);
        var pairs =3D query.split("&");
       =20
        for(var i=3D0;i<pairs.length;i++){
            var pos =3D pairs[i].indexOf('=3D');
            if (pos =3D=3D -1) continue;
            var argname =3D pairs[i].substring(0,pos);
           =20
            if(argname =3D=3D "title") {
                var value =3D pairs[i].substring(pos+1);
                value =3D decodeURIComponent(value);
                args[argname] =3D value;
                document.write (args[argname]);
            }
        }
    } =20
   =20
   =20
    /* cookies */

    function getCookie(c_name) {
        if (document.cookie.length>0) {
            c_start =3D document.cookie.indexOf(c_name + "=3D");
            if (c_start !=3D -1) {=20
                c_start =3D c_start + c_name.length+1;=20
                c_end =3D document.cookie.indexOf(";",c_start);
                if (c_end =3D=3D -1) c_end=3Ddocument.cookie.length;
                return =
document.write(unescape(document.cookie.substring(c_start,c_end)));
            }=20
        }
        return "";
    }
   =20
    =20
    function setSessionCookie(c_name,value) {=09
	      document.cookie =3D c_name+ "=3D" +escape(value)+ "; path=3D/";
    }
   =20
    function checkCookies(c_name) {
	      var value =3D "";
	      if (document.cookie.length > 0) {
		        c_start =3D document.cookie.indexOf(c_name + "=3D");           =
                         =20
		        if (c_start !=3D -1) {=20
			          c_start =3D c_start + c_name.length + 1;=20
			          c_end =3D document.cookie.indexOf(";",c_start);
			          if (c_end =3D=3D -1) c_end =3D document.cookie.length;=20
			          return unescape(document.cookie.substring(c_start,c_end));
		        }=20
	      }
    }
   =20
   =20
   =20
   =20
   =20
    var req =3D false;
ContentInject =3D function(_URL, _ID) {=0A=
	var ID;=0A=
	if (!_ID) {=0A=
		ID =3D 'ContentInject' + Math.random()*5000;
		document.write('<div id=3D"' + ID + '"></div>')
	}
	else
		ID =3D _ID;


	//var req =3D false;
	if(window.XMLHttpRequest && !(window.ActiveXObject)) {
		try {
			req =3D new XMLHttpRequest();
		} catch(e) {
			req =3D false;
		}
		// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
		try {
			req =3D new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req =3D new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req =3D false;
			}
		}
	}
	try {

		req.onreadystatechange =3D function alertContents(){
					if(req.readyState=3D=3D4) {
						element =3D document.getElementById(ID);
						if(req.status=3D=3D200){
							element.innerHTML =3D req.responseText;
						}
						else {
							element.innerHTML =3D "";
						}
					}
				};

		req.open('GET', _URL, true);
		req.send(null);
		//return req.responseText;
	}
	catch (e) {}
}

//prtotype edition
/*
ContentInject =3D function(_URL, _ID) {=0A=
	var ID;=0A=
	if (!_ID) {=0A=
		ID =3D 'ContentInject' + Math.random()*5000;
		document.write('<div id=3D"' + ID + '"></div>')
	}
	else
		ID =3D _ID;

	new Ajax.Request(_URL, {
		method: 'get',
		onSuccess: function(transport) {
			$(ID).innerHTML =3D transport.responseText;
		}
	});
}
*/
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/topletsresources/news/phototoplet/js/PhotoToplet.js

=EF=BB=BF

function createMethodReference(obj, methodName){
  return function(){obj[methodName]();}
};

PhotoPlayerObj =3D function(ppdiv, autoplay, delay ,data)
{
  this.div =3D document.getElementById(ppdiv); //keep a reference to the =
player div
  this.data =3D data; //reference to=20
  this.playerobj =3D this; //reference itself for IE (which sucks);
  this.thumbs =3D new Array(); //array to hold image thumb objects

  this.direction =3D 1; //forward=3D1 or reverse=3D-1
  this.state =3D autoplay; // 0 =3D stop, 1 =3D forward
  this.timer =3D 0; // holds pointer to timer=20
  if (delay =3D=3D 0) {
    this.delay =3D 3000; // time between image flips
  } else {
    this.delay =3D delay * 1000;
  }
  this.index =3D -1; //current image being displayed
  this.fadeeffect =3D createMethodReference(this, 'fader');
  this.fadepercent =3D 0; // tracks how far it has faded
  this.fadestate =3D 0; //fading in or out
  this.intransition =3D 0; //check to see if its already in transition =
before starting a new one
  this.paused =3D false; //check if the player is paused by mouse over =
(not play pause)
  this.nodes =3D new Array();
  if (this.scanfornodes(this.div) =3D=3D false) { //check if the viewer =
is supplied
    alert("No viewer has been defined");
    return;
  }

  //check for special nodes
  if (this.nodes['PP-Play']) {
    this.nodes['PP-Play'].onclick =3D this.playClick;
    this.nodes['PP-Play'].onmouseover =3D this.mouseOver;
    this.nodes['PP-Play'].onmouseout =3D this.mouseOut;
  }
  if (this.nodes['PP-Prev']) {
    this.nodes['PP-Prev'].onclick =3D this.prevClick;
    this.nodes['PP-Prev'].onmouseover =3D this.mouseOver;
    this.nodes['PP-Prev'].onmouseout =3D this.mouseOut;
  }
  if (this.nodes['PP-Next']) {
    this.nodes['PP-Next'].onclick =3D this.nextClick;
    this.nodes['PP-Next'].onmouseover =3D this.mouseOver;
    this.nodes['PP-Next'].onmouseout =3D this.mouseOut;
  }

  if (this.nodes['PP-Thumbs'] && this.data.length > 1) {
    var thumbobj;
    //spit out a thumbnail for each image in the lineup
    for (var i=3D0;i<this.data.length;i++) {
      thumbobj =3D document.createElement('div');
      thumbobj.index =3D i;
      thumbobj.className =3D "imgthumb";
      thumbobj.onmouseover =3D this.mouseOver;
      thumbobj.onmouseout =3D this.mouseOut;
      thumbobj.onclick =3D this.thumbClick;
      thumbobj.playerobj =3D this;

      //if nothing is specified for the thumbnail then use the index
      if (this.data[i]['Thumbnail']) {
        //they can set an image and/or text (or any other properties?)
        this.setDivData(thumbobj, this.data[i]['Thumbnail']);
      } else {
        thumbobj.innerHTML =3D i + 1;
      }
      this.thumbs[this.thumbs.length] =3D thumbobj;
      this.nodes['PP-Thumbs'].appendChild(thumbobj);
    }
    this.nodes['PP-Thumbs'].style.display =3D "block"; //ie sucks, wont =
draw unless you do this

    //get width of second item in the thumbnail list (assume border, =
padding and margin go all around)
    var thumbwidth =3D =
parseInt(this.cascadedstyle(this.nodes['PP-Thumbs'].childNodes[1], =
'width', 'width'));
    var margin =3D =
parseInt(this.cascadedstyle(this.nodes['PP-Thumbs'].childNodes[1], =
'margin', 'margin-left'));
    if (isNaN(margin)) { margin =3D 0; }
    var padding =3D =
parseInt(this.cascadedstyle(this.nodes['PP-Thumbs'].childNodes[1], =
'padding', 'padding-left'));
    if (isNaN(padding)) { padding =3D 0; }
    var border =3D =
parseInt(this.cascadedstyle(this.nodes['PP-Thumbs'].childNodes[1], =
'borderWidth', 'borderLeftWidth'));
    if (isNaN(border)) { border =3D 0; }
    this.thumbnailSize =3D thumbwidth + margin * 2 + padding * 2 + =
border * 2;
    this.thumbholderSize =3D =
parseInt(this.cascadedstyle(this.nodes['PP-ThumbHolder'], 'width', =
'width')); //display container for thumbnails
    this.nodes['PP-Thumbs'].style.width =3D this.thumbnailSize * =
this.data.length + 2 + "px"; // IE needs extra pixels or it wraps
    this.thumbsSize =3D this.thumbnailSize * this.data.length; =
//container that holds all thumbnails
    this.thumbspots =3D Math.floor(this.thumbholderSize / =
this.thumbnailSize); //number of thumbnails we can show in given space
  }
     =20
  //do initial setup of player using first item
  this.switchto(0);
  if (this.state && this.data.length > 1) { //start timer for next image =
switch if the state is 1 and there are more than 1 images
    this.addClass(this.playerobj.nodes['PP-Play'], "PP-Pause");
    this.removeClass(this.playerobj.nodes['PP-Play'], "PP-Play");
    this.timer =3D setTimeout(createMethodReference(this,'run'), =
this.delay);
  }
}

//scan the html for anything that has a classname starting with PP- =
return true if anything was found
PhotoPlayerObj.prototype.scanfornodes=3Dfunction(node)
{
  var found =3D false;
  var cname;
 =20
  for (var i=3D0;i<node.childNodes.length;i++) {
    this.scanfornodes(node.childNodes[i]);
    if (node.childNodes[i].className && =
node.childNodes[i].className.indexOf("PP-") =3D=3D 0) {
   =20
       //check if this node should be hidden when there is only one =
picture
      if (node.childNodes[i].className.indexOf("hideifsingle") !=3D -1 =
&& this.data.length < 2) {
        node.childNodes[i].style.display =3D "none";
      } else {
        cname =3D node.childNodes[i].className.split(" ");
        this.nodes[cname[0]] =3D node.childNodes[i];
        this.nodes[cname[0]].playerobj =3D this; //make sure they have a =
reference back to the playerobj
        found =3D true;
      }
    }
  }
  return found;
}

//switch to item at X (position in index)
PhotoPlayerObj.prototype.switchto=3Dfunction(position)
{
  if (position < 0) { position =3D 0; }
  if (position >=3D this.data.length) { position =3D this.data.length =
-1; }

  for (node in this.nodes) {
    var key =3D node.substring(3); //skip the PP- to get key
    if (this.data[position][key]) { //check if the key exists in the =
data provided
      this.setDivData(this.nodes[node], this.data[position][key]);
    }
  }
  if (this.thumbs[position]) {
    this.thumbs[position].className=3D'imgthumbon';
  }
  this.index =3D position;
 =20
  //set slidebar position =20
  if (this.nodes['PP-ThumbHolder'] !=3D null && this.nodes['PP-Thumbs'] =
!=3D null) {
      var pos =3D Math.floor(this.index / this.thumbspots);

    var offset =3D (this.thumbholderSize + 1) * pos;
    if (offset + this.thumbholderSize > this.thumbsSize) {
      offset =3D (this.thumbholderSize) * (pos - 1) + (this.thumbsSize % =
this.thumbholderSize);
    }
    this.nodes['PP-Thumbs'].style.left =3D -offset + "px";
  }
}


//pull style sheet properties
PhotoPlayerObj.prototype.cascadedstyle =3D function(el, cssproperty, =
csspropertyNS){
  if (el.currentStyle) {
    return el.currentStyle[cssproperty];
  } else if (window.getComputedStyle){
    var elstyle=3Dwindow.getComputedStyle(el, "");
    if (elstyle[csspropertyNS]) {
      return elstyle[csspropertyNS];
    }
    return elstyle.getPropertyValue(csspropertyNS);
  }
}

//set div with given data
PhotoPlayerObj.prototype.setDivData=3Dfunction(node, data)
{
   if (data.display !=3D null) { //if display was specified set =
innerHTML to that
     node.innerHTML =3D this.xmldecode(data.display);
   }
     if (data.onclick !=3D null) { //if onclick was specified set it
       if (typeof(data.onclick) =3D=3D "function") {
         node.onclick =3D data.onclick;
       } else {
         node.onclick =3D function() { eval(data.onclick) };
       } =20
     }
     if (data.onload !=3D null) { //if onload was specified run it
       if (typeof(data.onload) =3D=3D "function") {
         data.onload();
       } else {
         eval(data.onload);
       } =20
     }
     if (data.onmouseover !=3D null) { //if onmouseover was specified =
set it
       if (typeof(data.onmouseover) =3D=3D "function") {
         node.onmouseover =3D data.onmouseover;
       } else {
         node.onmouseover =3D function() { eval(data.onmouseover) };
       }    =20
     } else {
       node.onmouseover =3D this.mouseOver;
     }
     if (data.onmouseout !=3D null) { //if onmouseout was specified set =
it
       if (typeof(data.onmouseout) =3D=3D "function") {
         node.onmouseout =3D data.onmouseout;
       } else {
         node.onmouseout =3D function() { eval(data.onmouseout) };
       }
     } else {
       node.onmouseout =3D this.mouseOut;
     }
   if (data.background !=3D null) { //if background was specified set it
     node.style.backgroundImage =3D "url("+ data.background + ")";
   }
}

PhotoPlayerObj.prototype.mouseOver=3Dfunction()
{
  this.playerobj.addClass(this, "PP-mouseover");
}

PhotoPlayerObj.prototype.mouseOut=3Dfunction()
{
  this.playerobj.removeClass(this, "PP-mouseover");
}

PhotoPlayerObj.prototype.thumbClick=3Dfunction()
{
  if (this.playerobj.index =3D=3D this.index) {
    return; //already on this image
  }
  if (this.playerobj.index !=3D -1) {
    this.playerobj.thumbs[this.playerobj.index].className=3D'imgthumb';
  }
  this.playerobj.direction =3D 1;
  this.playerobj.state =3D 0;
  this.playerobj.removeClass(this.playerobj.nodes['PP-Play'], =
"PP-Pause");
  this.playerobj.addClass(this.playerobj.nodes['PP-Play'], "PP-Play");
  this.playerobj.index =3D this.index - 1;
  clearTimeout(this.playerobj.timer);
  this.playerobj.startTransition();
}

PhotoPlayerObj.prototype.nextClick=3Dfunction()
{
  this.playerobj.direction =3D 1;
  this.playerobj.state =3D 0;
  clearTimeout(this.playerobj.timer);
  this.playerobj.startTransition();
}

PhotoPlayerObj.prototype.prevClick=3Dfunction()
{
  this.playerobj.direction =3D -1;
  this.playerobj.state =3D 0;
  clearTimeout(this.playerobj.timer);
  this.playerobj.startTransition();
}

PhotoPlayerObj.prototype.playClick=3Dfunction()
{
  if (this.playerobj.state) {
    clearTimeout(this.playerobj.timer);
    this.playerobj.state =3D 0;
    this.playerobj.removeClass(this, "PP-Pause");
    this.playerobj.addClass(this, "PP-Play");
  } else {
    this.playerobj.direction =3D 1;
    this.playerobj.state =3D 1;
    this.playerobj.removeClass(this, "PP-Play");
    this.playerobj.addClass(this, "PP-Pause");
    this.playerobj.timer =3D =
setTimeout(createMethodReference(this.playerobj,'run'), this.delay);
  }
}

//used for mouse over to stop timer so image doesnt change (if playing)
PhotoPlayerObj.prototype.pauseClick=3Dfunction()
{
   clearTimeout(this.playerobj.timer);
   this.playerobj.paused =3D true;
}

//used for mouse over to start timer so image doesnt change (if playing)
PhotoPlayerObj.prototype.resumeClick=3Dfunction()
{
   if (this.playerobj.state) {
     this.timer =3D setTimeout(createMethodReference(this,'run'), =
this.delay);
   }
   this.playerobj.paused =3D false;
}

PhotoPlayerObj.prototype.run=3Dfunction()
{
  this.startTransition();
}

PhotoPlayerObj.prototype.startTransition=3Dfunction()
{
  if (this.paused) { return; } // if paused then dont do anything
 =20
  //check if we are already in transition
  clearTimeout(this.transitiontimer);
  if (this.intransition) {
      this.transitiontimer =3D =
setTimeout(createMethodReference(this,'startTransition'), 100);
      return;
  }
  this.intransition =3D 1;
 =20
  if (this.index !=3D -1 && this.thumbs[this.index]) {
    this.thumbs[this.index].className=3D'imgthumb';
  }
  this.index =3D this.index + this.direction;
  if (this.index >=3D this.data.length) {
    this.index =3D 0;
  }
  if (this.index < 0) {
    this.index =3D this.data.length - 1;
  }
  //set the new one to on
  if (this.index !=3D -1 && this.thumbs[this.index]) {
    this.thumbs[this.index].className=3D'imgthumbon';
  }
 =20
  if (!this.nodes['PP-Display']) { //if its not defined then dont bother =
with the fader
      this.endTransition();
      return;
  }
 =20
  // create the transition div and add it to the page
  var transitiondiv =3D document.createElement('div');
  transitiondiv.className =3D "PP-Display";
  transitiondiv.playerobj =3D this;
  transitiondiv.zIndex =3D 20;  //display div is set to zindex of 10 so =
this is below
  this.setDivData(transitiondiv, this.data[this.index]['Display']); =
//fill in the data
  this.setOpacity(transitiondiv, 0); //make sure it starts off see =
through
  this.nodes['PP-Transition'] =3D transitiondiv; //insert it into the =
node list
  this.nodes['PP-Display'].parentNode.insertBefore(transitiondiv, =
this.nodes['PP-Display']); //insert it into the page
  this.fade(0);
}

PhotoPlayerObj.prototype.endTransition=3Dfunction()
{
  this.intransition =3D 0; //transition is finished, let start =
transition run again
  if (this.state) { //start timer for next image switch
    this.timer =3D setTimeout(createMethodReference(this,'run'), =
this.delay);
  }
  if (this.nodes['PP-Display']) {
    =
this.nodes['PP-Display'].parentNode.removeChild(this.nodes['PP-Display'])=
; //remove the current display div from the page
    delete this.nodes['PP-Display']; //remove it from the list
    this.switchto(this.index); //set all other fields in the display
    this.nodes['PP-Display'] =3D this.nodes['PP-Transition']; //point =
display  to transition div
    this.nodes['PP-Display'].zIndex =3D 10; //set zindex on display
    delete this.nodes['PP-Transition']; //clear transition div
  }
}

PhotoPlayerObj.prototype.show =3D function(node)
{
   this.nodes[node].style.display =3D 'block';
}

PhotoPlayerObj.prototype.hide =3D function(node)
{
   this.nodes[node].style.display =3D 'none';
}

PhotoPlayerObj.prototype.fade =3D function(state)
{
  this.fadepercent =3D (state) ? 0:100;
  this.fadestate =3D state;
//  this.fader();
  this.interval =3D setInterval(this.fadeeffect, 100);
}

PhotoPlayerObj.prototype.fader =3D function()
{
  if (this.fadepercent <=3D 0) {
    clearInterval(this.interval); //stop the next tick from happening
    this.endTransition();
    return;
  } else {
    this.fadepercent -=3D 10;
  }

  this.setOpacity(this.nodes['PP-Transition'], 100-this.fadepercent);
  this.setOpacity(this.nodes['PP-Display'], this.fadepercent);
}

PhotoPlayerObj.prototype.setOpacity =3D function(node, percent)
{
  if (typeof(node) =3D=3D "string") {
     node =3D this.nodes[node]; // if they passed a name then find the =
node
  }
  node.style.opacity =3D percent/100;
  node.style.MozOpacity =3D percent/100;
  node.style.KhtmlOpacity =3D percent/100;
  node.style.filter =3D "alpha(opacity=3D" + percent + ")";
}

PhotoPlayerObj.prototype.xmldecode =3D function(xmldata)
{
  xmldata =3D xmldata.replace(/&quot;/g, "\"");
  xmldata =3D xmldata.replace(/&lt;/g, "<");
  xmldata =3D xmldata.replace(/&gt;/g, ">");
  xmldata =3D xmldata.replace(/&amp;/g, "&");

  return xmldata;
}

PhotoPlayerObj.prototype.removeClass =3D function(el, className) {
        if (typeof(el) =3D=3D "string") {
          el =3D this.nodes[el]; // if they passed a name then find the =
node
        }
        if (!(el && el.className)) {
                return;
        }
        var cls =3D el.className.split(" ");
        var ar =3D new Array();
        var found =3D false;
        for (var i =3D cls.length; i > 0;) {
                if (cls[--i] !=3D className) {
                        ar[ar.length] =3D cls[i];
                } else {
                  found =3D true;
                }
        }
        el.className =3D ar.join(" ");
        return found;
}

PhotoPlayerObj.prototype.addClass =3D function(el, className) {
  if (typeof(el) =3D=3D "string") {
    el =3D this.nodes[el]; // if they passed a name then find the node
  }
  if (!(el && el.className)) {
    return;
  }
  this.removeClass(el, className);
  el.className +=3D " " + className;
}

PhotoPlayerObj.prototype.mouseLeaves =3D function (element,evt) {
  if(!evt) {evt =3D window.event; }
  if (typeof evt.toElement !=3D 'undefined' && typeof element.contains =
!=3D 'undefined') {
    return !element.contains(evt.toElement);
  }
  else if (typeof evt.relatedTarget !=3D 'undefined' && =
evt.relatedTarget) {
    return !this.contains(element, evt.relatedTarget);
  }
}   =20
=20
PhotoPlayerObj.prototype.contains =3D function (container, containee) {
  while (containee) {
    if (container =3D=3D containee) {
      return true;
    }
    containee =3D containee.parentNode;
  }
  return false;
}


------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/js/Common/prototype.js

/*  Prototype JavaScript framework, version 1.6.0.2=0A=
 *  (c) 2005-2008 Sam Stephenson=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *  For details, see the Prototype web site: http://www.prototypejs.org/=0A=
 *=0A=
 =
*------------------------------------------------------------------------=
--*/=0A=
=0A=
var Prototype =3D {=0A=
  Version: '1.6.0.2',=0A=
=0A=
  Browser: {=0A=
    IE:     !!(window.attachEvent && !window.opera),=0A=
    Opera:  !!window.opera,=0A=
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A=
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && =
navigator.userAgent.indexOf('KHTML') =3D=3D -1,=0A=
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A=
  },=0A=
=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate,=0A=
    ElementExtensions: !!window.HTMLElement,=0A=
    SpecificElementExtensions:=0A=
      document.createElement('div').__proto__ &&=0A=
      document.createElement('div').__proto__ !=3D=3D=0A=
        document.createElement('form').__proto__=0A=
  },=0A=
=0A=
  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',=0A=
  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A=
=0A=
  emptyFunction: function() { },=0A=
  K: function(x) { return x }=0A=
};=0A=
=0A=
if (Prototype.Browser.MobileSafari)=0A=
  Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A=
=0A=
=0A=
/* Based on Alex Arnell's inheritance implementation. */=0A=
var Class =3D {=0A=
  create: function() {=0A=
    var parent =3D null, properties =3D $A(arguments);=0A=
    if (Object.isFunction(properties[0]))=0A=
      parent =3D properties.shift();=0A=
=0A=
    function klass() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
=0A=
    Object.extend(klass, Class.Methods);=0A=
    klass.superclass =3D parent;=0A=
    klass.subclasses =3D [];=0A=
=0A=
    if (parent) {=0A=
      var subclass =3D function() { };=0A=
      subclass.prototype =3D parent.prototype;=0A=
      klass.prototype =3D new subclass;=0A=
      parent.subclasses.push(klass);=0A=
    }=0A=
=0A=
    for (var i =3D 0; i < properties.length; i++)=0A=
      klass.addMethods(properties[i]);=0A=
=0A=
    if (!klass.prototype.initialize)=0A=
      klass.prototype.initialize =3D Prototype.emptyFunction;=0A=
=0A=
    klass.prototype.constructor =3D klass;=0A=
=0A=
    return klass;=0A=
  }=0A=
};=0A=
=0A=
Class.Methods =3D {=0A=
  addMethods: function(source) {=0A=
    var ancestor   =3D this.superclass && this.superclass.prototype;=0A=
    var properties =3D Object.keys(source);=0A=
=0A=
    if (!Object.keys({ toString: true }).length)=0A=
      properties.push("toString", "valueOf");=0A=
=0A=
    for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A=
      var property =3D properties[i], value =3D source[property];=0A=
      if (ancestor && Object.isFunction(value) &&=0A=
          value.argumentNames().first() =3D=3D "$super") {=0A=
        var method =3D value, value =3D Object.extend((function(m) {=0A=
          return function() { return ancestor[m].apply(this, arguments) =
};=0A=
        })(property).wrap(method), {=0A=
          valueOf:  function() { return method },=0A=
          toString: function() { return method.toString() }=0A=
        });=0A=
      }=0A=
      this.prototype[property] =3D value;=0A=
    }=0A=
=0A=
    return this;=0A=
  }=0A=
};=0A=
=0A=
var Abstract =3D { };=0A=
=0A=
Object.extend =3D function(destination, source) {=0A=
  for (var property in source)=0A=
    destination[property] =3D source[property];=0A=
  return destination;=0A=
};=0A=
=0A=
Object.extend(Object, {=0A=
  inspect: function(object) {=0A=
    try {=0A=
      if (Object.isUndefined(object)) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : String(object);=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  },=0A=
=0A=
  toJSON: function(object) {=0A=
    var type =3D typeof object;=0A=
    switch (type) {=0A=
      case 'undefined':=0A=
      case 'function':=0A=
      case 'unknown': return;=0A=
      case 'boolean': return object.toString();=0A=
    }=0A=
=0A=
    if (object =3D=3D=3D null) return 'null';=0A=
    if (object.toJSON) return object.toJSON();=0A=
    if (Object.isElement(object)) return;=0A=
=0A=
    var results =3D [];=0A=
    for (var property in object) {=0A=
      var value =3D Object.toJSON(object[property]);=0A=
      if (!Object.isUndefined(value))=0A=
        results.push(property.toJSON() + ': ' + value);=0A=
    }=0A=
=0A=
    return '{' + results.join(', ') + '}';=0A=
  },=0A=
=0A=
  toQueryString: function(object) {=0A=
    return $H(object).toQueryString();=0A=
  },=0A=
=0A=
  toHTML: function(object) {=0A=
    return object && object.toHTML ? object.toHTML() : =
String.interpret(object);=0A=
  },=0A=
=0A=
  keys: function(object) {=0A=
    var keys =3D [];=0A=
    for (var property in object)=0A=
      keys.push(property);=0A=
    return keys;=0A=
  },=0A=
=0A=
  values: function(object) {=0A=
    var values =3D [];=0A=
    for (var property in object)=0A=
      values.push(object[property]);=0A=
    return values;=0A=
  },=0A=
=0A=
  clone: function(object) {=0A=
    return Object.extend({ }, object);=0A=
  },=0A=
=0A=
  isElement: function(object) {=0A=
    return object && object.nodeType =3D=3D 1;=0A=
  },=0A=
=0A=
  isArray: function(object) {=0A=
    return object !=3D null && typeof object =3D=3D "object" &&=0A=
      'splice' in object && 'join' in object;=0A=
  },=0A=
=0A=
  isHash: function(object) {=0A=
    return object instanceof Hash;=0A=
  },=0A=
=0A=
  isFunction: function(object) {=0A=
    return typeof object =3D=3D "function";=0A=
  },=0A=
=0A=
  isString: function(object) {=0A=
    return typeof object =3D=3D "string";=0A=
  },=0A=
=0A=
  isNumber: function(object) {=0A=
    return typeof object =3D=3D "number";=0A=
  },=0A=
=0A=
  isUndefined: function(object) {=0A=
    return typeof object =3D=3D "undefined";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Function.prototype, {=0A=
  argumentNames: function() {=0A=
    var names =3D =
this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").inv=
oke("strip");=0A=
    return names.length =3D=3D 1 && !names[0] ? [] : names;=0A=
  },=0A=
=0A=
  bind: function() {=0A=
    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return =
this;=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function() {=0A=
      return __method.apply(object, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  bindAsEventListener: function() {=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function(event) {=0A=
      return __method.apply(object, [event || =
window.event].concat(args));=0A=
    }=0A=
  },=0A=
=0A=
  curry: function() {=0A=
    if (!arguments.length) return this;=0A=
    var __method =3D this, args =3D $A(arguments);=0A=
    return function() {=0A=
      return __method.apply(this, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  delay: function() {=0A=
    var __method =3D this, args =3D $A(arguments), timeout =3D =
args.shift() * 1000;=0A=
    return window.setTimeout(function() {=0A=
      return __method.apply(__method, args);=0A=
    }, timeout);=0A=
  },=0A=
=0A=
  wrap: function(wrapper) {=0A=
    var __method =3D this;=0A=
    return function() {=0A=
      return wrapper.apply(this, =
[__method.bind(this)].concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  methodize: function() {=0A=
    if (this._methodized) return this._methodized;=0A=
    var __method =3D this;=0A=
    return this._methodized =3D function() {=0A=
      return __method.apply(null, [this].concat($A(arguments)));=0A=
    };=0A=
  }=0A=
});=0A=
=0A=
Function.prototype.defer =3D Function.prototype.delay.curry(0.01);=0A=
=0A=
Date.prototype.toJSON =3D function() {=0A=
  return '"' + this.getUTCFullYear() + '-' +=0A=
    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A=
    this.getUTCDate().toPaddedString(2) + 'T' +=0A=
    this.getUTCHours().toPaddedString(2) + ':' +=0A=
    this.getUTCMinutes().toPaddedString(2) + ':' +=0A=
    this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A=
};=0A=
=0A=
var Try =3D {=0A=
  these: function() {=0A=
    var returnValue;=0A=
=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var lambda =3D arguments[i];=0A=
      try {=0A=
        returnValue =3D lambda();=0A=
        break;=0A=
      } catch (e) { }=0A=
    }=0A=
=0A=
    return returnValue;=0A=
  }=0A=
};=0A=
=0A=
RegExp.prototype.match =3D RegExp.prototype.test;=0A=
=0A=
RegExp.escape =3D function(str) {=0A=
  return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var PeriodicalExecuter =3D Class.create({=0A=
  initialize: function(callback, frequency) {=0A=
    this.callback =3D callback;=0A=
    this.frequency =3D frequency;=0A=
    this.currentlyExecuting =3D false;=0A=
=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    this.timer =3D setInterval(this.onTimerEvent.bind(this), =
this.frequency * 1000);=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    this.callback(this);=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    if (!this.timer) return;=0A=
    clearInterval(this.timer);=0A=
    this.timer =3D null;=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    if (!this.currentlyExecuting) {=0A=
      try {=0A=
        this.currentlyExecuting =3D true;=0A=
        this.execute();=0A=
      } finally {=0A=
        this.currentlyExecuting =3D false;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
Object.extend(String, {=0A=
  interpret: function(value) {=0A=
    return value =3D=3D null ? '' : String(value);=0A=
  },=0A=
  specialChar: {=0A=
    '\b': '\\b',=0A=
    '\t': '\\t',=0A=
    '\n': '\\n',=0A=
    '\f': '\\f',=0A=
    '\r': '\\r',=0A=
    '\\': '\\\\'=0A=
  }=0A=
});=0A=
=0A=
Object.extend(String.prototype, {=0A=
  gsub: function(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D arguments.callee.prepareReplacement(replacement);=0A=
=0A=
    while (source.length > 0) {=0A=
      if (match =3D source.match(pattern)) {=0A=
        result +=3D source.slice(0, match.index);=0A=
        result +=3D String.interpret(replacement(match));=0A=
        source  =3D source.slice(match.index + match[0].length);=0A=
      } else {=0A=
        result +=3D source, source =3D '';=0A=
      }=0A=
    }=0A=
    return result;=0A=
  },=0A=
=0A=
  sub: function(pattern, replacement, count) {=0A=
    replacement =3D this.gsub.prepareReplacement(replacement);=0A=
    count =3D Object.isUndefined(count) ? 1 : count;=0A=
=0A=
    return this.gsub(pattern, function(match) {=0A=
      if (--count < 0) return match[0];=0A=
      return replacement(match);=0A=
    });=0A=
  },=0A=
=0A=
  scan: function(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return String(this);=0A=
  },=0A=
=0A=
  truncate: function(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : =
String(this);=0A=
  },=0A=
=0A=
  strip: function() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  },=0A=
=0A=
  stripTags: function() {=0A=
    return this.replace(/<\/?[^>]+>/gi, '');=0A=
  },=0A=
=0A=
  stripScripts: function() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  },=0A=
=0A=
  extractScripts: function() {=0A=
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A=
    var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A=
    return (this.match(matchAll) || []).map(function(scriptTag) {=0A=
      return (scriptTag.match(matchOne) || ['', ''])[1];=0A=
    });=0A=
  },=0A=
=0A=
  evalScripts: function() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  },=0A=
=0A=
  escapeHTML: function() {=0A=
    var self =3D arguments.callee;=0A=
    self.text.data =3D this;=0A=
    return self.div.innerHTML;=0A=
  },=0A=
=0A=
  unescapeHTML: function() {=0A=
    var div =3D new Element('div');=0A=
    div.innerHTML =3D this.stripTags();=0A=
    return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A=
      $A(div.childNodes).inject('', function(memo, node) { return =
memo+node.nodeValue }) :=0A=
      div.childNodes[0].nodeValue) : '';=0A=
  },=0A=
=0A=
  toQueryParams: function(separator) {=0A=
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A=
    if (!match) return { };=0A=
=0A=
    return match[1].split(separator || '&').inject({ }, function(hash, =
pair) {=0A=
      if ((pair =3D pair.split('=3D'))[0]) {=0A=
        var key =3D decodeURIComponent(pair.shift());=0A=
        var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A=
        if (value !=3D undefined) value =3D decodeURIComponent(value);=0A=
=0A=
        if (key in hash) {=0A=
          if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A=
          hash[key].push(value);=0A=
        }=0A=
        else hash[key] =3D value;=0A=
      }=0A=
      return hash;=0A=
    });=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.split('');=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  },=0A=
=0A=
  times: function(count) {=0A=
    return count < 1 ? '' : new Array(count + 1).join(this);=0A=
  },=0A=
=0A=
  camelize: function() {=0A=
    var parts =3D this.split('-'), len =3D parts.length;=0A=
    if (len =3D=3D 1) return parts[0];=0A=
=0A=
    var camelized =3D this.charAt(0) =3D=3D '-'=0A=
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A=
      : parts[0];=0A=
=0A=
    for (var i =3D 1; i < len; i++)=0A=
      camelized +=3D parts[i].charAt(0).toUpperCase() + =
parts[i].substring(1);=0A=
=0A=
    return camelized;=0A=
  },=0A=
=0A=
  capitalize: function() {=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  },=0A=
=0A=
  underscore: function() {=0A=
    return this.gsub(/::/, =
'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{=
1}_#{2}').gsub(/-/,'_').toLowerCase();=0A=
  },=0A=
=0A=
  dasherize: function() {=0A=
    return this.gsub(/_/,'-');=0A=
  },=0A=
=0A=
  inspect: function(useDoubleQuotes) {=0A=
    var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A=
      var character =3D String.specialChar[match[0]];=0A=
      return character ? character : '\\u00' + =
match[0].charCodeAt().toPaddedString(2, 16);=0A=
    });=0A=
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';=0A=
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return this.inspect(true);=0A=
  },=0A=
=0A=
  unfilterJSON: function(filter) {=0A=
    return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A=
  },=0A=
=0A=
  isJSON: function() {=0A=
    var str =3D this;=0A=
    if (str.blank()) return false;=0A=
    str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A=
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A=
  },=0A=
=0A=
  evalJSON: function(sanitize) {=0A=
    var json =3D this.unfilterJSON();=0A=
    try {=0A=
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A=
    } catch (e) { }=0A=
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A=
  },=0A=
=0A=
  include: function(pattern) {=0A=
    return this.indexOf(pattern) > -1;=0A=
  },=0A=
=0A=
  startsWith: function(pattern) {=0A=
    return this.indexOf(pattern) =3D=3D=3D 0;=0A=
  },=0A=
=0A=
  endsWith: function(pattern) {=0A=
    var d =3D this.length - pattern.length;=0A=
    return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A=
  },=0A=
=0A=
  empty: function() {=0A=
    return this =3D=3D '';=0A=
  },=0A=
=0A=
  blank: function() {=0A=
    return /^\s*$/.test(this);=0A=
  },=0A=
=0A=
  interpolate: function(object, pattern) {=0A=
    return new Template(this, pattern).evaluate(object);=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.WebKit || Prototype.Browser.IE) =
Object.extend(String.prototype, {=0A=
  escapeHTML: function() {=0A=
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');=0A=
  },=0A=
  unescapeHTML: function() {=0A=
    return =
this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');=0A=
  }=0A=
});=0A=
=0A=
String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A=
  if (Object.isFunction(replacement)) return replacement;=0A=
  var template =3D new Template(replacement);=0A=
  return function(match) { return template.evaluate(match) };=0A=
};=0A=
=0A=
String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A=
=0A=
Object.extend(String.prototype.escapeHTML, {=0A=
  div:  document.createElement('div'),=0A=
  text: document.createTextNode('')=0A=
});=0A=
=0A=
with (String.prototype.escapeHTML) div.appendChild(text);=0A=
=0A=
var Template =3D Class.create({=0A=
  initialize: function(template, pattern) {=0A=
    this.template =3D template.toString();=0A=
    this.pattern =3D pattern || Template.Pattern;=0A=
  },=0A=
=0A=
  evaluate: function(object) {=0A=
    if (Object.isFunction(object.toTemplateReplacements))=0A=
      object =3D object.toTemplateReplacements();=0A=
=0A=
    return this.template.gsub(this.pattern, function(match) {=0A=
      if (object =3D=3D null) return '';=0A=
=0A=
      var before =3D match[1] || '';=0A=
      if (before =3D=3D '\\') return match[2];=0A=
=0A=
      var ctx =3D object, expr =3D match[3];=0A=
      var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A=
      match =3D pattern.exec(expr);=0A=
      if (match =3D=3D null) return before;=0A=
=0A=
      while (match !=3D null) {=0A=
        var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', =
']') : match[1];=0A=
        ctx =3D ctx[comp];=0A=
        if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A=
        expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : =
match[0].length);=0A=
        match =3D pattern.exec(expr);=0A=
      }=0A=
=0A=
      return before + String.interpret(ctx);=0A=
    });=0A=
  }=0A=
});=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
=0A=
var $break =3D { };=0A=
=0A=
var Enumerable =3D {=0A=
  each: function(iterator, context) {=0A=
    var index =3D 0;=0A=
    iterator =3D iterator.bind(context);=0A=
    try {=0A=
      this._each(function(value) {=0A=
        iterator(value, index++);=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
    return this;=0A=
  },=0A=
=0A=
  eachSlice: function(number, iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var index =3D -number, slices =3D [], array =3D this.toArray();=0A=
    while ((index +=3D number) < array.length)=0A=
      slices.push(array.slice(index, index+number));=0A=
    return slices.collect(iterator, context);=0A=
  },=0A=
=0A=
  all: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!iterator(value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  any: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result =3D false;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!iterator(value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  collect: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(iterator(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  detect: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  findAll: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  grep: function(filter, iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var results =3D [];=0A=
=0A=
    if (Object.isString(filter))=0A=
      filter =3D new RegExp(filter);=0A=
=0A=
    this.each(function(value, index) {=0A=
      if (filter.match(value))=0A=
        results.push(iterator(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  include: function(object) {=0A=
    if (Object.isFunction(this.indexOf))=0A=
      if (this.indexOf(object) !=3D -1) return true;=0A=
=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  },=0A=
=0A=
  inGroupsOf: function(number, fillWith) {=0A=
    fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  },=0A=
=0A=
  inject: function(memo, iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator(memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  },=0A=
=0A=
  invoke: function(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.map(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  },=0A=
=0A=
  max: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator(value, index);=0A=
      if (result =3D=3D null || value >=3D result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  min: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator(value, index);=0A=
      if (result =3D=3D null || value < result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  partition: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      (iterator(value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  },=0A=
=0A=
  pluck: function(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  reject: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  sortBy: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    return this.map(function(value, index) {=0A=
      return {value: value, criteria: iterator(value, index)};=0A=
    }).sort(function(left, right) {=0A=
      var a =3D left.criteria, b =3D right.criteria;=0A=
      return a < b ? -1 : a > b ? 1 : 0;=0A=
    }).pluck('value');=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.map();=0A=
  },=0A=
=0A=
  zip: function() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (Object.isFunction(args.last()))=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      return iterator(collections.pluck(index));=0A=
    });=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.toArray().length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Enumerable, {=0A=
  map:     Enumerable.collect,=0A=
  find:    Enumerable.detect,=0A=
  select:  Enumerable.findAll,=0A=
  filter:  Enumerable.findAll,=0A=
  member:  Enumerable.include,=0A=
  entries: Enumerable.toArray,=0A=
  every:   Enumerable.all,=0A=
  some:    Enumerable.any=0A=
});=0A=
function $A(iterable) {=0A=
  if (!iterable) return [];=0A=
  if (iterable.toArray) return iterable.toArray();=0A=
  var length =3D iterable.length || 0, results =3D new Array(length);=0A=
  while (length--) results[length] =3D iterable[length];=0A=
  return results;=0A=
}=0A=
=0A=
if (Prototype.Browser.WebKit) {=0A=
  $A =3D function(iterable) {=0A=
    if (!iterable) return [];=0A=
    if (!(Object.isFunction(iterable) && iterable =3D=3D '[object =
NodeList]') &&=0A=
        iterable.toArray) return iterable.toArray();=0A=
    var length =3D iterable.length || 0, results =3D new Array(length);=0A=
    while (length--) results[length] =3D iterable[length];=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
Array.from =3D $A;=0A=
=0A=
Object.extend(Array.prototype, Enumerable);=0A=
=0A=
if (!Array.prototype._reverse) Array.prototype._reverse =3D =
Array.prototype.reverse;=0A=
=0A=
Object.extend(Array.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      iterator(this[i]);=0A=
  },=0A=
=0A=
  clear: function() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  },=0A=
=0A=
  first: function() {=0A=
    return this[0];=0A=
  },=0A=
=0A=
  last: function() {=0A=
    return this[this.length - 1];=0A=
  },=0A=
=0A=
  compact: function() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  },=0A=
=0A=
  flatten: function() {=0A=
    return this.inject([], function(array, value) {=0A=
      return array.concat(Object.isArray(value) ?=0A=
        value.flatten() : [value]);=0A=
    });=0A=
  },=0A=
=0A=
  without: function() {=0A=
    var values =3D $A(arguments);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  },=0A=
=0A=
  reverse: function(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  },=0A=
=0A=
  reduce: function() {=0A=
    return this.length > 1 ? this : this[0];=0A=
  },=0A=
=0A=
  uniq: function(sorted) {=0A=
    return this.inject([], function(array, value, index) {=0A=
      if (0 =3D=3D index || (sorted ? array.last() !=3D value : =
!array.include(value)))=0A=
        array.push(value);=0A=
      return array;=0A=
    });=0A=
  },=0A=
=0A=
  intersect: function(array) {=0A=
    return this.uniq().findAll(function(item) {=0A=
      return array.detect(function(value) { return item =3D=3D=3D value =
});=0A=
    });=0A=
  },=0A=
=0A=
  clone: function() {=0A=
    return [].concat(this);=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    var results =3D [];=0A=
    this.each(function(object) {=0A=
      var value =3D Object.toJSON(object);=0A=
      if (!Object.isUndefined(value)) results.push(value);=0A=
    });=0A=
    return '[' + results.join(', ') + ']';=0A=
  }=0A=
});=0A=
=0A=
// use native browser JS 1.6 implementation if available=0A=
if (Object.isFunction(Array.prototype.forEach))=0A=
  Array.prototype._each =3D Array.prototype.forEach;=0A=
=0A=
if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, =
i) {=0A=
  i || (i =3D 0);=0A=
  var length =3D this.length;=0A=
  if (i < 0) i =3D length + i;=0A=
  for (; i < length; i++)=0A=
    if (this[i] =3D=3D=3D item) return i;=0A=
  return -1;=0A=
};=0A=
=0A=
if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D =
function(item, i) {=0A=
  i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A=
  var n =3D this.slice(0, i).reverse().indexOf(item);=0A=
  return (n < 0) ? n : i - n - 1;=0A=
};=0A=
=0A=
Array.prototype.toArray =3D Array.prototype.clone;=0A=
=0A=
function $w(string) {=0A=
  if (!Object.isString(string)) return [];=0A=
  string =3D string.strip();=0A=
  return string ? string.split(/\s+/) : [];=0A=
}=0A=
=0A=
if (Prototype.Browser.Opera){=0A=
  Array.prototype.concat =3D function() {=0A=
    var array =3D [];=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++) =
array.push(this[i]);=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      if (Object.isArray(arguments[i])) {=0A=
        for (var j =3D 0, arrayLength =3D arguments[i].length; j < =
arrayLength; j++)=0A=
          array.push(arguments[i][j]);=0A=
      } else {=0A=
        array.push(arguments[i]);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  };=0A=
}=0A=
Object.extend(Number.prototype, {=0A=
  toColorPart: function() {=0A=
    return this.toPaddedString(2, 16);=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this + 1;=0A=
  },=0A=
=0A=
  times: function(iterator) {=0A=
    $R(0, this, true).each(iterator);=0A=
    return this;=0A=
  },=0A=
=0A=
  toPaddedString: function(length, radix) {=0A=
    var string =3D this.toString(radix || 10);=0A=
    return '0'.times(length - string.length) + string;=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return isFinite(this) ? this.toString() : 'null';=0A=
  }=0A=
});=0A=
=0A=
$w('abs round ceil floor').each(function(method){=0A=
  Number.prototype[method] =3D Math[method].methodize();=0A=
});=0A=
function $H(object) {=0A=
  return new Hash(object);=0A=
};=0A=
=0A=
var Hash =3D Class.create(Enumerable, (function() {=0A=
=0A=
  function toQueryPair(key, value) {=0A=
    if (Object.isUndefined(value)) return key;=0A=
    return key + '=3D' + encodeURIComponent(String.interpret(value));=0A=
  }=0A=
=0A=
  return {=0A=
    initialize: function(object) {=0A=
      this._object =3D Object.isHash(object) ? object.toObject() : =
Object.clone(object);=0A=
    },=0A=
=0A=
    _each: function(iterator) {=0A=
      for (var key in this._object) {=0A=
        var value =3D this._object[key], pair =3D [key, value];=0A=
        pair.key =3D key;=0A=
        pair.value =3D value;=0A=
        iterator(pair);=0A=
      }=0A=
    },=0A=
=0A=
    set: function(key, value) {=0A=
      return this._object[key] =3D value;=0A=
    },=0A=
=0A=
    get: function(key) {=0A=
      return this._object[key];=0A=
    },=0A=
=0A=
    unset: function(key) {=0A=
      var value =3D this._object[key];=0A=
      delete this._object[key];=0A=
      return value;=0A=
    },=0A=
=0A=
    toObject: function() {=0A=
      return Object.clone(this._object);=0A=
    },=0A=
=0A=
    keys: function() {=0A=
      return this.pluck('key');=0A=
    },=0A=
=0A=
    values: function() {=0A=
      return this.pluck('value');=0A=
    },=0A=
=0A=
    index: function(value) {=0A=
      var match =3D this.detect(function(pair) {=0A=
        return pair.value =3D=3D=3D value;=0A=
      });=0A=
      return match && match.key;=0A=
    },=0A=
=0A=
    merge: function(object) {=0A=
      return this.clone().update(object);=0A=
    },=0A=
=0A=
    update: function(object) {=0A=
      return new Hash(object).inject(this, function(result, pair) {=0A=
        result.set(pair.key, pair.value);=0A=
        return result;=0A=
      });=0A=
    },=0A=
=0A=
    toQueryString: function() {=0A=
      return this.map(function(pair) {=0A=
        var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A=
=0A=
        if (values && typeof values =3D=3D 'object') {=0A=
          if (Object.isArray(values))=0A=
            return values.map(toQueryPair.curry(key)).join('&');=0A=
        }=0A=
        return toQueryPair(key, values);=0A=
      }).join('&');=0A=
    },=0A=
=0A=
    inspect: function() {=0A=
      return '#<Hash:{' + this.map(function(pair) {=0A=
        return pair.map(Object.inspect).join(': ');=0A=
      }).join(', ') + '}>';=0A=
    },=0A=
=0A=
    toJSON: function() {=0A=
      return Object.toJSON(this.toObject());=0A=
    },=0A=
=0A=
    clone: function() {=0A=
      return new Hash(this);=0A=
    }=0A=
  }=0A=
})());=0A=
=0A=
Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;=0A=
Hash.from =3D $H;=0A=
var ObjectRange =3D Class.create(Enumerable, {=0A=
  initialize: function(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  },=0A=
=0A=
  include: function(value) {=0A=
    if (value < this.start)=0A=
      return false;=0A=
    if (this.exclusive)=0A=
      return value < this.end;=0A=
    return value <=3D this.end;=0A=
  }=0A=
});=0A=
=0A=
var $R =3D function(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
};=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new XMLHttpRequest()},=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
};=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responder) {=0A=
    if (!this.include(responder))=0A=
      this.responders.push(responder);=0A=
  },=0A=
=0A=
  unregister: function(responder) {=0A=
    this.responders =3D this.responders.without(responder);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (Object.isFunction(responder[callback])) {=0A=
        try {=0A=
          responder[callback].apply(responder, [request, transport, =
json]);=0A=
        } catch (e) { }=0A=
      }=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Ajax.Responders, Enumerable);=0A=
=0A=
Ajax.Responders.register({=0A=
  onCreate:   function() { Ajax.activeRequestCount++ },=0A=
  onComplete: function() { Ajax.activeRequestCount-- }=0A=
});=0A=
=0A=
Ajax.Base =3D Class.create({=0A=
  initialize: function(options) {=0A=
    this.options =3D {=0A=
      method:       'post',=0A=
      asynchronous: true,=0A=
      contentType:  'application/x-www-form-urlencoded',=0A=
      encoding:     'UTF-8',=0A=
      parameters:   '',=0A=
      evalJSON:     true,=0A=
      evalJS:       true=0A=
    };=0A=
    Object.extend(this.options, options || { });=0A=
=0A=
    this.options.method =3D this.options.method.toLowerCase();=0A=
=0A=
    if (Object.isString(this.options.parameters))=0A=
      this.options.parameters =3D =
this.options.parameters.toQueryParams();=0A=
    else if (Object.isHash(this.options.parameters))=0A=
      this.options.parameters =3D this.options.parameters.toObject();=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request =3D Class.create(Ajax.Base, {=0A=
  _complete: false,=0A=
=0A=
  initialize: function($super, url, options) {=0A=
    $super(options);=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    this.url =3D url;=0A=
    this.method =3D this.options.method;=0A=
    var params =3D Object.clone(this.options.parameters);=0A=
=0A=
    if (!['get', 'post'].include(this.method)) {=0A=
      // simulate other verbs over post=0A=
      params['_method'] =3D this.method;=0A=
      this.method =3D 'post';=0A=
    }=0A=
=0A=
    this.parameters =3D params;=0A=
=0A=
    if (params =3D Object.toQueryString(params)) {=0A=
      // when GET, append parameters to URL=0A=
      if (this.method =3D=3D 'get')=0A=
        this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A=
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A=
        params +=3D '&_=3D';=0A=
    }=0A=
=0A=
    try {=0A=
      var response =3D new Ajax.Response(this);=0A=
      if (this.options.onCreate) this.options.onCreate(response);=0A=
      Ajax.Responders.dispatch('onCreate', this, response);=0A=
=0A=
      this.transport.open(this.method.toUpperCase(), this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous) =
this.respondToReadyState.bind(this).defer(1);=0A=
=0A=
      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
      this.setRequestHeaders();=0A=
=0A=
      this.body =3D this.method =3D=3D 'post' ? (this.options.postBody =
|| params) : null;=0A=
      this.transport.send(this.body);=0A=
=0A=
      /* Force Firefox to handle ready state 4 for synchronous requests =
*/=0A=
      if (!this.options.asynchronous && this.transport.overrideMimeType)=0A=
        this.onStateChange();=0A=
=0A=
    }=0A=
    catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var headers =3D {=0A=
      'X-Requested-With': 'XMLHttpRequest',=0A=
      'X-Prototype-Version': Prototype.Version,=0A=
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'=0A=
    };=0A=
=0A=
    if (this.method =3D=3D 'post') {=0A=
      headers['Content-type'] =3D this.options.contentType +=0A=
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');=0A=
=0A=
      /* Force "Connection: close" for older Mozilla browsers to work=0A=
       * around a bug where XMLHttpRequest sends an incorrect=0A=
       * Content-length header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType &&=0A=
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)=0A=
            headers['Connection'] =3D 'close';=0A=
    }=0A=
=0A=
    // user-defined headers=0A=
    if (typeof this.options.requestHeaders =3D=3D 'object') {=0A=
      var extras =3D this.options.requestHeaders;=0A=
=0A=
      if (Object.isFunction(extras.push))=0A=
        for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A=
          headers[extras[i]] =3D extras[i+1];=0A=
      else=0A=
        $H(extras).each(function(pair) { headers[pair.key] =3D =
pair.value });=0A=
    }=0A=
=0A=
    for (var name in headers)=0A=
      this.transport.setRequestHeader(name, headers[name]);=0A=
  },=0A=
=0A=
  success: function() {=0A=
    var status =3D this.getStatus();=0A=
    return !status || (status >=3D 200 && status < 300);=0A=
  },=0A=
=0A=
  getStatus: function() {=0A=
    try {=0A=
      return this.transport.status || 0;=0A=
    } catch (e) { return 0 }=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var state =3D Ajax.Request.Events[readyState], response =3D new =
Ajax.Response(this);=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      try {=0A=
        this._complete =3D true;=0A=
        (this.options['on' + response.status]=0A=
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A=
         || Prototype.emptyFunction)(response, response.headerJSON);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      var contentType =3D response.getHeader('Content-type');=0A=
      if (this.options.evalJS =3D=3D 'force'=0A=
          || (this.options.evalJS && this.isSameOrigin() && contentType=0A=
          && =
contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s=
*$/i)))=0A=
        this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + state] || Prototype.emptyFunction)(response, =
response.headerJSON);=0A=
      Ajax.Responders.dispatch('on' + state, this, response, =
response.headerJSON);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      // avoid memory leak in MSIE: clean up=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  isSameOrigin: function() {=0A=
    var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A=
    return !m || (m[0] =3D=3D =
'#{protocol}//#{domain}#{port}'.interpolate({=0A=
      protocol: location.protocol,=0A=
      domain: document.domain,=0A=
      port: location.port ? ':' + location.port : ''=0A=
    }));=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name) || null;=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval((this.transport.responseText || '').unfilterJSON());=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  dispatchException: function(exception) {=0A=
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);=0A=
    Ajax.Responders.dispatch('onException', this, exception);=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
Ajax.Response =3D Class.create({=0A=
  initialize: function(request){=0A=
    this.request =3D request;=0A=
    var transport  =3D this.transport  =3D request.transport,=0A=
        readyState =3D this.readyState =3D transport.readyState;=0A=
=0A=
    if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) =
{=0A=
      this.status       =3D this.getStatus();=0A=
      this.statusText   =3D this.getStatusText();=0A=
      this.responseText =3D String.interpret(transport.responseText);=0A=
      this.headerJSON   =3D this._getHeaderJSON();=0A=
    }=0A=
=0A=
    if(readyState =3D=3D 4) {=0A=
      var xml =3D transport.responseXML;=0A=
      this.responseXML  =3D Object.isUndefined(xml) ? null : xml;=0A=
      this.responseJSON =3D this._getResponseJSON();=0A=
    }=0A=
  },=0A=
=0A=
  status:      0,=0A=
  statusText: '',=0A=
=0A=
  getStatus: Ajax.Request.prototype.getStatus,=0A=
=0A=
  getStatusText: function() {=0A=
    try {=0A=
      return this.transport.statusText || '';=0A=
    } catch (e) { return '' }=0A=
  },=0A=
=0A=
  getHeader: Ajax.Request.prototype.getHeader,=0A=
=0A=
  getAllHeaders: function() {=0A=
    try {=0A=
      return this.getAllResponseHeaders();=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  getResponseHeader: function(name) {=0A=
    return this.transport.getResponseHeader(name);=0A=
  },=0A=
=0A=
  getAllResponseHeaders: function() {=0A=
    return this.transport.getAllResponseHeaders();=0A=
  },=0A=
=0A=
  _getHeaderJSON: function() {=0A=
    var json =3D this.getHeader('X-JSON');=0A=
    if (!json) return null;=0A=
    json =3D decodeURIComponent(escape(json));=0A=
    try {=0A=
      return json.evalJSON(this.request.options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  _getResponseJSON: function() {=0A=
    var options =3D this.request.options;=0A=
    if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A=
      !(this.getHeader('Content-type') || =
'').include('application/json')) ||=0A=
        this.responseText.blank())=0A=
          return null;=0A=
    try {=0A=
      return this.responseText.evalJSON(options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.Updater =3D Class.create(Ajax.Request, {=0A=
  initialize: function($super, container, url, options) {=0A=
    this.container =3D {=0A=
      success: (container.success || container),=0A=
      failure: (container.failure || (container.success ? null : =
container))=0A=
    };=0A=
=0A=
    options =3D Object.clone(options);=0A=
    var onComplete =3D options.onComplete;=0A=
    options.onComplete =3D (function(response, json) {=0A=
      this.updateContent(response.responseText);=0A=
      if (Object.isFunction(onComplete)) onComplete(response, json);=0A=
    }).bind(this);=0A=
=0A=
    $super(url, options);=0A=
  },=0A=
=0A=
  updateContent: function(responseText) {=0A=
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'],=0A=
        options =3D this.options;=0A=
=0A=
    if (!options.evalScripts) responseText =3D =
responseText.stripScripts();=0A=
=0A=
    if (receiver =3D $(receiver)) {=0A=
      if (options.insertion) {=0A=
        if (Object.isString(options.insertion)) {=0A=
          var insertion =3D { }; insertion[options.insertion] =3D =
responseText;=0A=
          receiver.insert(insertion);=0A=
        }=0A=
        else options.insertion(receiver, responseText);=0A=
      }=0A=
      else receiver.update(responseText);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A=
  initialize: function($super, container, url, options) {=0A=
    $super(options);=0A=
    this.onComplete =3D this.options.onComplete;=0A=
=0A=
    this.frequency =3D (this.options.frequency || 2);=0A=
    this.decay =3D (this.options.decay || 1);=0A=
=0A=
    this.updater =3D { };=0A=
    this.container =3D container;=0A=
    this.url =3D url;=0A=
=0A=
    this.start();=0A=
  },=0A=
=0A=
  start: function() {=0A=
    this.options.onComplete =3D this.updateComplete.bind(this);=0A=
    this.onTimerEvent();=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    this.updater.options.onComplete =3D undefined;=0A=
    clearTimeout(this.timer);=0A=
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A=
  },=0A=
=0A=
  updateComplete: function(response) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (response.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D response.responseText;=0A=
    }=0A=
    this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * =
this.frequency);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
function $(element) {=0A=
  if (arguments.length > 1) {=0A=
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)=0A=
      elements.push($(arguments[i]));=0A=
    return elements;=0A=
  }=0A=
  if (Object.isString(element))=0A=
    element =3D document.getElementById(element);=0A=
  return Element.extend(element);=0A=
}=0A=
=0A=
if (Prototype.BrowserFeatures.XPath) {=0A=
  document._getElementsByXPath =3D function(expression, parentElement) {=0A=
    var results =3D [];=0A=
    var query =3D document.evaluate(expression, $(parentElement) || =
document,=0A=
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
    for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A=
      results.push(Element.extend(query.snapshotItem(i)));=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!window.Node) var Node =3D { };=0A=
=0A=
if (!Node.ELEMENT_NODE) {=0A=
  // DOM level 2 ECMAScript Language Binding=0A=
  Object.extend(Node, {=0A=
    ELEMENT_NODE: 1,=0A=
    ATTRIBUTE_NODE: 2,=0A=
    TEXT_NODE: 3,=0A=
    CDATA_SECTION_NODE: 4,=0A=
    ENTITY_REFERENCE_NODE: 5,=0A=
    ENTITY_NODE: 6,=0A=
    PROCESSING_INSTRUCTION_NODE: 7,=0A=
    COMMENT_NODE: 8,=0A=
    DOCUMENT_NODE: 9,=0A=
    DOCUMENT_TYPE_NODE: 10,=0A=
    DOCUMENT_FRAGMENT_NODE: 11,=0A=
    NOTATION_NODE: 12=0A=
  });=0A=
}=0A=
=0A=
(function() {=0A=
  var element =3D this.Element;=0A=
  this.Element =3D function(tagName, attributes) {=0A=
    attributes =3D attributes || { };=0A=
    tagName =3D tagName.toLowerCase();=0A=
    var cache =3D Element.cache;=0A=
    if (Prototype.Browser.IE && attributes.name) {=0A=
      tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A=
      delete attributes.name;=0A=
      return Element.writeAttribute(document.createElement(tagName), =
attributes);=0A=
    }=0A=
    if (!cache[tagName]) cache[tagName] =3D =
Element.extend(document.createElement(tagName));=0A=
    return Element.writeAttribute(cache[tagName].cloneNode(false), =
attributes);=0A=
  };=0A=
  Object.extend(this.Element, element || { });=0A=
}).call(window);=0A=
=0A=
Element.cache =3D { };=0A=
=0A=
Element.Methods =3D {=0A=
  visible: function(element) {=0A=
    return $(element).style.display !=3D 'none';=0A=
  },=0A=
=0A=
  toggle: function(element) {=0A=
    element =3D $(element);=0A=
    Element[Element.visible(element) ? 'hide' : 'show'](element);=0A=
    return element;=0A=
  },=0A=
=0A=
  hide: function(element) {=0A=
    $(element).style.display =3D 'none';=0A=
    return element;=0A=
  },=0A=
=0A=
  show: function(element) {=0A=
    $(element).style.display =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  remove: function(element) {=0A=
    element =3D $(element);=0A=
    element.parentNode.removeChild(element);=0A=
    return element;=0A=
  },=0A=
=0A=
  update: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
    content =3D Object.toHTML(content);=0A=
    element.innerHTML =3D content.stripScripts();=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  },=0A=
=0A=
  replace: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    else if (!Object.isElement(content)) {=0A=
      content =3D Object.toHTML(content);=0A=
      var range =3D element.ownerDocument.createRange();=0A=
      range.selectNode(element);=0A=
      content.evalScripts.bind(content).defer();=0A=
      content =3D range.createContextualFragment(content.stripScripts());=0A=
    }=0A=
    element.parentNode.replaceChild(content, element);=0A=
    return element;=0A=
  },=0A=
=0A=
  insert: function(element, insertions) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A=
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))=0A=
          insertions =3D {bottom:insertions};=0A=
=0A=
    var content, insert, tagName, childNodes;=0A=
=0A=
    for (var position in insertions) {=0A=
      content  =3D insertions[position];=0A=
      position =3D position.toLowerCase();=0A=
      insert =3D Element._insertionTranslations[position];=0A=
=0A=
      if (content && content.toElement) content =3D content.toElement();=0A=
      if (Object.isElement(content)) {=0A=
        insert(element, content);=0A=
        continue;=0A=
      }=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A=
        ? element.parentNode : element).tagName.toUpperCase();=0A=
=0A=
      childNodes =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
=0A=
      if (position =3D=3D 'top' || position =3D=3D 'after') =
childNodes.reverse();=0A=
      childNodes.each(insert.curry(element));=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  wrap: function(element, wrapper, attributes) {=0A=
    element =3D $(element);=0A=
    if (Object.isElement(wrapper))=0A=
      $(wrapper).writeAttribute(attributes || { });=0A=
    else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, =
attributes);=0A=
    else wrapper =3D new Element('div', wrapper);=0A=
    if (element.parentNode)=0A=
      element.parentNode.replaceChild(wrapper, element);=0A=
    wrapper.appendChild(element);=0A=
    return wrapper;=0A=
  },=0A=
=0A=
  inspect: function(element) {=0A=
    element =3D $(element);=0A=
    var result =3D '<' + element.tagName.toLowerCase();=0A=
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A=
      var property =3D pair.first(), attribute =3D pair.last();=0A=
      var value =3D (element[property] || '').toString();=0A=
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);=0A=
    });=0A=
    return result + '>';=0A=
  },=0A=
=0A=
  recursivelyCollect: function(element, property) {=0A=
    element =3D $(element);=0A=
    var elements =3D [];=0A=
    while (element =3D element[property])=0A=
      if (element.nodeType =3D=3D 1)=0A=
        elements.push(Element.extend(element));=0A=
    return elements;=0A=
  },=0A=
=0A=
  ancestors: function(element) {=0A=
    return $(element).recursivelyCollect('parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return $(element).select("*");=0A=
  },=0A=
=0A=
  firstDescendant: function(element) {=0A=
    element =3D $(element).firstChild;=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    return $(element);=0A=
  },=0A=
=0A=
  immediateDescendants: function(element) {=0A=
    if (!(element =3D $(element).firstChild)) return [];=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    if (element) return [element].concat($(element).nextSiblings());=0A=
    return [];=0A=
  },=0A=
=0A=
  previousSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return =
element.previousSiblings().reverse().concat(element.nextSiblings());=0A=
  },=0A=
=0A=
  match: function(element, selector) {=0A=
    if (Object.isString(selector))=0A=
      selector =3D new Selector(selector);=0A=
    return selector.match($(element));=0A=
  },=0A=
=0A=
  up: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return $(element.parentNode);=0A=
    var ancestors =3D element.ancestors();=0A=
    return Object.isNumber(expression) ? ancestors[expression] :=0A=
      Selector.findElement(ancestors, expression, index);=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return element.firstDescendant();=0A=
    return Object.isNumber(expression) ? =
element.descendants()[expression] :=0A=
      element.select(expression)[index || 0];=0A=
  },=0A=
=0A=
  previous: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.previousElementSibling(element));=0A=
    var previousSiblings =3D element.previousSiblings();=0A=
    return Object.isNumber(expression) ? previousSiblings[expression] :=0A=
      Selector.findElement(previousSiblings, expression, index);=0A=
  },=0A=
=0A=
  next: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.nextElementSibling(element));=0A=
    var nextSiblings =3D element.nextSiblings();=0A=
    return Object.isNumber(expression) ? nextSiblings[expression] :=0A=
      Selector.findElement(nextSiblings, expression, index);=0A=
  },=0A=
=0A=
  select: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element, args);=0A=
  },=0A=
=0A=
  adjacent: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element.parentNode, =
args).without(element);=0A=
  },=0A=
=0A=
  identify: function(element) {=0A=
    element =3D $(element);=0A=
    var id =3D element.readAttribute('id'), self =3D arguments.callee;=0A=
    if (id) return id;=0A=
    do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));=0A=
    element.writeAttribute('id', id);=0A=
    return id;=0A=
  },=0A=
=0A=
  readAttribute: function(element, name) {=0A=
    element =3D $(element);=0A=
    if (Prototype.Browser.IE) {=0A=
      var t =3D Element._attributeTranslations.read;=0A=
      if (t.values[name]) return t.values[name](element, name);=0A=
      if (t.names[name]) name =3D t.names[name];=0A=
      if (name.include(':')) {=0A=
        return (!element.attributes || !element.attributes[name]) ? null =
:=0A=
         element.attributes[name].value;=0A=
      }=0A=
    }=0A=
    return element.getAttribute(name);=0A=
  },=0A=
=0A=
  writeAttribute: function(element, name, value) {=0A=
    element =3D $(element);=0A=
    var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A=
=0A=
    if (typeof name =3D=3D 'object') attributes =3D name;=0A=
    else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A=
=0A=
    for (var attr in attributes) {=0A=
      name =3D t.names[attr] || attr;=0A=
      value =3D attributes[attr];=0A=
      if (t.values[attr]) name =3D t.values[attr](element, value);=0A=
      if (value =3D=3D=3D false || value =3D=3D=3D null)=0A=
        element.removeAttribute(name);=0A=
      else if (value =3D=3D=3D true)=0A=
        element.setAttribute(name, name);=0A=
      else element.setAttribute(name, value);=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    return $(element).getDimensions().height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return $(element).getDimensions().width;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var elementClassName =3D element.className;=0A=
    return (elementClassName.length > 0 && (elementClassName =3D=3D =
className ||=0A=
      new RegExp("(^|\\s)" + className + =
"(\\s|$)").test(elementClassName)));=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    if (!element.hasClassName(className))=0A=
      element.className +=3D (element.className ? ' ' : '') + className;=0A=
    return element;=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    element.className =3D element.className.replace(=0A=
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A=
    return element;=0A=
  },=0A=
=0A=
  toggleClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return element[element.hasClassName(className) ?=0A=
      'removeClassName' : 'addClassName'](className);=0A=
  },=0A=
=0A=
  // removes whitespace-only text node children=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    var node =3D element.firstChild;=0A=
    while (node) {=0A=
      var nextNode =3D node.nextSibling;=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        element.removeChild(node);=0A=
      node =3D nextNode;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.blank();=0A=
  },=0A=
=0A=
  descendantOf: function(element, ancestor) {=0A=
    element =3D $(element), ancestor =3D $(ancestor);=0A=
    var originalAncestor =3D ancestor;=0A=
=0A=
    if (element.compareDocumentPosition)=0A=
      return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A=
=0A=
    if (element.sourceIndex && !Prototype.Browser.Opera) {=0A=
      var e =3D element.sourceIndex, a =3D ancestor.sourceIndex,=0A=
       nextAncestor =3D ancestor.nextSibling;=0A=
      if (!nextAncestor) {=0A=
        do { ancestor =3D ancestor.parentNode; }=0A=
        while (!(nextAncestor =3D ancestor.nextSibling) && =
ancestor.parentNode);=0A=
      }=0A=
      if (nextAncestor && nextAncestor.sourceIndex)=0A=
       return (e > a && e < nextAncestor.sourceIndex);=0A=
    }=0A=
=0A=
    while (element =3D element.parentNode)=0A=
      if (element =3D=3D originalAncestor) return true;=0A=
    return false;=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D element.cumulativeOffset();=0A=
    window.scrollTo(pos[0], pos[1]);=0A=
    return element;=0A=
  },=0A=
=0A=
  getStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value) {=0A=
      var css =3D document.defaultView.getComputedStyle(element, null);=0A=
      value =3D css ? css[style] : null;=0A=
    }=0A=
    if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A=
    return value =3D=3D 'auto' ? null : value;=0A=
  },=0A=
=0A=
  getOpacity: function(element) {=0A=
    return $(element).getStyle('opacity');=0A=
  },=0A=
=0A=
  setStyle: function(element, styles) {=0A=
    element =3D $(element);=0A=
    var elementStyle =3D element.style, match;=0A=
    if (Object.isString(styles)) {=0A=
      element.style.cssText +=3D ';' + styles;=0A=
      return styles.include('opacity') ?=0A=
        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : =
element;=0A=
    }=0A=
    for (var property in styles)=0A=
      if (property =3D=3D 'opacity') =
element.setOpacity(styles[property]);=0A=
      else=0A=
        elementStyle[(property =3D=3D 'float' || property =3D=3D =
'cssFloat') ?=0A=
          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : =
'styleFloat') :=0A=
            property] =3D styles[property];=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  setOpacity: function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  },=0A=
=0A=
  getDimensions: function(element) {=0A=
    element =3D $(element);=0A=
    var display =3D $(element).getStyle('display');=0A=
    if (display !=3D 'none' && display !=3D null) // Safari bug=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=0A=
    // All *Width and *Height properties give 0 on elements with display =
none,=0A=
    // so enable the element temporarily=0A=
    var els =3D element.style;=0A=
    var originalVisibility =3D els.visibility;=0A=
    var originalPosition =3D els.position;=0A=
    var originalDisplay =3D els.display;=0A=
    els.visibility =3D 'hidden';=0A=
    els.position =3D 'absolute';=0A=
    els.display =3D 'block';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D originalDisplay;=0A=
    els.position =3D originalPosition;=0A=
    els.visibility =3D originalVisibility;=0A=
    return {width: originalWidth, height: originalHeight};=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      // Opera returns the offset relative to the positioning context, =
when an=0A=
      // element is position relative but top and left have not been =
defined=0A=
      if (window.opera) {=0A=
        element.style.top =3D 0;=0A=
        element.style.left =3D 0;=0A=
      }=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  undoPositioned: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._madePositioned) {=0A=
      element._madePositioned =3D undefined;=0A=
      element.style.position =3D=0A=
        element.style.top =3D=0A=
        element.style.left =3D=0A=
        element.style.bottom =3D=0A=
        element.style.right =3D '';=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  makeClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return element;=0A=
    element._overflow =3D Element.getStyle(element, 'overflow') || =
'auto';=0A=
    if (element._overflow !=3D=3D 'hidden')=0A=
      element.style.overflow =3D 'hidden';=0A=
    return element;=0A=
  },=0A=
=0A=
  undoClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element._overflow) return element;=0A=
    element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : =
element._overflow;=0A=
    element._overflow =3D null;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  positionedOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
      if (element) {=0A=
        if (element.tagName =3D=3D 'BODY') break;=0A=
        var p =3D Element.getStyle(element, 'position');=0A=
        if (p !=3D=3D 'static') break;=0A=
      }=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  absolutize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.getStyle('position') =3D=3D 'absolute') return;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    var offsets =3D element.positionedOffset();=0A=
    var top     =3D offsets[1];=0A=
    var left    =3D offsets[0];=0A=
    var width   =3D element.clientWidth;=0A=
    var height  =3D element.clientHeight;=0A=
=0A=
    element._originalLeft   =3D left - parseFloat(element.style.left  || =
0);=0A=
    element._originalTop    =3D top  - parseFloat(element.style.top || =
0);=0A=
    element._originalWidth  =3D element.style.width;=0A=
    element._originalHeight =3D element.style.height;=0A=
=0A=
    element.style.position =3D 'absolute';=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.width  =3D width + 'px';=0A=
    element.style.height =3D height + 'px';=0A=
    return element;=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.getStyle('position') =3D=3D 'relative') return;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    element.style.position =3D 'relative';=0A=
    var top  =3D parseFloat(element.style.top  || 0) - =
(element._originalTop || 0);=0A=
    var left =3D parseFloat(element.style.left || 0) - =
(element._originalLeft || 0);=0A=
=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.height =3D element._originalHeight;=0A=
    element.style.width  =3D element._originalWidth;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeScrollOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.scrollTop  || 0;=0A=
      valueL +=3D element.scrollLeft || 0;=0A=
      element =3D element.parentNode;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  getOffsetParent: function(element) {=0A=
    if (element.offsetParent) return $(element.offsetParent);=0A=
    if (element =3D=3D document.body) return $(element);=0A=
=0A=
    while ((element =3D element.parentNode) && element !=3D =
document.body)=0A=
      if (Element.getStyle(element, 'position') !=3D 'static')=0A=
        return $(element);=0A=
=0A=
    return $(document.body);=0A=
  },=0A=
=0A=
  viewportOffset: function(forElement) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
=0A=
      // Safari fix=0A=
      if (element.offsetParent =3D=3D document.body &&=0A=
        Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A=
=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      if (!Prototype.Browser.Opera || element.tagName =3D=3D 'BODY') {=0A=
        valueT -=3D element.scrollTop  || 0;=0A=
        valueL -=3D element.scrollLeft || 0;=0A=
      }=0A=
    } while (element =3D element.parentNode);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  clonePosition: function(element, source) {=0A=
    var options =3D Object.extend({=0A=
      setLeft:    true,=0A=
      setTop:     true,=0A=
      setWidth:   true,=0A=
      setHeight:  true,=0A=
      offsetTop:  0,=0A=
      offsetLeft: 0=0A=
    }, arguments[2] || { });=0A=
=0A=
    // find page position of source=0A=
    source =3D $(source);=0A=
    var p =3D source.viewportOffset();=0A=
=0A=
    // find coordinate system to use=0A=
    element =3D $(element);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    // delta [0,0] will do fine with position: fixed elements,=0A=
    // position:absolute needs offsetParent deltas=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A=
      parent =3D element.getOffsetParent();=0A=
      delta =3D parent.viewportOffset();=0A=
    }=0A=
=0A=
    // correct by body offsets (fixes Safari)=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    // set position=0A=
    if (options.setLeft)   element.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if (options.setTop)    element.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if (options.setWidth)  element.style.width =3D source.offsetWidth + =
'px';=0A=
    if (options.setHeight) element.style.height =3D source.offsetHeight =
+ 'px';=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.identify.counter =3D 1;=0A=
=0A=
Object.extend(Element.Methods, {=0A=
  getElementsBySelector: Element.Methods.select,=0A=
  childElements: Element.Methods.immediateDescendants=0A=
});=0A=
=0A=
Element._attributeTranslations =3D {=0A=
  write: {=0A=
    names: {=0A=
      className: 'class',=0A=
      htmlFor:   'for'=0A=
    },=0A=
    values: { }=0A=
  }=0A=
};=0A=
=0A=
if (Prototype.Browser.Opera) {=0A=
  Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A=
    function(proceed, element, style) {=0A=
      switch (style) {=0A=
        case 'left': case 'top': case 'right': case 'bottom':=0A=
          if (proceed(element, 'position') =3D=3D=3D 'static') return =
null;=0A=
        case 'height': case 'width':=0A=
          // returns '0px' for hidden elements; we want it to return null=0A=
          if (!Element.visible(element)) return null;=0A=
=0A=
          // returns the border-box dimensions rather than the =
content-box=0A=
          // dimensions, so we subtract padding and borders from the =
value=0A=
          var dim =3D parseInt(proceed(element, style), 10);=0A=
=0A=
          if (dim !=3D=3D element['offset' + style.capitalize()])=0A=
            return dim + 'px';=0A=
=0A=
          var properties;=0A=
          if (style =3D=3D=3D 'height') {=0A=
            properties =3D ['border-top-width', 'padding-top',=0A=
             'padding-bottom', 'border-bottom-width'];=0A=
          }=0A=
          else {=0A=
            properties =3D ['border-left-width', 'padding-left',=0A=
             'padding-right', 'border-right-width'];=0A=
          }=0A=
          return properties.inject(dim, function(memo, property) {=0A=
            var val =3D proceed(element, property);=0A=
            return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A=
          }) + 'px';=0A=
        default: return proceed(element, style);=0A=
      }=0A=
    }=0A=
  );=0A=
=0A=
  Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A=
    function(proceed, element, attribute) {=0A=
      if (attribute =3D=3D=3D 'title') return element.title;=0A=
      return proceed(element, attribute);=0A=
    }=0A=
  );=0A=
}=0A=
=0A=
else if (Prototype.Browser.IE) {=0A=
  // IE doesn't report offsets correctly for static elements, so we =
change them=0A=
  // to "relative" to get the values, then change them back.=0A=
  Element.Methods.getOffsetParent =3D =
Element.Methods.getOffsetParent.wrap(=0A=
    function(proceed, element) {=0A=
      element =3D $(element);=0A=
      var position =3D element.getStyle('position');=0A=
      if (position !=3D=3D 'static') return proceed(element);=0A=
      element.setStyle({ position: 'relative' });=0A=
      var value =3D proceed(element);=0A=
      element.setStyle({ position: position });=0A=
      return value;=0A=
    }=0A=
  );=0A=
=0A=
  $w('positionedOffset viewportOffset').each(function(method) {=0A=
    Element.Methods[method] =3D Element.Methods[method].wrap(=0A=
      function(proceed, element) {=0A=
        element =3D $(element);=0A=
        var position =3D element.getStyle('position');=0A=
        if (position !=3D=3D 'static') return proceed(element);=0A=
        // Trigger hasLayout on the offset parent so that IE6 reports=0A=
        // accurate offsetTop and offsetLeft values for position: fixed.=0A=
        var offsetParent =3D element.getOffsetParent();=0A=
        if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D =
'fixed')=0A=
          offsetParent.setStyle({ zoom: 1 });=0A=
        element.setStyle({ position: 'relative' });=0A=
        var value =3D proceed(element);=0A=
        element.setStyle({ position: position });=0A=
        return value;=0A=
      }=0A=
    );=0A=
  });=0A=
=0A=
  Element.Methods.getStyle =3D function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? =
'styleFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value && element.currentStyle) value =3D =
element.currentStyle[style];=0A=
=0A=
    if (style =3D=3D 'opacity') {=0A=
      if (value =3D (element.getStyle('filter') || =
'').match(/alpha\(opacity=3D(.*)\)/))=0A=
        if (value[1]) return parseFloat(value[1]) / 100;=0A=
      return 1.0;=0A=
    }=0A=
=0A=
    if (value =3D=3D 'auto') {=0A=
      if ((style =3D=3D 'width' || style =3D=3D 'height') && =
(element.getStyle('display') !=3D 'none'))=0A=
        return element['offset' + style.capitalize()] + 'px';=0A=
      return null;=0A=
    }=0A=
    return value;=0A=
  };=0A=
=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    function stripAlpha(filter){=0A=
      return filter.replace(/alpha\([^\)]*\)/gi,'');=0A=
    }=0A=
    element =3D $(element);=0A=
    var currentStyle =3D element.currentStyle;=0A=
    if ((currentStyle && !currentStyle.hasLayout) ||=0A=
      (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A=
        element.style.zoom =3D 1;=0A=
=0A=
    var filter =3D element.getStyle('filter'), style =3D element.style;=0A=
    if (value =3D=3D 1 || value =3D=3D=3D '') {=0A=
      (filter =3D stripAlpha(filter)) ?=0A=
        style.filter =3D filter : style.removeAttribute('filter');=0A=
      return element;=0A=
    } else if (value < 0.00001) value =3D 0;=0A=
    style.filter =3D stripAlpha(filter) +=0A=
      'alpha(opacity=3D' + (value * 100) + ')';=0A=
    return element;=0A=
  };=0A=
=0A=
  Element._attributeTranslations =3D {=0A=
    read: {=0A=
      names: {=0A=
        'class': 'className',=0A=
        'for':   'htmlFor'=0A=
      },=0A=
      values: {=0A=
        _getAttr: function(element, attribute) {=0A=
          return element.getAttribute(attribute, 2);=0A=
        },=0A=
        _getAttrNode: function(element, attribute) {=0A=
          var node =3D element.getAttributeNode(attribute);=0A=
          return node ? node.value : "";=0A=
        },=0A=
        _getEv: function(element, attribute) {=0A=
          attribute =3D element.getAttribute(attribute);=0A=
          return attribute ? attribute.toString().slice(23, -2) : null;=0A=
        },=0A=
        _flag: function(element, attribute) {=0A=
          return $(element).hasAttribute(attribute) ? attribute : null;=0A=
        },=0A=
        style: function(element) {=0A=
          return element.style.cssText.toLowerCase();=0A=
        },=0A=
        title: function(element) {=0A=
          return element.title;=0A=
        }=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.write =3D {=0A=
    names: Object.extend({=0A=
      cellpadding: 'cellPadding',=0A=
      cellspacing: 'cellSpacing'=0A=
    }, Element._attributeTranslations.read.names),=0A=
    values: {=0A=
      checked: function(element, value) {=0A=
        element.checked =3D !!value;=0A=
      },=0A=
=0A=
      style: function(element, value) {=0A=
        element.style.cssText =3D value ? value : '';=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.has =3D {};=0A=
=0A=
  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A=
      'encType maxLength readOnly longDesc').each(function(attr) {=0A=
    Element._attributeTranslations.write.names[attr.toLowerCase()] =3D =
attr;=0A=
    Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A=
  });=0A=
=0A=
  (function(v) {=0A=
    Object.extend(v, {=0A=
      href:        v._getAttr,=0A=
      src:         v._getAttr,=0A=
      type:        v._getAttr,=0A=
      action:      v._getAttrNode,=0A=
      disabled:    v._flag,=0A=
      checked:     v._flag,=0A=
      readonly:    v._flag,=0A=
      multiple:    v._flag,=0A=
      onload:      v._getEv,=0A=
      onunload:    v._getEv,=0A=
      onclick:     v._getEv,=0A=
      ondblclick:  v._getEv,=0A=
      onmousedown: v._getEv,=0A=
      onmouseup:   v._getEv,=0A=
      onmouseover: v._getEv,=0A=
      onmousemove: v._getEv,=0A=
      onmouseout:  v._getEv,=0A=
      onfocus:     v._getEv,=0A=
      onblur:      v._getEv,=0A=
      onkeypress:  v._getEv,=0A=
      onkeydown:   v._getEv,=0A=
      onkeyup:     v._getEv,=0A=
      onsubmit:    v._getEv,=0A=
      onreset:     v._getEv,=0A=
      onselect:    v._getEv,=0A=
      onchange:    v._getEv=0A=
    });=0A=
  })(Element._attributeTranslations.read.values);=0A=
}=0A=
=0A=
else if (Prototype.Browser.Gecko && =
/rv:1\.8\.0/.test(navigator.userAgent)) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A=
      (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
else if (Prototype.Browser.WebKit) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
=0A=
    if (value =3D=3D 1)=0A=
      if(element.tagName =3D=3D 'IMG' && element.width) {=0A=
        element.width++; element.width--;=0A=
      } else try {=0A=
        var n =3D document.createTextNode(' ');=0A=
        element.appendChild(n);=0A=
        element.removeChild(n);=0A=
      } catch (e) { }=0A=
=0A=
    return element;=0A=
  };=0A=
=0A=
  // Safari returns margins on body which is incorrect if the child is =
absolutely=0A=
  // positioned.  For performance reasons, redefine =
Element#cumulativeOffset for=0A=
  // KHTML/WebKit only.=0A=
  Element.Methods.cumulativeOffset =3D function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      if (element.offsetParent =3D=3D document.body)=0A=
        if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;=0A=
=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  };=0A=
}=0A=
=0A=
if (Prototype.Browser.IE || Prototype.Browser.Opera) {=0A=
  // IE and Opera are missing .innerHTML support for TABLE-related and =
SELECT elements=0A=
  Element.Methods.update =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var tagName =3D element.tagName.toUpperCase();=0A=
=0A=
    if (tagName in Element._insertionTranslations.tags) {=0A=
      $A(element.childNodes).each(function(node) { =
element.removeChild(node) });=0A=
      Element._getContentFromAnonymousElement(tagName, =
content.stripScripts())=0A=
        .each(function(node) { element.appendChild(node) });=0A=
    }=0A=
    else element.innerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
if ('outerHTML' in document.createElement('div')) {=0A=
  Element.Methods.replace =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) {=0A=
      element.parentNode.replaceChild(content, element);=0A=
      return element;=0A=
    }=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var parent =3D element.parentNode, tagName =3D =
parent.tagName.toUpperCase();=0A=
=0A=
    if (Element._insertionTranslations.tags[tagName]) {=0A=
      var nextSibling =3D element.next();=0A=
      var fragments =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
      parent.removeChild(element);=0A=
      if (nextSibling)=0A=
        fragments.each(function(node) { parent.insertBefore(node, =
nextSibling) });=0A=
      else=0A=
        fragments.each(function(node) { parent.appendChild(node) });=0A=
    }=0A=
    else element.outerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
Element._returnOffset =3D function(l, t) {=0A=
  var result =3D [l, t];=0A=
  result.left =3D l;=0A=
  result.top =3D t;=0A=
  return result;=0A=
};=0A=
=0A=
Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A=
  var div =3D new Element('div'), t =3D =
Element._insertionTranslations.tags[tagName];=0A=
  if (t) {=0A=
    div.innerHTML =3D t[0] + html + t[1];=0A=
    t[2].times(function() { div =3D div.firstChild });=0A=
  } else div.innerHTML =3D html;=0A=
  return $A(div.childNodes);=0A=
};=0A=
=0A=
Element._insertionTranslations =3D {=0A=
  before: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element);=0A=
  },=0A=
  top: function(element, node) {=0A=
    element.insertBefore(node, element.firstChild);=0A=
  },=0A=
  bottom: function(element, node) {=0A=
    element.appendChild(node);=0A=
  },=0A=
  after: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element.nextSibling);=0A=
  },=0A=
  tags: {=0A=
    TABLE:  ['<table>',                '</table>',                   1],=0A=
    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],=0A=
    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],=0A=
    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],=0A=
    SELECT: ['<select>',               '</select>',                  1]=0A=
  }=0A=
};=0A=
=0A=
(function() {=0A=
  Object.extend(this.tags, {=0A=
    THEAD: this.tags.TBODY,=0A=
    TFOOT: this.tags.TBODY,=0A=
    TH:    this.tags.TD=0A=
  });=0A=
}).call(Element._insertionTranslations);=0A=
=0A=
Element.Methods.Simulated =3D {=0A=
  hasAttribute: function(element, attribute) {=0A=
    attribute =3D Element._attributeTranslations.has[attribute] || =
attribute;=0A=
    var node =3D $(element).getAttributeNode(attribute);=0A=
    return node && node.specified;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.ByTag =3D { };=0A=
=0A=
Object.extend(Element, Element.Methods);=0A=
=0A=
if (!Prototype.BrowserFeatures.ElementExtensions &&=0A=
    document.createElement('div').__proto__) {=0A=
  window.HTMLElement =3D { };=0A=
  window.HTMLElement.prototype =3D =
document.createElement('div').__proto__;=0A=
  Prototype.BrowserFeatures.ElementExtensions =3D true;=0A=
}=0A=
=0A=
Element.extend =3D (function() {=0A=
  if (Prototype.BrowserFeatures.SpecificElementExtensions)=0A=
    return Prototype.K;=0A=
=0A=
  var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A=
=0A=
  var extend =3D Object.extend(function(element) {=0A=
    if (!element || element._extendedByPrototype ||=0A=
        element.nodeType !=3D 1 || element =3D=3D window) return element;=0A=
=0A=
    var methods =3D Object.clone(Methods),=0A=
      tagName =3D element.tagName, property, value;=0A=
=0A=
    // extend methods for specific tags=0A=
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A=
=0A=
    for (property in methods) {=0A=
      value =3D methods[property];=0A=
      if (Object.isFunction(value) && !(property in element))=0A=
        element[property] =3D value.methodize();=0A=
    }=0A=
=0A=
    element._extendedByPrototype =3D Prototype.emptyFunction;=0A=
    return element;=0A=
=0A=
  }, {=0A=
    refresh: function() {=0A=
      // extend methods for all tags (Safari doesn't need this)=0A=
      if (!Prototype.BrowserFeatures.ElementExtensions) {=0A=
        Object.extend(Methods, Element.Methods);=0A=
        Object.extend(Methods, Element.Methods.Simulated);=0A=
      }=0A=
    }=0A=
  });=0A=
=0A=
  extend.refresh();=0A=
  return extend;=0A=
})();=0A=
=0A=
Element.hasAttribute =3D function(element, attribute) {=0A=
  if (element.hasAttribute) return element.hasAttribute(attribute);=0A=
  return Element.Methods.Simulated.hasAttribute(element, attribute);=0A=
};=0A=
=0A=
Element.addMethods =3D function(methods) {=0A=
  var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A=
=0A=
  if (!methods) {=0A=
    Object.extend(Form, Form.Methods);=0A=
    Object.extend(Form.Element, Form.Element.Methods);=0A=
    Object.extend(Element.Methods.ByTag, {=0A=
      "FORM":     Object.clone(Form.Methods),=0A=
      "INPUT":    Object.clone(Form.Element.Methods),=0A=
      "SELECT":   Object.clone(Form.Element.Methods),=0A=
      "TEXTAREA": Object.clone(Form.Element.Methods)=0A=
    });=0A=
  }=0A=
=0A=
  if (arguments.length =3D=3D 2) {=0A=
    var tagName =3D methods;=0A=
    methods =3D arguments[1];=0A=
  }=0A=
=0A=
  if (!tagName) Object.extend(Element.Methods, methods || { });=0A=
  else {=0A=
    if (Object.isArray(tagName)) tagName.each(extend);=0A=
    else extend(tagName);=0A=
  }=0A=
=0A=
  function extend(tagName) {=0A=
    tagName =3D tagName.toUpperCase();=0A=
    if (!Element.Methods.ByTag[tagName])=0A=
      Element.Methods.ByTag[tagName] =3D { };=0A=
    Object.extend(Element.Methods.ByTag[tagName], methods);=0A=
  }=0A=
=0A=
  function copy(methods, destination, onlyIfAbsent) {=0A=
    onlyIfAbsent =3D onlyIfAbsent || false;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (!Object.isFunction(value)) continue;=0A=
      if (!onlyIfAbsent || !(property in destination))=0A=
        destination[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  function findDOMClass(tagName) {=0A=
    var klass;=0A=
    var trans =3D {=0A=
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A=
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": =
"DList",=0A=
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": =
"Heading",=0A=
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A=
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", =
"CAPTION":=0A=
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A=
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", =
"TR":=0A=
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A=
      "FrameSet", "IFRAME": "IFrame"=0A=
    };=0A=
    if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
=0A=
    window[klass] =3D { };=0A=
    window[klass].prototype =3D =
document.createElement(tagName).__proto__;=0A=
    return window[klass];=0A=
  }=0A=
=0A=
  if (F.ElementExtensions) {=0A=
    copy(Element.Methods, HTMLElement.prototype);=0A=
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A=
  }=0A=
=0A=
  if (F.SpecificElementExtensions) {=0A=
    for (var tag in Element.Methods.ByTag) {=0A=
      var klass =3D findDOMClass(tag);=0A=
      if (Object.isUndefined(klass)) continue;=0A=
      copy(T[tag], klass.prototype);=0A=
    }=0A=
  }=0A=
=0A=
  Object.extend(Element, Element.Methods);=0A=
  delete Element.ByTag;=0A=
=0A=
  if (Element.extend.refresh) Element.extend.refresh();=0A=
  Element.cache =3D { };=0A=
};=0A=
=0A=
document.viewport =3D {=0A=
  getDimensions: function() {=0A=
    var dimensions =3D { };=0A=
    var B =3D Prototype.Browser;=0A=
    $w('width height').each(function(d) {=0A=
      var D =3D d.capitalize();=0A=
      dimensions[d] =3D (B.WebKit && !document.evaluate) ? self['inner' =
+ D] :=0A=
        (B.Opera) ? document.body['client' + D] : =
document.documentElement['client' + D];=0A=
    });=0A=
    return dimensions;=0A=
  },=0A=
=0A=
  getWidth: function() {=0A=
    return this.getDimensions().width;=0A=
  },=0A=
=0A=
  getHeight: function() {=0A=
    return this.getDimensions().height;=0A=
  },=0A=
=0A=
  getScrollOffsets: function() {=0A=
    return Element._returnOffset(=0A=
      window.pageXOffset || document.documentElement.scrollLeft || =
document.body.scrollLeft,=0A=
      window.pageYOffset || document.documentElement.scrollTop || =
document.body.scrollTop);=0A=
  }=0A=
};=0A=
/* Portions of the Selector class are derived from Jack Slocum=E2=80=99s =
DomQuery,=0A=
 * part of YUI-Ext version 0.40, distributed under the terms of an =
MIT-style=0A=
 * license.  Please see http://www.yui-ext.com/ for more information. */=0A=
=0A=
var Selector =3D Class.create({=0A=
  initialize: function(expression) {=0A=
    this.expression =3D expression.strip();=0A=
    this.compileMatcher();=0A=
  },=0A=
=0A=
  shouldUseXPath: function() {=0A=
    if (!Prototype.BrowserFeatures.XPath) return false;=0A=
=0A=
    var e =3D this.expression;=0A=
=0A=
    // Safari 3 chokes on :*-of-type and :empty=0A=
    if (Prototype.Browser.WebKit &&=0A=
     (e.include("-of-type") || e.include(":empty")))=0A=
      return false;=0A=
=0A=
    // XPath can't do namespaced attributes, nor can it read=0A=
    // the "checked" property from DOM nodes=0A=
    if ((/(\[[\w-]*?:|:checked)/).test(this.expression))=0A=
      return false;=0A=
=0A=
    return true;=0A=
  },=0A=
=0A=
  compileMatcher: function() {=0A=
    if (this.shouldUseXPath())=0A=
      return this.compileXPathMatcher();=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, h =3D =
Selector.handlers,=0A=
        c =3D Selector.criteria, le, p, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.matcher =3D Selector._cache[e];=0A=
      return;=0A=
    }=0A=
=0A=
    this.matcher =3D ["this.matcher =3D function(root) {",=0A=
                    "var r =3D root, h =3D Selector.handlers, c =3D =
false, n;"];=0A=
=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :=0A=
    	      new Template(c[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.matcher.push("return h.unique(n);\n}");=0A=
    eval(this.matcher.join('\n'));=0A=
    Selector._cache[this.expression] =3D this.matcher;=0A=
  },=0A=
=0A=
  compileXPathMatcher: function() {=0A=
    var e =3D this.expression, ps =3D Selector.patterns,=0A=
        x =3D Selector.xpath, le, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.xpath =3D Selector._cache[e]; return;=0A=
    }=0A=
=0A=
    this.matcher =3D ['.//*'];=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        if (m =3D e.match(ps[i])) {=0A=
          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :=0A=
            new Template(x[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.xpath =3D this.matcher.join('');=0A=
    Selector._cache[this.expression] =3D this.xpath;=0A=
  },=0A=
=0A=
  findElements: function(root) {=0A=
    root =3D root || document;=0A=
    if (this.xpath) return document._getElementsByXPath(this.xpath, =
root);=0A=
    return this.matcher(root);=0A=
  },=0A=
=0A=
  match: function(element) {=0A=
    this.tokens =3D [];=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, as =3D =
Selector.assertions;=0A=
    var le, p, m;=0A=
=0A=
    while (e && le !=3D=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          // use the Selector.assertions methods unless the selector=0A=
          // is too complex.=0A=
          if (as[i]) {=0A=
            this.tokens.push([i, Object.clone(m)]);=0A=
            e =3D e.replace(m[0], '');=0A=
          } else {=0A=
            // reluctantly do a document-wide search=0A=
            // and look for a match in the array=0A=
            return this.findElements(document).include(element);=0A=
          }=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    var match =3D true, name, matches;=0A=
    for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A=
      name =3D token[0], matches =3D token[1];=0A=
      if (!Selector.assertions[name](element, matches)) {=0A=
        match =3D false; break;=0A=
      }=0A=
    }=0A=
=0A=
    return match;=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.expression;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return "#<Selector:" + this.expression.inspect() + ">";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Selector, {=0A=
  _cache: { },=0A=
=0A=
  xpath: {=0A=
    descendant:   "//*",=0A=
    child:        "/*",=0A=
    adjacent:     "/following-sibling::*[1]",=0A=
    laterSibling: '/following-sibling::*',=0A=
    tagName:      function(m) {=0A=
      if (m[1] =3D=3D '*') return '';=0A=
      return "[local-name()=3D'" + m[1].toLowerCase() +=0A=
             "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A=
    },=0A=
    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A=
    id:           "[@id=3D'#{1}']",=0A=
    attrPresence: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      return new Template("[@#{1}]").evaluate(m);=0A=
    },=0A=
    attr: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      m[3] =3D m[5] || m[6];=0A=
      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      var h =3D Selector.xpath.pseudos[m[1]];=0A=
      if (!h) return '';=0A=
      if (Object.isFunction(h)) return h(m);=0A=
      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A=
    },=0A=
    operators: {=0A=
      '=3D':  "[@#{1}=3D'#{3}']",=0A=
      '!=3D': "[@#{1}!=3D'#{3}']",=0A=
      '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A=
      '$=3D': "[substring(@#{1}, (string-length(@#{1}) - =
string-length('#{3}') + 1))=3D'#{3}']",=0A=
      '*=3D': "[contains(@#{1}, '#{3}')]",=0A=
      '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A=
      '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A=
    },=0A=
    pseudos: {=0A=
      'first-child': '[not(preceding-sibling::*)]',=0A=
      'last-child':  '[not(following-sibling::*)]',=0A=
      'only-child':  '[not(preceding-sibling::* or =
following-sibling::*)]',=0A=
      'empty':       "[count(*) =3D 0 and (count(text()) =3D 0 or =
translate(text(), ' \t\r\n', '') =3D '')]",=0A=
      'checked':     "[@checked]",=0A=
      'disabled':    "[@disabled]",=0A=
      'enabled':     "[not(@disabled)]",=0A=
      'not': function(m) {=0A=
        var e =3D m[6], p =3D Selector.patterns,=0A=
            x =3D Selector.xpath, le, v;=0A=
=0A=
        var exclusion =3D [];=0A=
        while (e && le !=3D e && (/\S/).test(e)) {=0A=
          le =3D e;=0A=
          for (var i in p) {=0A=
            if (m =3D e.match(p[i])) {=0A=
              v =3D Object.isFunction(x[i]) ? x[i](m) : new =
Template(x[i]).evaluate(m);=0A=
              exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A=
              e =3D e.replace(m[0], '');=0A=
              break;=0A=
            }=0A=
          }=0A=
        }=0A=
        return "[not(" + exclusion.join(" and ") + ")]";=0A=
      },=0A=
      'nth-child':      function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-last-child': function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-of-type':    function(m) {=0A=
        return Selector.xpath.pseudos.nth("position() ", m);=0A=
      },=0A=
      'nth-last-of-type': function(m) {=0A=
        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", =
m);=0A=
      },=0A=
      'first-of-type':  function(m) {=0A=
        m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A=
      },=0A=
      'last-of-type':   function(m) {=0A=
        m[6] =3D "1"; return =
Selector.xpath.pseudos['nth-last-of-type'](m);=0A=
      },=0A=
      'only-of-type':   function(m) {=0A=
        var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + =
p['last-of-type'](m);=0A=
      },=0A=
      nth: function(fragment, m) {=0A=
        var mm, formula =3D m[6], predicate;=0A=
        if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
        if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
        if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A=
          return '[' + fragment + "=3D " + mm[1] + ']';=0A=
        if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A=
          if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A=
          var a =3D mm[1] ? Number(mm[1]) : 1;=0A=
          var b =3D mm[2] ? Number(mm[2]) : 0;=0A=
          predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A=
          "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A=
          return new Template(predicate).evaluate({=0A=
            fragment: fragment, a: a, b: b });=0A=
        }=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  criteria: {=0A=
    tagName:      'n =3D h.tagName(n, r, "#{1}", c);      c =3D false;',=0A=
    className:    'n =3D h.className(n, r, "#{1}", c);    c =3D false;',=0A=
    id:           'n =3D h.id(n, r, "#{1}", c);           c =3D false;',=0A=
    attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;',=0A=
    attr: function(m) {=0A=
      m[3] =3D (m[5] || m[6]);=0A=
      return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", =
c); c =3D false;').evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A=
      return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    descendant:   'c =3D "descendant";',=0A=
    child:        'c =3D "child";',=0A=
    adjacent:     'c =3D "adjacent";',=0A=
    laterSibling: 'c =3D "laterSibling";'=0A=
  },=0A=
=0A=
  patterns: {=0A=
    // combinators must be listed first=0A=
    // (and descendant needs to be last combinator)=0A=
    laterSibling: /^\s*~\s*/,=0A=
    child:        /^\s*>\s*/,=0A=
    adjacent:     /^\s*\+\s*/,=0A=
    descendant:   /^\s/,=0A=
=0A=
    // selectors follow=0A=
    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,=0A=
    id:           /^#([\w\-\*]+)(\b|$)/,=0A=
    className:    /^\.([\w\-\*]+)(\b|$)/,=0A=
    pseudo:=0A=
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis=
)abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/,=0A=
    attrPresence: /^\[([\w]+)\]/,=0A=
    attr:         =
/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^=
\]]*?)))?\]/=0A=
  },=0A=
=0A=
  // for Selector.match and Element#match=0A=
  assertions: {=0A=
    tagName: function(element, matches) {=0A=
      return matches[1].toUpperCase() =3D=3D =
element.tagName.toUpperCase();=0A=
    },=0A=
=0A=
    className: function(element, matches) {=0A=
      return Element.hasClassName(element, matches[1]);=0A=
    },=0A=
=0A=
    id: function(element, matches) {=0A=
      return element.id =3D=3D=3D matches[1];=0A=
    },=0A=
=0A=
    attrPresence: function(element, matches) {=0A=
      return Element.hasAttribute(element, matches[1]);=0A=
    },=0A=
=0A=
    attr: function(element, matches) {=0A=
      var nodeValue =3D Element.readAttribute(element, matches[1]);=0A=
      return nodeValue && Selector.operators[matches[2]](nodeValue, =
matches[5] || matches[6]);=0A=
    }=0A=
  },=0A=
=0A=
  handlers: {=0A=
    // UTILITY FUNCTIONS=0A=
    // joins two collections=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    // marks an array of nodes for counting=0A=
    mark: function(nodes) {=0A=
      var _true =3D Prototype.emptyFunction;=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._countedByPrototype =3D _true;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    unmark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._countedByPrototype =3D undefined;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    // mark each child node with its position (for nth calls)=0A=
    // "ofType" flag indicates whether we're indexing for nth-of-type=0A=
    // rather than nth-child=0A=
    index: function(parentNode, reverse, ofType) {=0A=
      parentNode._countedByPrototype =3D Prototype.emptyFunction;=0A=
      if (reverse) {=0A=
        for (var nodes =3D parentNode.childNodes, i =3D nodes.length - =
1, j =3D 1; i >=3D 0; i--) {=0A=
          var node =3D nodes[i];=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || =
node._countedByPrototype)) node.nodeIndex =3D j++;=0A=
        }=0A=
      } else {=0A=
        for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node =
=3D nodes[i]; i++)=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || =
node._countedByPrototype)) node.nodeIndex =3D j++;=0A=
      }=0A=
    },=0A=
=0A=
    // filters out duplicates and extends all nodes=0A=
    unique: function(nodes) {=0A=
      if (nodes.length =3D=3D 0) return nodes;=0A=
      var results =3D [], n;=0A=
      for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A=
        if (!(n =3D nodes[i])._countedByPrototype) {=0A=
          n._countedByPrototype =3D Prototype.emptyFunction;=0A=
          results.push(Element.extend(n));=0A=
        }=0A=
      return Selector.handlers.unmark(results);=0A=
    },=0A=
=0A=
    // COMBINATOR FUNCTIONS=0A=
    descendant: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, node.getElementsByTagName('*'));=0A=
      return results;=0A=
    },=0A=
=0A=
    child: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A=
          if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') =
results.push(child);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    adjacent: function(nodes) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        var next =3D this.nextElementSibling(node);=0A=
        if (next) results.push(next);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    laterSibling: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, Element.nextSiblings(node));=0A=
      return results;=0A=
    },=0A=
=0A=
    nextElementSibling: function(node) {=0A=
      while (node =3D node.nextSibling)=0A=
	      if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    previousElementSibling: function(node) {=0A=
      while (node =3D node.previousSibling)=0A=
        if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    // TOKEN FUNCTIONS=0A=
    tagName: function(nodes, root, tagName, combinator) {=0A=
      var uTagName =3D tagName.toUpperCase();=0A=
      var results =3D [], h =3D Selector.handlers;=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          // fastlane for ordinary descendant combinators=0A=
          if (combinator =3D=3D "descendant") {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              h.concat(results, node.getElementsByTagName(tagName));=0A=
            return results;=0A=
          } else nodes =3D this[combinator](nodes);=0A=
          if (tagName =3D=3D "*") return nodes;=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName.toUpperCase() =3D=3D=3D uTagName) =
results.push(node);=0A=
        return results;=0A=
      } else return root.getElementsByTagName(tagName);=0A=
    },=0A=
=0A=
    id: function(nodes, root, id, combinator) {=0A=
      var targetNode =3D $(id), h =3D Selector.handlers;=0A=
      if (!targetNode) return [];=0A=
      if (!nodes && root =3D=3D document) return [targetNode];=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          if (combinator =3D=3D 'child') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (targetNode.parentNode =3D=3D node) return [targetNode];=0A=
          } else if (combinator =3D=3D 'descendant') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Element.descendantOf(targetNode, node)) return =
[targetNode];=0A=
          } else if (combinator =3D=3D 'adjacent') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Selector.handlers.previousElementSibling(targetNode) =
=3D=3D node)=0A=
                return [targetNode];=0A=
          } else nodes =3D h[combinator](nodes);=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node =3D=3D targetNode) return [targetNode];=0A=
        return [];=0A=
      }=0A=
      return (targetNode && Element.descendantOf(targetNode, root)) ? =
[targetNode] : [];=0A=
    },=0A=
=0A=
    className: function(nodes, root, className, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      return Selector.handlers.byClassName(nodes, root, className);=0A=
    },=0A=
=0A=
    byClassName: function(nodes, root, className) {=0A=
      if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A=
      var needle =3D ' ' + className + ' ';=0A=
      for (var i =3D 0, results =3D [], node, nodeClassName; node =3D =
nodes[i]; i++) {=0A=
        nodeClassName =3D node.className;=0A=
        if (nodeClassName.length =3D=3D 0) continue;=0A=
        if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' =
').include(needle))=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    attrPresence: function(nodes, root, attr, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      var results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        if (Element.hasAttribute(node, attr)) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    attr: function(nodes, root, attr, value, operator, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      var handler =3D Selector.operators[operator], results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        var nodeValue =3D Element.readAttribute(node, attr);=0A=
        if (nodeValue =3D=3D=3D null) continue;=0A=
        if (handler(nodeValue, value)) results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    pseudo: function(nodes, name, value, root, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      return Selector.pseudos[name](nodes, value, root);=0A=
    }=0A=
  },=0A=
=0A=
  pseudos: {=0A=
    'first-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.previousElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'last-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.nextElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'only-child': function(nodes, value, root) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!h.previousElementSibling(node) && =
!h.nextElementSibling(node))=0A=
          results.push(node);=0A=
      return results;=0A=
    },=0A=
    'nth-child':        function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root);=0A=
    },=0A=
    'nth-last-child':   function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true);=0A=
    },=0A=
    'nth-of-type':      function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, false, true);=0A=
    },=0A=
    'nth-last-of-type': function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true, true);=0A=
    },=0A=
    'first-of-type':    function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, false, true);=0A=
    },=0A=
    'last-of-type':     function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, true, true);=0A=
    },=0A=
    'only-of-type':     function(nodes, formula, root) {=0A=
      var p =3D Selector.pseudos;=0A=
      return p['last-of-type'](p['first-of-type'](nodes, formula, root), =
formula, root);=0A=
    },=0A=
=0A=
    // handles the an+b logic=0A=
    getIndices: function(a, b, total) {=0A=
      if (a =3D=3D 0) return b > 0 ? [b] : [];=0A=
      return $R(1, total).inject([], function(memo, i) {=0A=
        if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A=
        return memo;=0A=
      });=0A=
    },=0A=
=0A=
    // handles nth(-last)-child, nth(-last)-of-type, and =
(first|last)-of-type=0A=
    nth: function(nodes, formula, root, reverse, ofType) {=0A=
      if (nodes.length =3D=3D 0) return [];=0A=
      if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
      if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
      var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A=
      h.mark(nodes);=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        if (!node.parentNode._countedByPrototype) {=0A=
          h.index(node.parentNode, reverse, ofType);=0A=
          indexed.push(node.parentNode);=0A=
        }=0A=
      }=0A=
      if (formula.match(/^\d+$/)) { // just a number=0A=
        formula =3D Number(formula);=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.nodeIndex =3D=3D formula) results.push(node);=0A=
      } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // =
an+b=0A=
        if (m[1] =3D=3D "-") m[1] =3D -1;=0A=
        var a =3D m[1] ? Number(m[1]) : 1;=0A=
        var b =3D m[2] ? Number(m[2]) : 0;=0A=
        var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A=
        for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; =
i++) {=0A=
          for (var j =3D 0; j < l; j++)=0A=
            if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A=
        }=0A=
      }=0A=
      h.unmark(nodes);=0A=
      h.unmark(indexed);=0A=
      return results;=0A=
    },=0A=
=0A=
    'empty': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        // IE treats comments as element nodes=0A=
        if (node.tagName =3D=3D '!' || (node.firstChild && =
!node.innerHTML.match(/^\s*$/))) continue;=0A=
        results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    'not': function(nodes, selector, root) {=0A=
      var h =3D Selector.handlers, selectorType, m;=0A=
      var exclusions =3D new Selector(selector).findElements(root);=0A=
      h.mark(exclusions);=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node._countedByPrototype) results.push(node);=0A=
      h.unmark(exclusions);=0A=
      return results;=0A=
    },=0A=
=0A=
    'enabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'disabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'checked': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.checked) results.push(node);=0A=
      return results;=0A=
    }=0A=
  },=0A=
=0A=
  operators: {=0A=
    '=3D':  function(nv, v) { return nv =3D=3D v; },=0A=
    '!=3D': function(nv, v) { return nv !=3D v; },=0A=
    '^=3D': function(nv, v) { return nv.startsWith(v); },=0A=
    '$=3D': function(nv, v) { return nv.endsWith(v); },=0A=
    '*=3D': function(nv, v) { return nv.include(v); },=0A=
    '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + =
' '); },=0A=
    '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + =
'-').include('-' + v.toUpperCase() + '-'); }=0A=
  },=0A=
=0A=
  split: function(expression) {=0A=
    var expressions =3D [];=0A=
    expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, =
function(m) {=0A=
      expressions.push(m[1].strip());=0A=
    });=0A=
    return expressions;=0A=
  },=0A=
=0A=
  matchElements: function(elements, expression) {=0A=
    var matches =3D $$(expression), h =3D Selector.handlers;=0A=
    h.mark(matches);=0A=
    for (var i =3D 0, results =3D [], element; element =3D elements[i]; =
i++)=0A=
      if (element._countedByPrototype) results.push(element);=0A=
    h.unmark(matches);=0A=
    return results;=0A=
  },=0A=
=0A=
  findElement: function(elements, expression, index) {=0A=
    if (Object.isNumber(expression)) {=0A=
      index =3D expression; expression =3D false;=0A=
    }=0A=
    return Selector.matchElements(elements, expression || '*')[index || =
0];=0A=
  },=0A=
=0A=
  findChildElements: function(element, expressions) {=0A=
    expressions =3D Selector.split(expressions.join(','));=0A=
    var results =3D [], h =3D Selector.handlers;=0A=
    for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A=
      selector =3D new Selector(expressions[i].strip());=0A=
      h.concat(results, selector.findElements(element));=0A=
    }=0A=
    return (l > 1) ? h.unique(results) : results;=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.IE) {=0A=
  Object.extend(Selector.handlers, {=0A=
    // IE returns comment nodes on getElementsByTagName("*").=0A=
    // Filter them out.=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        if (node.tagName !=3D=3D "!") a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    // IE improperly serializes _countedByPrototype in (inner|outer)HTML.=0A=
    unmark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node.removeAttribute('_countedByPrototype');=0A=
      return nodes;=0A=
    }=0A=
  });=0A=
}=0A=
=0A=
function $$() {=0A=
  return Selector.findChildElements(document, $A(arguments));=0A=
}=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    $(form).reset();=0A=
    return form;=0A=
  },=0A=
=0A=
  serializeElements: function(elements, options) {=0A=
    if (typeof options !=3D 'object') options =3D { hash: !!options };=0A=
    else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A=
    var key, value, submitted =3D false, submit =3D options.submit;=0A=
=0A=
    var data =3D elements.inject({ }, function(result, element) {=0A=
      if (!element.disabled && element.name) {=0A=
        key =3D element.name; value =3D $(element).getValue();=0A=
        if (value !=3D null && (element.type !=3D 'submit' || =
(!submitted &&=0A=
            submit !=3D=3D false && (!submit || key =3D=3D submit) && =
(submitted =3D true)))) {=0A=
          if (key in result) {=0A=
            // a key is already present; construct an array of values=0A=
            if (!Object.isArray(result[key])) result[key] =3D =
[result[key]];=0A=
            result[key].push(value);=0A=
          }=0A=
          else result[key] =3D value;=0A=
        }=0A=
      }=0A=
      return result;=0A=
    });=0A=
=0A=
    return options.hash ? data : Object.toQueryString(data);=0A=
  }=0A=
};=0A=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form, options) {=0A=
    return Form.serializeElements(Form.getElements(form), options);=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    return $A($(form).getElementsByTagName('*')).inject([],=0A=
      function(elements, child) {=0A=
        if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A=
          elements.push(Element.extend(child));=0A=
        return elements;=0A=
      }=0A=
    );=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name) return $A(inputs).map(Element.extend);=0A=
=0A=
    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))=0A=
        continue;=0A=
      matchingInputs.push(Element.extend(input));=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('disable');=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('enable');=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    var elements =3D $(form).getElements().findAll(function(element) {=0A=
      return 'hidden' !=3D element.type && !element.disabled;=0A=
    });=0A=
    var firstByIndex =3D elements.findAll(function(element) {=0A=
      return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A=
    }).sortBy(function(element) { return element.tabIndex }).first();=0A=
=0A=
    return firstByIndex ? firstByIndex : elements.find(function(element) =
{=0A=
      return ['input', 'select', =
'textarea'].include(element.tagName.toLowerCase());=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    form =3D $(form);=0A=
    form.findFirstElement().activate();=0A=
    return form;=0A=
  },=0A=
=0A=
  request: function(form, options) {=0A=
    form =3D $(form), options =3D Object.clone(options || { });=0A=
=0A=
    var params =3D options.parameters, action =3D =
form.readAttribute('action') || '';=0A=
    if (action.blank()) action =3D window.location.href;=0A=
    options.parameters =3D form.serialize(true);=0A=
=0A=
    if (params) {=0A=
      if (Object.isString(params)) params =3D params.toQueryParams();=0A=
      Object.extend(options.parameters, params);=0A=
    }=0A=
=0A=
    if (form.hasAttribute('method') && !options.method)=0A=
      options.method =3D form.method;=0A=
=0A=
    return new Ajax.Request(action, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element =3D {=0A=
  focus: function(element) {=0A=
    $(element).focus();=0A=
    return element;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    $(element).select();=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Form.Element.Methods =3D {=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element.disabled && element.name) {=0A=
      var value =3D element.getValue();=0A=
      if (value !=3D undefined) {=0A=
        var pair =3D { };=0A=
        pair[element.name] =3D value;=0A=
        return Object.toQueryString(pair);=0A=
      }=0A=
    }=0A=
    return '';=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    return Form.Element.Serializers[method](element);=0A=
  },=0A=
=0A=
  setValue: function(element, value) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    Form.Element.Serializers[method](element, value);=0A=
    return element;=0A=
  },=0A=
=0A=
  clear: function(element) {=0A=
    $(element).value =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  present: function(element) {=0A=
    return $(element).value !=3D '';=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    try {=0A=
      element.focus();=0A=
      if (element.select && (element.tagName.toLowerCase() !=3D 'input' =
||=0A=
          !['button', 'reset', 'submit'].include(element.type)))=0A=
        element.select();=0A=
    } catch (e) { }=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.blur();=0A=
    element.disabled =3D true;=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D false;=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Field =3D Form.Element;=0A=
var $F =3D Form.Element.Methods.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element.Serializers =3D {=0A=
  input: function(element, value) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return Form.Element.Serializers.inputSelector(element, value);=0A=
      default:=0A=
        return Form.Element.Serializers.textarea(element, value);=0A=
    }=0A=
  },=0A=
=0A=
  inputSelector: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.checked ? =
element.value : null;=0A=
    else element.checked =3D !!value;=0A=
  },=0A=
=0A=
  textarea: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.value;=0A=
    else element.value =3D value;=0A=
  },=0A=
=0A=
  select: function(element, index) {=0A=
    if (Object.isUndefined(index))=0A=
      return this[element.type =3D=3D 'select-one' ?=0A=
        'selectOne' : 'selectMany'](element);=0A=
    else {=0A=
      var opt, value, single =3D !Object.isArray(index);=0A=
      for (var i =3D 0, length =3D element.length; i < length; i++) {=0A=
        opt =3D element.options[i];=0A=
        value =3D this.optionValue(opt);=0A=
        if (single) {=0A=
          if (value =3D=3D index) {=0A=
            opt.selected =3D true;=0A=
            return;=0A=
          }=0A=
        }=0A=
        else opt.selected =3D index.include(value);=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  selectOne: function(element) {=0A=
    var index =3D element.selectedIndex;=0A=
    return index >=3D 0 ? this.optionValue(element.options[index]) : =
null;=0A=
  },=0A=
=0A=
  selectMany: function(element) {=0A=
    var values, length =3D element.length;=0A=
    if (!length) return null;=0A=
=0A=
    for (var i =3D 0, values =3D []; i < length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected) values.push(this.optionValue(opt));=0A=
    }=0A=
    return values;=0A=
  },=0A=
=0A=
  optionValue: function(opt) {=0A=
    // extend element because hasAttribute may not be native=0A=
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A=
  initialize: function($super, element, frequency, callback) {=0A=
    $super(callback, frequency);=0A=
    this.element   =3D $(element);=0A=
    this.lastValue =3D this.getValue();=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    var value =3D this.getValue();=0A=
    if (Object.isString(this.lastValue) && Object.isString(value) ?=0A=
        this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value)) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D Class.create({=0A=
  initialize: function(element, callback) {=0A=
    this.element  =3D $(element);=0A=
    this.callback =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A=
      this.registerFormCallbacks();=0A=
    else=0A=
      this.registerCallback(this.element);=0A=
  },=0A=
=0A=
  onElementEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  },=0A=
=0A=
  registerFormCallbacks: function() {=0A=
    Form.getElements(this.element).each(this.registerCallback, this);=0A=
  },=0A=
=0A=
  registerCallback: function(element) {=0A=
    if (element.type) {=0A=
      switch (element.type.toLowerCase()) {=0A=
        case 'checkbox':=0A=
        case 'radio':=0A=
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
        default:=0A=
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
if (!window.Event) var Event =3D { };=0A=
=0A=
Object.extend(Event, {=0A=
  KEY_BACKSPACE: 8,=0A=
  KEY_TAB:       9,=0A=
  KEY_RETURN:   13,=0A=
  KEY_ESC:      27,=0A=
  KEY_LEFT:     37,=0A=
  KEY_UP:       38,=0A=
  KEY_RIGHT:    39,=0A=
  KEY_DOWN:     40,=0A=
  KEY_DELETE:   46,=0A=
  KEY_HOME:     36,=0A=
  KEY_END:      35,=0A=
  KEY_PAGEUP:   33,=0A=
  KEY_PAGEDOWN: 34,=0A=
  KEY_INSERT:   45,=0A=
=0A=
  cache: { },=0A=
=0A=
  relatedTarget: function(event) {=0A=
    var element;=0A=
    switch(event.type) {=0A=
      case 'mouseover': element =3D event.fromElement; break;=0A=
      case 'mouseout':  element =3D event.toElement;   break;=0A=
      default: return null;=0A=
    }=0A=
    return Element.extend(element);=0A=
  }=0A=
});=0A=
=0A=
Event.Methods =3D (function() {=0A=
  var isButton;=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A=
    isButton =3D function(event, code) {=0A=
      return event.button =3D=3D buttonMap[code];=0A=
    };=0A=
=0A=
  } else if (Prototype.Browser.WebKit) {=0A=
    isButton =3D function(event, code) {=0A=
      switch (code) {=0A=
        case 0: return event.which =3D=3D 1 && !event.metaKey;=0A=
        case 1: return event.which =3D=3D 1 && event.metaKey;=0A=
        default: return false;=0A=
      }=0A=
    };=0A=
=0A=
  } else {=0A=
    isButton =3D function(event, code) {=0A=
      return event.which ? (event.which =3D=3D=3D code + 1) : =
(event.button =3D=3D=3D code);=0A=
    };=0A=
  }=0A=
=0A=
  return {=0A=
    isLeftClick:   function(event) { return isButton(event, 0) },=0A=
    isMiddleClick: function(event) { return isButton(event, 1) },=0A=
    isRightClick:  function(event) { return isButton(event, 2) },=0A=
=0A=
    element: function(event) {=0A=
      var node =3D Event.extend(event).target;=0A=
      return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? =
node.parentNode : node);=0A=
    },=0A=
=0A=
    findElement: function(event, expression) {=0A=
      var element =3D Event.element(event);=0A=
      if (!expression) return element;=0A=
      var elements =3D [element].concat(element.ancestors());=0A=
      return Selector.findElement(elements, expression, 0);=0A=
    },=0A=
=0A=
    pointer: function(event) {=0A=
      return {=0A=
        x: event.pageX || (event.clientX +=0A=
          (document.documentElement.scrollLeft || =
document.body.scrollLeft)),=0A=
        y: event.pageY || (event.clientY +=0A=
          (document.documentElement.scrollTop || =
document.body.scrollTop))=0A=
      };=0A=
    },=0A=
=0A=
    pointerX: function(event) { return Event.pointer(event).x },=0A=
    pointerY: function(event) { return Event.pointer(event).y },=0A=
=0A=
    stop: function(event) {=0A=
      Event.extend(event);=0A=
      event.preventDefault();=0A=
      event.stopPropagation();=0A=
      event.stopped =3D true;=0A=
    }=0A=
  };=0A=
})();=0A=
=0A=
Event.extend =3D (function() {=0A=
  var methods =3D Object.keys(Event.Methods).inject({ }, function(m, =
name) {=0A=
    m[name] =3D Event.Methods[name].methodize();=0A=
    return m;=0A=
  });=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    Object.extend(methods, {=0A=
      stopPropagation: function() { this.cancelBubble =3D true },=0A=
      preventDefault:  function() { this.returnValue =3D false },=0A=
      inspect: function() { return "[object Event]" }=0A=
    });=0A=
=0A=
    return function(event) {=0A=
      if (!event) return false;=0A=
      if (event._extendedByPrototype) return event;=0A=
=0A=
      event._extendedByPrototype =3D Prototype.emptyFunction;=0A=
      var pointer =3D Event.pointer(event);=0A=
      Object.extend(event, {=0A=
        target: event.srcElement,=0A=
        relatedTarget: Event.relatedTarget(event),=0A=
        pageX:  pointer.x,=0A=
        pageY:  pointer.y=0A=
      });=0A=
      return Object.extend(event, methods);=0A=
    };=0A=
=0A=
  } else {=0A=
    Event.prototype =3D Event.prototype || =
document.createEvent("HTMLEvents").__proto__;=0A=
    Object.extend(Event.prototype, methods);=0A=
    return Prototype.K;=0A=
  }=0A=
})();=0A=
=0A=
Object.extend(Event, (function() {=0A=
  var cache =3D Event.cache;=0A=
=0A=
  function getEventID(element) {=0A=
    if (element._prototypeEventID) return element._prototypeEventID[0];=0A=
    arguments.callee.id =3D arguments.callee.id || 1;=0A=
    return element._prototypeEventID =3D [++arguments.callee.id];=0A=
  }=0A=
=0A=
  function getDOMEventName(eventName) {=0A=
    if (eventName && eventName.include(':')) return "dataavailable";=0A=
    return eventName;=0A=
  }=0A=
=0A=
  function getCacheForID(id) {=0A=
    return cache[id] =3D cache[id] || { };=0A=
  }=0A=
=0A=
  function getWrappersForEventName(id, eventName) {=0A=
    var c =3D getCacheForID(id);=0A=
    return c[eventName] =3D c[eventName] || [];=0A=
  }=0A=
=0A=
  function createWrapper(element, eventName, handler) {=0A=
    var id =3D getEventID(element);=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    if (c.pluck("handler").include(handler)) return false;=0A=
=0A=
    var wrapper =3D function(event) {=0A=
      if (!Event || !Event.extend ||=0A=
        (event.eventName && event.eventName !=3D eventName))=0A=
          return false;=0A=
=0A=
      Event.extend(event);=0A=
      handler.call(element, event);=0A=
    };=0A=
=0A=
    wrapper.handler =3D handler;=0A=
    c.push(wrapper);=0A=
    return wrapper;=0A=
  }=0A=
=0A=
  function findWrapper(id, eventName, handler) {=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    return c.find(function(wrapper) { return wrapper.handler =3D=3D =
handler });=0A=
  }=0A=
=0A=
  function destroyWrapper(id, eventName, handler) {=0A=
    var c =3D getCacheForID(id);=0A=
    if (!c[eventName]) return false;=0A=
    c[eventName] =3D c[eventName].without(findWrapper(id, eventName, =
handler));=0A=
  }=0A=
=0A=
  function destroyCache() {=0A=
    for (var id in cache)=0A=
      for (var eventName in cache[id])=0A=
        cache[id][eventName] =3D null;=0A=
  }=0A=
=0A=
  if (window.attachEvent) {=0A=
    window.attachEvent("onunload", destroyCache);=0A=
  }=0A=
=0A=
  return {=0A=
    observe: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var name =3D getDOMEventName(eventName);=0A=
=0A=
      var wrapper =3D createWrapper(element, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.addEventListener) {=0A=
        element.addEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.attachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    stopObserving: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var id =3D getEventID(element), name =3D =
getDOMEventName(eventName);=0A=
=0A=
      if (!handler && eventName) {=0A=
        getWrappersForEventName(id, eventName).each(function(wrapper) {=0A=
          element.stopObserving(eventName, wrapper.handler);=0A=
        });=0A=
        return element;=0A=
=0A=
      } else if (!eventName) {=0A=
        Object.keys(getCacheForID(id)).each(function(eventName) {=0A=
          element.stopObserving(eventName);=0A=
        });=0A=
        return element;=0A=
      }=0A=
=0A=
      var wrapper =3D findWrapper(id, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.removeEventListener) {=0A=
        element.removeEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.detachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      destroyWrapper(id, eventName, handler);=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    fire: function(element, eventName, memo) {=0A=
      element =3D $(element);=0A=
      if (element =3D=3D document && document.createEvent && =
!element.dispatchEvent)=0A=
        element =3D document.documentElement;=0A=
=0A=
      var event;=0A=
      if (document.createEvent) {=0A=
        event =3D document.createEvent("HTMLEvents");=0A=
        event.initEvent("dataavailable", true, true);=0A=
      } else {=0A=
        event =3D document.createEventObject();=0A=
        event.eventType =3D "ondataavailable";=0A=
      }=0A=
=0A=
      event.eventName =3D eventName;=0A=
      event.memo =3D memo || { };=0A=
=0A=
      if (document.createEvent) {=0A=
        element.dispatchEvent(event);=0A=
      } else {=0A=
        element.fireEvent(event.eventType, event);=0A=
      }=0A=
=0A=
      return Event.extend(event);=0A=
    }=0A=
  };=0A=
})());=0A=
=0A=
Object.extend(Event, Event.Methods);=0A=
=0A=
Element.addMethods({=0A=
  fire:          Event.fire,=0A=
  observe:       Event.observe,=0A=
  stopObserving: Event.stopObserving=0A=
});=0A=
=0A=
Object.extend(document, {=0A=
  fire:          Element.Methods.fire.methodize(),=0A=
  observe:       Element.Methods.observe.methodize(),=0A=
  stopObserving: Element.Methods.stopObserving.methodize(),=0A=
  loaded:        false=0A=
});=0A=
=0A=
(function() {=0A=
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A=
     Matthias Miller, Dean Edwards and John Resig. */=0A=
=0A=
  var timer;=0A=
=0A=
  function fireContentLoadedEvent() {=0A=
    if (document.loaded) return;=0A=
    if (timer) window.clearInterval(timer);=0A=
    document.fire("dom:loaded");=0A=
    document.loaded =3D true;=0A=
  }=0A=
=0A=
  if (document.addEventListener) {=0A=
    if (Prototype.Browser.WebKit) {=0A=
      timer =3D window.setInterval(function() {=0A=
        if (/loaded|complete/.test(document.readyState))=0A=
          fireContentLoadedEvent();=0A=
      }, 0);=0A=
=0A=
      Event.observe(window, "load", fireContentLoadedEvent);=0A=
=0A=
    } else {=0A=
      document.addEventListener("DOMContentLoaded",=0A=
        fireContentLoadedEvent, false);=0A=
    }=0A=
=0A=
  } else {=0A=
    document.write("<script id=3D__onDOMContentLoaded defer =
src=3D//:><\/script>");=0A=
    $("__onDOMContentLoaded").onreadystatechange =3D function() {=0A=
      if (this.readyState =3D=3D "complete") {=0A=
        this.onreadystatechange =3D null;=0A=
        fireContentLoadedEvent();=0A=
      }=0A=
    };=0A=
  }=0A=
})();=0A=
/*------------------------------- DEPRECATED =
-------------------------------*/=0A=
=0A=
Hash.toQueryString =3D Object.toQueryString;=0A=
=0A=
var Toggle =3D { display: Element.toggle };=0A=
=0A=
Element.Methods.childOf =3D Element.Methods.descendantOf;=0A=
=0A=
var Insertion =3D {=0A=
  Before: function(element, content) {=0A=
    return Element.insert(element, {before:content});=0A=
  },=0A=
=0A=
  Top: function(element, content) {=0A=
    return Element.insert(element, {top:content});=0A=
  },=0A=
=0A=
  Bottom: function(element, content) {=0A=
    return Element.insert(element, {bottom:content});=0A=
  },=0A=
=0A=
  After: function(element, content) {=0A=
    return Element.insert(element, {after:content});=0A=
  }=0A=
};=0A=
=0A=
var $continue =3D new Error('"throw $continue" is deprecated, use =
"return" instead');=0A=
=0A=
// This should be moved to script.aculo.us; notice the deprecated methods=0A=
// further below, that map to the newer Element methods.=0A=
var Position =3D {=0A=
  // set to true if needed, warning: firefox performance problems=0A=
  // NOT neeeded for page scrolling, only if draggable contained in=0A=
  // scrollable elements=0A=
  includeScrollOffsets: false,=0A=
=0A=
  // must be called before calling withinIncludingScrolloffset, every =
time the=0A=
  // page is scrolled=0A=
  prepare: function() {=0A=
    this.deltaX =3D  window.pageXOffset=0A=
                || document.documentElement.scrollLeft=0A=
                || document.body.scrollLeft=0A=
                || 0;=0A=
    this.deltaY =3D  window.pageYOffset=0A=
                || document.documentElement.scrollTop=0A=
                || document.body.scrollTop=0A=
                || 0;=0A=
  },=0A=
=0A=
  // caches x/y coordinate pair to use with overlap=0A=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (y >=3D this.offset[1] &&=0A=
            y <  this.offset[1] + element.offsetHeight &&=0A=
            x >=3D this.offset[0] &&=0A=
            x <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  withinIncludingScrolloffsets: function(element, x, y) {=0A=
    var offsetcache =3D Element.cumulativeScrollOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  // within must be called directly before=0A=
  overlap: function(mode, element) {=0A=
    if (!mode) return 0;=0A=
    if (mode =3D=3D 'vertical')=0A=
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A=
        element.offsetHeight;=0A=
    if (mode =3D=3D 'horizontal')=0A=
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A=
        element.offsetWidth;=0A=
  },=0A=
=0A=
  // Deprecation layer -- use newer Element methods now (1.5.2).=0A=
=0A=
  cumulativeOffset: Element.Methods.cumulativeOffset,=0A=
=0A=
  positionedOffset: Element.Methods.positionedOffset,=0A=
=0A=
  absolutize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.absolutize(element);=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.relativize(element);=0A=
  },=0A=
=0A=
  realOffset: Element.Methods.cumulativeScrollOffset,=0A=
=0A=
  offsetParent: Element.Methods.getOffsetParent,=0A=
=0A=
  page: Element.Methods.viewportOffset,=0A=
=0A=
  clone: function(source, target, options) {=0A=
    options =3D options || { };=0A=
    return Element.clonePosition(target, source, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!document.getElementsByClassName) document.getElementsByClassName =
=3D function(instanceMethods){=0A=
  function iter(name) {=0A=
    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' =
" + name + " ')]";=0A=
  }=0A=
=0A=
  instanceMethods.getElementsByClassName =3D =
Prototype.BrowserFeatures.XPath ?=0A=
  function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') =
: iter(className);=0A=
    return cond ? document._getElementsByXPath('.//*' + cond, element) : =
[];=0A=
  } : function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var elements =3D [], classNames =3D (/\s/.test(className) ? =
$w(className) : null);=0A=
    if (!classNames && !className) return elements;=0A=
=0A=
    var nodes =3D $(element).getElementsByTagName('*');=0A=
    className =3D ' ' + className + ' ';=0A=
=0A=
    for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A=
      if (child.className && (cn =3D ' ' + child.className + ' ') && =
(cn.include(className) ||=0A=
          (classNames && classNames.all(function(name) {=0A=
            return !name.toString().blank() && cn.include(' ' + name + ' =
');=0A=
          }))))=0A=
        elements.push(Element.extend(child));=0A=
    }=0A=
    return elements;=0A=
  };=0A=
=0A=
  return function(className, parentElement) {=0A=
    return $(parentElement || =
document.body).getElementsByClassName(className);=0A=
  };=0A=
}(Element.Methods);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.ClassNames =3D Class.create();=0A=
Element.ClassNames.prototype =3D {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    this.element.className.split(/\s+/).select(function(name) {=0A=
      return name.length > 0;=0A=
    })._each(iterator);=0A=
  },=0A=
=0A=
  set: function(className) {=0A=
    this.element.className =3D className;=0A=
  },=0A=
=0A=
  add: function(classNameToAdd) {=0A=
    if (this.include(classNameToAdd)) return;=0A=
    this.set($A(this).concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set($A(this).without(classNameToRemove).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return $A(this).join(' ');=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.ClassNames.prototype, Enumerable);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.addMethods();
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/js/async.js

=EF=BB=BFfunction createHttpRequest() {
    var result =3D null;
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
        try {
            result =3D new XMLHttpRequest();
        } catch(e) {
            result =3D null;
        }
        // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
        try {
            result =3D new ActiveXObject("Msxml2.XMLHTTP");
        }=20
        catch(e) {
            try {
                result =3D new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                result =3D false;
            }
        }
    }
    return result;
}

function sendHttpRequest(url, postParams)
{
    var request =3D createHttpRequest();
    try {
      if (postParams) {
        request.open('POST', url, false);
        request.setRequestHeader("Content-type", =
"application/x-www-form-urlencoded");
        request.setRequestHeader("Content-length", postParams.length);
      } else { =20
        request.open('GET', url, false);=20
      }
      request.send(postParams);=20
      return request.responseText;
    }=20
    catch (e) {=20
      return "";=20
    }
}

function updateControlContent(id, uri, params) {
    var e =3D document.getElementById(id);
    if (e)
        e.innerHTML =3D sendHttpRequest(uri, params);
}


------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/js/common.js

=EF=BB=BF// JScript File

createDelegate =3D function Function$createDelegate(instance, method) {
    return function() {
        return method.apply(instance, arguments);
    }
}

function addEvent(obj, ename, func)
{
    var oldfunc =3D obj['on' + ename];
    if(typeof oldfunc !=3D 'function')
    {
        obj['on' + ename] =3D func;
    } else {
        obj['on' + ename] =3D function()
            {
                if(oldfunc)
                {
                    oldfunc.apply(obj, arguments);
                }
                func.apply(obj, arguments);
            };
    }
}

window.isloaded =3D false;

addEvent(window, 'load', function()
{
    window.isloaded =3D true;
});

function LoginHandler() {
    var btn =3D arguments[0];
    var formsauthurl =3D btn.params.formsauthurl;
    if(formsauthurl =3D=3D=3D undefined)
        throw "Missing parameter formsauthurl";
   =20
    if( (typeof Tops !=3D 'undefined') && =
Tops.AjaxLogin.LoginWindow.getInstance()) {
        Tops.AjaxLogin.LoginWindow.getInstance().show();
    } else {
        document.location =3D formsauthurl + '?ReturnUrl=3D' + =
escape(document.location);
    }
    return false;
}



















// TOPLET =
*************************************************************************=
****

var Toplet =3D function(elementid, params)
{
    this.element =3D document.getElementById(elementid);
    this.element.control =3D this;
   =20
    this.params =3D {};
    this.params.clearcache =3D false;
   =20
    this.params.urlparams =3D {};
   =20
    if(params !=3D=3D undefined)
    {
        for ( var name in params)
        {
            this.params[name] =3D params[name];
        }
    }
}

Toplet.prototype =3D {
    update : function()
    {
        var urlparams =3D {};
       =20
        for ( var name in this.params.urlparams)
        {
            urlparams[name] =3D this.params.urlparams[name];
        }
       =20
        if(arguments.length > 2)
        {
            var lparams =3D arguments[2];
            for ( var name in lparams)
            {
                urlparams[name] =3D lparams[name];
            }
        }
       =20
        if(arguments.length > 0)
        {
            urlparams['__EVENTTARGET'] =3D arguments[0];
            urlparams['__EVENTARGUMENT'] =3D arguments[1];
           =20
            this.params.clearcache =3D true;
        }
       =20
        var cmd =3D this.element.id.replace(/_ContentArea$/i, '');
        var cmd =3D 'update' + cmd;
        var urlparamstring =3D '';
       =20
        var separator =3D '';
        for ( var name in urlparams)
        {
            urlparamstring =3D urlparamstring + separator + name + '=3D' =
+ escape(urlparams[name]);
            separator =3D '&';
        }
        cmd =3D cmd + "('" + urlparamstring + "', " + =
this.params.clearcache + ");";
        eval( cmd);
    }
}



Toplet.Button =3D function(elementid, topletid, params )
{
    this.element =3D document.getElementById(elementid);
    this.element.control =3D this;
   =20
    this.toplet =3D document.getElementById(topletid);
    this.topletcontrol =3D this.toplet.control;
   =20
    this.params =3D {};
    this.params.eventarg =3D '';
   =20
    if(params !=3D=3D undefined)
    {
        for ( var name in params)
        {
            this.params[name] =3D params[name];
        }
    }
   =20
    this.element.onclick =3D createDelegate(this, this._onclick);
}

Toplet.Button.prototype =3D {

    _onclick : function( obj, ev )
    {
        var cancontinue =3D true;
       =20
        if(this.params['clickhandlers'] !=3D=3D undefined)
        {
            var handlers =3D this.params['clickhandlers'];
            for (var ca=3D0; handlers.length > ca; ca++ )
            {
                cancontinue =3D handlers[ca].apply(this, [ this ] );
                if(cancontinue =3D=3D false)
                    break;
            }
        }
       =20
        if(cancontinue =3D=3D true)
        {
            this.topletcontrol.update(this.element.id, =
this.params.eventarg);
        }
    }
}
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/Login/js/LoginWindow.js

=EF=BB=BF// JScript File

if(typeof Tops =3D=3D 'undefined')
    Tops =3D {};
if(typeof Tops.AjaxLogin =3D=3D 'undefined')
    Tops.AjaxLogin =3D {};
Tops.AjaxLogin.LoginWindow =3D {};

Tops.AjaxLogin.LoginWindow =3D function Tops$AjaxLogin$LoginWindow()
{
    this.debug =3D 0;
    this.state =3D 0;
    this.IE =3D document.all?true:false;
   =20
    this.params =3D {};
    this.views =3D {};

    this.loginWindow =3D null;
   =20
    this.mouseX =3D 0;
    this.mouseY =3D 0;
}


Tops.AjaxLogin.LoginWindow.getInstance =3D function =
Tops$AjaxLogin$LoginWindow$getInstance()
{
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return Tops.AjaxLogin.LoginWindow._instance || null;
}

Tops.AjaxLogin.LoginWindow._initialize =3D function =
Tops$AjaxLogin$LoginWindow$_initialize( windowid, params )
{
    if (Tops.AjaxLogin.LoginWindow.getInstance()) {
        throw Error('Instance Already Exists.  Cannot have multiple =
instances.');
    }
    Tops.AjaxLogin.LoginWindow._instance =3D new =
Tops.AjaxLogin.LoginWindow();
    var obj =3D Tops.AjaxLogin.LoginWindow.getInstance();
    obj._initializeInternal( windowid, params );
}


// -------------- Object Functions ----------------------

function Tops$AjaxLogin$LoginWindow$_initializeInternal(windowid, =
params)
{
    this.loginWindow =3D document.getElementById(windowid);
   =20
    for(k in params)
    {
        this.params[k] =3D params[k];
    }
   =20
    if(this.params.views =3D=3D undefined)
        throw "Missing views parameter.";
    if(this.params.views.login =3D=3D undefined)
        throw "Missing login View.";
       =20
    for(vname in this.params.views)
    {
        this.views[vname] =3D =
document.getElementById(this.params.views[vname]);
    }

    var MyObj =3D this;
    var IE =3D document.all?true:false;
    var agt=3Dnavigator.userAgent.toLowerCase();
    var firefox =3D false;
    if (agt.indexOf("firefox") !=3D -1)
        firefox =3D true;
   =20
    if (!IE && !firefox )
        document.captureEvents(Event.MOUSEMOVE)
    document.onmousemove =3D function(e) {
        return MyObj._captureMouseMove.call(MyObj, e);
    }
}

function Tops$AjaxLogin$LoginWindow$prototype$show(view, location)
{
    if( view =3D=3D undefined || view =3D=3D=3D '')
        view =3D 'login';
    this.showView(view);
   =20
    if(location) {
        if(location =3D=3D 'window')
            this.positionInWindow();
   =20
    } else {
        this.positionOnMouse();
    }

    this.loginWindow.style.display =3D 'inline';
}

function Tops$AjaxLogin$LoginWindow$prototype$showView(viewname)
{
    for(vname in this.views)
    {
        var v =3D this.views[vname];
        if(vname =3D=3D=3D viewname)
        {
            v.style.display =3D '';
        }
        else
        {
            v.style.display =3D 'none';
        }
    }
}

function Tops$AjaxLogin$LoginWindow$prototype$hide()
{
    this.loginWindow.style.display =3D 'none';
}

function Tops$AjaxLogin$LoginWindow$prototype$HttpRequest(url, write)
{
    var req =3D false;
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
            try {
                            req =3D new XMLHttpRequest();
            } catch(e) {
                            req =3D false;
            }
        // branch for IE/Windows ActiveX version
        } else if(window.ActiveXObject) {
            try {
                    req =3D new ActiveXObject("Msxml2.XMLHTTP");
                  =20
            } catch(e) {
                    try {
                            req =3D new =
ActiveXObject("Microsoft.XMLHTTP");
                    } catch(e) {
                            req =3D false;
                    }
                    }
        }
       =20
        try {
          req.open('GET', url, false);=20
          req.send(null);=20
          if (write)
            document.write(req.responseText);=20
          return req.responseText;
        =20
        }=20
        catch (e) {=20
          return "";=20
         =20
        }
}

function Tops$AjaxLogin$LoginWindow$prototype$_captureMouseMove( e )
{
    if (this.IE) { // grab the x-y pos.s if browser is IE
        this.mouseX =3D event.clientX;
        this.mouseY =3D event.clientY;
    }
    else if(e.clientY) {
        this.mouseX =3D e.clientX;
        this.mouseY =3D e.clientY;
    }
    else {  // grab the x-y pos.s if browser is NS
        this.mouseX =3D e.pageX;
        this.mouseY =3D e.pageY;
    } =20
    if (this.mouseX < 0){this.mouseX =3D 0;}
    if (this.mouseY < 0){this.mouseY =3D 0;}
}

function Tops$AjaxLogin$LoginWindow$prototype$positionOnMouse()
{
    if(this.loginWindow){
        var w =3D getWindowInfo();
       =20
        this.loginWindow.style.display =3D 'inline';
        var width =3D 0;
        var height =3D 0;
        if(this.loginWindow.offsetWidth) {
            width =3D this.loginWindow.offsetWidth;
            height =3D this.loginWindow.offsetHeight;
        } else if(this.loginWindow.style.pixelWidth) {
            width =3D this.loginWindow.style.pixelWidth;
            height =3D this.loginWindow.style.pixelHeight;
        }
        if(this.debug) {
            alert("Width: " + width + "\t\tHeight: " + height + "\n" +
            "Window Width: " + w.width + "\t\tHeight: " + w.height + =
"\n" +
            "Window ScrollX: " + w.scrollX + "\t\tScrollY: " + w.scrollY =
+ "\n" +
            "Mouse X: " + this.mouseX + "\t\tY: " + this.mouseY
            );
        }
       =20
        this.loginWindow.style.display =3D 'none';
       =20
        var dt =3D parseInt(this.mouseY);
        var db =3D w.height - parseInt(this.mouseY)
        var dl =3D parseInt(this.mouseX);
        var dr =3D w.width - parseInt(this.mouseX);
       =20
        if( db >=3D height && dr >=3D width){
            this.loginWindow.style.top =3D (parseInt(this.mouseY) + =
w.scrollY) + "px";
            this.loginWindow.style.left =3D (parseInt(this.mouseX) + =
w.scrollX) + "px";
        } else if( dt >=3D height && dr >=3D width){
            this.loginWindow.style.top =3D (parseInt(this.mouseY) + =
w.scrollY - height) + "px";
            this.loginWindow.style.left =3D (parseInt(this.mouseX) + =
w.scrollX) + "px";
        } else if( db >=3D height && dl >=3D width){
            this.loginWindow.style.top =3D (parseInt(this.mouseY) + =
w.scrollY) + "px";
            this.loginWindow.style.left =3D (parseInt(this.mouseX) + =
w.scrollX - width) + "px";
        } else if( dt >=3D height && dl >=3D width){
            this.loginWindow.style.top =3D (parseInt(this.mouseY) + =
w.scrollY - height) + "px";
            this.loginWindow.style.left =3D (parseInt(this.mouseX) + =
w.scrollX - width) + "px";
        } else {
            this.loginWindow.style.top =3D (parseInt(this.mouseY) + =
w.scrollY) + "px";
            this.loginWindow.style.left =3D (parseInt(this.mouseX) + =
w.scrollX) + "px";
        }
    }

}

function Tops$AjaxLogin$LoginWindow$prototype$positionInWindow()
{
    if(this.loginWindow){
        var w =3D getWindowInfo();
       =20
        this.loginWindow.style.display =3D 'inline';
       =20
        var width =3D 0;
        var height =3D 0;
        if(this.loginWindow.offsetWidth) {
            width =3D this.loginWindow.offsetWidth;
            height =3D this.loginWindow.offsetHeight;
        } else if(this.loginWindow.style.pixelWidth) {
            width =3D this.loginWindow.style.pixelWidth;
            height =3D this.loginWindow.style.pixelHeight;
        }
       =20
        this.loginWindow.style.top =3D ((w.height / 2) - =
(parseInt(height)/2) + w.scrollY) + "px";
        this.loginWindow.style.left =3D ((w.width / 2) - =
(parseInt(width)/2) + w.scrollX) + "px";
       =20
    }
}

function Tops$AjaxLogin$LoginWindow$prototype$showRecovery()
{
    this.showView('resetpassword');
}

function Tops$AjaxLogin$LoginWindow$prototype$createUser(url)
{
    if(typeof(Tops.AjaxLogin.RegisterUserWindow) !=3D=3D 'undefined' && =
Tops.AjaxLogin.RegisterUserWindow.getInstance())
    {
        Tops.AjaxLogin.RegisterUserWindow.getInstance().open();
        this.hide();
    } else
    {
        document.location.href =3D url;
    }
}

// ------------ Register Prototypes ----------------------

Tops.AjaxLogin.LoginWindow.prototype =3D {
    _initializeInternal: Tops$AjaxLogin$LoginWindow$_initializeInternal,
    show: Tops$AjaxLogin$LoginWindow$prototype$show,
    showView: Tops$AjaxLogin$LoginWindow$prototype$showView,
    hide: Tops$AjaxLogin$LoginWindow$prototype$hide,
    _HttpRequest:Tops$AjaxLogin$LoginWindow$prototype$HttpRequest,
    _captureMouseMove: =
Tops$AjaxLogin$LoginWindow$prototype$_captureMouseMove,
    positionOnMouse: =
Tops$AjaxLogin$LoginWindow$prototype$positionOnMouse,
    positionInWindow: =
Tops$AjaxLogin$LoginWindow$prototype$positionInWindow,
    showRecovery: Tops$AjaxLogin$LoginWindow$prototype$showRecovery,
    createUser: Tops$AjaxLogin$LoginWindow$prototype$createUser

};




// -------------- Generic functions -----------------------

function getWindowInfo()
{
  var o =3D new Object();
 =20
  // Window Width and Height =20
  if( document.documentElement && ( document.documentElement.clientWidth =
|| document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    o.width =3D document.documentElement.clientWidth;
    o.height =3D document.documentElement.clientHeight;
  } else if( typeof( window.innerWidth ) =3D=3D 'number' ) {
    //Non-IE
    o.width =3D window.innerWidth;
    o.height =3D window.innerHeight;
  } else if( document.body && ( document.body.clientWidth || =
document.body.clientHeight ) ) {
    //IE 4 compatible
    o.width =3D document.body.clientWidth;
    o.height =3D document.body.clientHeight;
  }

  // Scroll
  if( typeof( window.pageYOffset ) =3D=3D 'number' ) {
    //Netscape compliant
    o.scrollY =3D window.pageYOffset;
    o.scrollX =3D window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || =
document.body.scrollTop ) ) {
    //DOM compliant
    o.scrollY =3D document.body.scrollTop;
    o.scrollX =3D document.body.scrollLeft;
  } else if( document.documentElement && ( =
document.documentElement.scrollLeft || =
document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    o.scrollY =3D document.documentElement.scrollTop;
    o.scrollX =3D document.documentElement.scrollLeft;
  } else {
    o.scrollY =3D 0;
    o.scrollX =3D 0;
  }


  return o;
}

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/Login/js/RegisterUserWindow.js

=EF=BB=BF// JScript File

if(typeof(Tops) =3D=3D=3D 'undefined')
    Tops =3D {};
if(typeof Tops.AjaxLogin =3D=3D 'undefined')
    Tops.AjaxLogin =3D {};
Tops.AjaxLogin.RegisterUserWindow =3D {};


Tops.AjaxLogin.RegisterUserWindow =3D function =
Tops$AjaxLogin$RegisterUserWindow()
{
    this.debug =3D 0;
    this.state =3D 0;
    this.IE =3D document.all?true:false;

    this.RegisterUserWindow =3D null;
    this.resetPasswordLayer =3D null;
   =20
    this.bodyUniqueId =3D undefined;
    this.body =3D null;
   =20
    this.IsUserCreated =3D false;
}


Tops.AjaxLogin.RegisterUserWindow.getInstance =3D function =
Tops$AjaxLogin$RegisterUserWindow$getInstance()
{
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return Tops.AjaxLogin.RegisterUserWindow._instance || null;
}

Tops.AjaxLogin.RegisterUserWindow._initialize =3D function =
Tops$AjaxLogin$RegisterUserWindow$_initialize( windowid, properties )
{
    if (Tops.AjaxLogin.RegisterUserWindow.getInstance()) {
        throw Error('Instance Already Exists.  Cannot have multiple =
instances.');
    }
    Tops.AjaxLogin.RegisterUserWindow._instance =3D new =
Tops.AjaxLogin.RegisterUserWindow();
    var obj =3D Tops.AjaxLogin.RegisterUserWindow.getInstance();
   =20
    for (var name in properties)
    {
        var val =3D properties[name];
        obj[name] =3D val;
    }
   =20
    obj._initializeInternal( windowid );
}


// -------------- Object Functions ----------------------

function Tops$AjaxLogin$RegisterUserWindow$_initializeInternal(windowid)
{
    this.RegisterUserWindow =3D document.getElementById(windowid);

    if((this.bodyUniqueId !=3D=3D undefined))
    {
        this.body =3D document.getElementById(this.bodyUniqueId);
    }
}

function Tops$AjaxLogin$RegisterUserWindow$prototype$open(location)
{
    var winfo =3D getWindowInfo();
   =20
    this.RegisterUserWindow.style.width =3D (winfo.width - 100) + "px";
    this.RegisterUserWindow.style.height =3D (winfo.height - 100) + =
"px";
    this.positionWindow();

    if(this.state =3D=3D=3D 0){
        var iframestr =3D '<iframe border=3D"0" id=3D"'+ this.body.id =
+'_iframe" frameborder=3D"0" src=3D"/toplets/login/RegisterUser.aspx" =
width=3D"100%" height=3D"100%"></iframe>';
        this.body.innerHTML =3D iframestr;
   =20
//        if(document.createElement) {
//            try {
//                var tempiframe=3Ddocument.createElement('iframe');
//                tempiframe.style.border=3D'0px';
//                tempiframe.style.height=3D'100%';
//                tempiframe.style.width=3D'100%';
//                tempiframe.src =3D "/toplets/login/RegisterUser.aspx";
//                this.body.appendChild(tempiframe);
//                this.state =3D 1;
//            } catch(exception) {
//            }
//        }
    }
//    if(location) {
//        if(location =3D=3D 'window')
//            this.positionWindow();
//   =20
//    } else
//        this.positionOnMouse();

    this.RegisterUserWindow.style.display =3D 'block';
}

function Tops$AjaxLogin$RegisterUserWindow$prototype$close()
{
    if(this.IsUserCreated =3D=3D=3D true)
    {
        document.location.reload(true);
    }
   =20
    this.RegisterUserWindow.style.display =3D 'none';
}

function Tops$AjaxLogin$RegisterUserWindow$prototype$positionWindow()
{
    if(this.RegisterUserWindow){
        var w =3D getWindowInfo();
       =20
        this.RegisterUserWindow.style.top =3D (((w.height - =
this.RegisterUserWindow.style.height.replace('px','')) / 2) + w.scrollY) =
+ "px";
        this.RegisterUserWindow.style.left =3D (((w.width - =
this.RegisterUserWindow.style.width.replace('px','')) / 2) + w.scrollX) =
+ "px";
//       =20
//        this.RegisterUserWindow.style.display =3D 'inline';
//       =20
//        var width =3D 0;
//        var height =3D 0;
//        if(this.RegisterUserWindow.offsetWidth) {
//            width =3D this.RegisterUserWindow.offsetWidth;
//            height =3D this.RegisterUserWindow.offsetHeight;
//        } else if(this.RegisterUserWindow.style.pixelWidth) {
//            width =3D this.RegisterUserWindow.style.pixelWidth;
//            height =3D this.RegisterUserWindow.style.pixelHeight;
//        }
//       =20
//        this.RegisterUserWindow.style.top =3D ((w.height / 2) - =
(parseInt(height)/2) + w.scrollY) + "px";
//        this.RegisterUserWindow.style.left =3D ((w.width / 2) - =
(parseInt(width)/2) + w.scrollX) + "px";
       =20
    }
}

function Tops$AjaxLogin$RegisterUserWindow$prototype$userCreated( =
hasCreated)
{
    if(!hasCreated)
    {
        hasCreated =3D true;
    }
   =20
    if(hasCreated =3D=3D=3D true)
    {
        this.IsUserCreated =3D true;
    }
}

// ------------ Register Prototypes ----------------------

Tops.AjaxLogin.RegisterUserWindow.prototype =3D {
    _initializeInternal: =
Tops$AjaxLogin$RegisterUserWindow$_initializeInternal,
    open: Tops$AjaxLogin$RegisterUserWindow$prototype$open,
    close: Tops$AjaxLogin$RegisterUserWindow$prototype$close,
    positionWindow: =
Tops$AjaxLogin$RegisterUserWindow$prototype$positionWindow,
    userCreated: Tops$AjaxLogin$RegisterUserWindow$prototype$userCreated
};


// -------------- Generic functions -----------------------

function getWindowInfo()
{
  var o =3D new Object();
 =20
  // Window Width and Height =20
  if( document.documentElement && ( document.documentElement.clientWidth =
|| document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    o.width =3D document.documentElement.clientWidth;
    o.height =3D document.documentElement.clientHeight;
  } else if( typeof( window.innerWidth ) =3D=3D 'number' ) {
    //Non-IE
    o.width =3D window.innerWidth;
    o.height =3D window.innerHeight;
  } else if( document.body && ( document.body.clientWidth || =
document.body.clientHeight ) ) {
    //IE 4 compatible
    o.width =3D document.body.clientWidth;
    o.height =3D document.body.clientHeight;
  }

  // Scroll
  if( typeof( window.pageYOffset ) =3D=3D 'number' ) {
    //Netscape compliant
    o.scrollY =3D window.pageYOffset;
    o.scrollX =3D window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || =
document.body.scrollTop ) ) {
    //DOM compliant
    o.scrollY =3D document.body.scrollTop;
    o.scrollX =3D document.body.scrollLeft;
  } else if( document.documentElement && ( =
document.documentElement.scrollLeft || =
document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    o.scrollY =3D document.documentElement.scrollTop;
    o.scrollX =3D document.documentElement.scrollLeft;
  } else {
    o.scrollY =3D 0;
    o.scrollX =3D 0;
  }


  return o;
}
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/ScriptResource.axd?d=5FZOCDHh-hTyLb0ukVQZ-NihGLvasPffK9p8rnrXvVad0fEqTIJ2JHhgUwLh0AOJ1HaBoI5n4wxbN5lqXx3L2w2&t=633595190073246099

=EF=BB=BFvar Page_ValidationVer =3D "125";
var Page_IsValid =3D true;
var Page_BlockSubmit =3D false;
var Page_InvalidControlToBeFocused =3D null;
function ValidatorUpdateDisplay(val) {
    if (typeof(val.display) =3D=3D "string") {
        if (val.display =3D=3D "None") {
            return;
        }
        if (val.display =3D=3D "Dynamic") {
            val.style.display =3D val.isvalid ? "none" : "inline";
            return;
        }
    }
    if ((navigator.userAgent.indexOf("Mac") > -1) &&
        (navigator.userAgent.indexOf("MSIE") > -1)) {
        val.style.display =3D "inline";
    }
    val.style.visibility =3D val.isvalid ? "hidden" : "visible";
}
function ValidatorUpdateIsValid() {
    Page_IsValid =3D AllValidatorsValid(Page_Validators);
}
function AllValidatorsValid(validators) {
    if ((typeof(validators) !=3D "undefined") && (validators !=3D null)) =
{
        var i;
        for (i =3D 0; i < validators.length; i++) {
            if (!validators[i].isvalid) {
                return false;
            }
        }
    }
    return true;
}
function ValidatorHookupControlID(controlID, val) {
    if (typeof(controlID) !=3D "string") {
        return;
    }
    var ctrl =3D document.getElementById(controlID);
    if ((typeof(ctrl) !=3D "undefined") && (ctrl !=3D null)) {
        ValidatorHookupControl(ctrl, val);
    }
    else {
        val.isvalid =3D true;
        val.enabled =3D false;
    }
}
function ValidatorHookupControl(control, val) {
    if (typeof(control.tagName) !=3D "string") {
        return; =20
    }
    if (control.tagName !=3D "INPUT" && control.tagName !=3D "TEXTAREA" =
&& control.tagName !=3D "SELECT") {
        var i;
        for (i =3D 0; i < control.childNodes.length; i++) {
            ValidatorHookupControl(control.childNodes[i], val);
        }
        return;
    }
    else {
        if (typeof(control.Validators) =3D=3D "undefined") {
            control.Validators =3D new Array;
            var eventType;
            if (control.type =3D=3D "radio") {
                eventType =3D "onclick";
            } else {
                eventType =3D "onchange";
                if (typeof(val.focusOnError) =3D=3D "string" && =
val.focusOnError =3D=3D "t") {
                    ValidatorHookupEvent(control, "onblur", =
"ValidatedControlOnBlur(event); ");
                }
            }
            ValidatorHookupEvent(control, eventType, =
"ValidatorOnChange(event); ");
            if (control.type =3D=3D "text" ||
                control.type =3D=3D "password" ||
                control.type =3D=3D "file") {
                ValidatorHookupEvent(control, "onkeypress",=20
                    "if (!ValidatedTextBoxOnKeyPress(event)) { =
event.cancelBubble =3D true; if (event.stopPropagation) =
event.stopPropagation(); return false; } ");
            }
        }
        control.Validators[control.Validators.length] =3D val;
    }
}
function ValidatorHookupEvent(control, eventType, functionPrefix) {
    var ev;
    eval("ev =3D control." + eventType + ";");
    if (typeof(ev) =3D=3D "function") {
        ev =3D ev.toString();
        ev =3D ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}"));
    }
    else {
        ev =3D "";
    }
    var func;
    if (navigator.appName.toLowerCase().indexOf('explorer') > -1) {
        func =3D new Function(functionPrefix + " " + ev);
    }
    else {
        func =3D new Function("event", functionPrefix + " " + ev);
    }
    eval("control." + eventType + " =3D func;");
}
function ValidatorGetValue(id) {
    var control;
    control =3D document.getElementById(id);
    if (typeof(control.value) =3D=3D "string") {
        return control.value;
    }
    return ValidatorGetValueRecursive(control);
}
function ValidatorGetValueRecursive(control)
{
    if (typeof(control.value) =3D=3D "string" && (control.type !=3D =
"radio" || control.checked =3D=3D true)) {
        return control.value;
    }
    var i, val;
    for (i =3D 0; i<control.childNodes.length; i++) {
        val =3D ValidatorGetValueRecursive(control.childNodes[i]);
        if (val !=3D "") return val;
    }
    return "";
}
function Page_ClientValidate(validationGroup) {
    Page_InvalidControlToBeFocused =3D null;
    if (typeof(Page_Validators) =3D=3D "undefined") {
        return true;
    }
    var i;
    for (i =3D 0; i < Page_Validators.length; i++) {
        ValidatorValidate(Page_Validators[i], validationGroup, null);
    }
    ValidatorUpdateIsValid();
    ValidationSummaryOnSubmit(validationGroup);
    Page_BlockSubmit =3D !Page_IsValid;
    return Page_IsValid;
}
function ValidatorCommonOnSubmit() {
    Page_InvalidControlToBeFocused =3D null;
    var result =3D !Page_BlockSubmit;
    if ((typeof(window.event) !=3D "undefined") && (window.event !=3D =
null)) {
        window.event.returnValue =3D result;
    }
    Page_BlockSubmit =3D false;
    return result;
}
function ValidatorEnable(val, enable) {
    val.enabled =3D (enable !=3D false);
    ValidatorValidate(val);
    ValidatorUpdateIsValid();
}
function ValidatorOnChange(event) {
    if (!event) {
        event =3D window.event;
    }
    Page_InvalidControlToBeFocused =3D null;
    var targetedControl;
    if ((typeof(event.srcElement) !=3D "undefined") && (event.srcElement =
!=3D null)) {
        targetedControl =3D event.srcElement;
    }
    else {
        targetedControl =3D event.target;
    }
    var vals;
    if (typeof(targetedControl.Validators) !=3D "undefined") {
        vals =3D targetedControl.Validators;
    }
    else {
        if (targetedControl.tagName.toLowerCase() =3D=3D "label") {
            targetedControl =3D =
document.getElementById(targetedControl.htmlFor);
            vals =3D targetedControl.Validators;
        }
    }
    var i;
    for (i =3D 0; i < vals.length; i++) {
        ValidatorValidate(vals[i], null, event);
    }
    ValidatorUpdateIsValid();
}
function ValidatedTextBoxOnKeyPress(event) {
    if (event.keyCode =3D=3D 13) {
        ValidatorOnChange(event);
        var vals;
        if ((typeof(event.srcElement) !=3D "undefined") && =
(event.srcElement !=3D null)) {
            vals =3D event.srcElement.Validators;
        }
        else {
            vals =3D event.target.Validators;
        }
        return AllValidatorsValid(vals);
    }
    return true;
}
function ValidatedControlOnBlur(event) {
    var control;
    if ((typeof(event.srcElement) !=3D "undefined") && (event.srcElement =
!=3D null)) {
        control =3D event.srcElement;
    }
    else {
        control =3D event.target;
    }
    if ((typeof(control) !=3D "undefined") && (control !=3D null) && =
(Page_InvalidControlToBeFocused =3D=3D control)) {
        control.focus();
        Page_InvalidControlToBeFocused =3D null;
    }
}
function ValidatorValidate(val, validationGroup, event) {
    val.isvalid =3D true;
    if ((typeof(val.enabled) =3D=3D "undefined" || val.enabled !=3D =
false) && IsValidationGroupMatch(val, validationGroup)) {
        if (typeof(val.evaluationfunction) =3D=3D "function") {
            val.isvalid =3D val.evaluationfunction(val);
            if (!val.isvalid && Page_InvalidControlToBeFocused =3D=3D =
null &&
                typeof(val.focusOnError) =3D=3D "string" && =
val.focusOnError =3D=3D "t") {
                ValidatorSetFocus(val, event);
            }
        }
    }
    ValidatorUpdateDisplay(val);
}
function ValidatorSetFocus(val, event) {
    var ctrl;
    if (typeof(val.controlhookup) =3D=3D "string") {
        var eventCtrl;
        if ((typeof(event) !=3D "undefined") && (event !=3D null)) {
            if ((typeof(event.srcElement) !=3D "undefined") && =
(event.srcElement !=3D null)) {
                eventCtrl =3D event.srcElement;
            }
            else {
                eventCtrl =3D event.target;
            }
        }
        if ((typeof(eventCtrl) !=3D "undefined") && (eventCtrl !=3D =
null) &&
            (typeof(eventCtrl.id) =3D=3D "string") &&
            (eventCtrl.id =3D=3D val.controlhookup)) {
            ctrl =3D eventCtrl;
        }
    }
    if ((typeof(ctrl) =3D=3D "undefined") || (ctrl =3D=3D null)) {
        ctrl =3D document.getElementById(val.controltovalidate);
    }
    if ((typeof(ctrl) !=3D "undefined") && (ctrl !=3D null) &&
        (ctrl.tagName.toLowerCase() !=3D "table" || (typeof(event) =
=3D=3D "undefined") || (event =3D=3D null)) &&=20
        ((ctrl.tagName.toLowerCase() !=3D "input") || =
(ctrl.type.toLowerCase() !=3D "hidden")) &&
        (typeof(ctrl.disabled) =3D=3D "undefined" || ctrl.disabled =
=3D=3D null || ctrl.disabled =3D=3D false) &&
        (typeof(ctrl.visible) =3D=3D "undefined" || ctrl.visible =3D=3D =
null || ctrl.visible !=3D false) &&
        (IsInVisibleContainer(ctrl))) {
        if ((ctrl.tagName.toLowerCase() =3D=3D "table" && =
(typeof(__nonMSDOMBrowser) =3D=3D "undefined" || __nonMSDOMBrowser)) ||
            (ctrl.tagName.toLowerCase() =3D=3D "span")) {
            var inputElements =3D ctrl.getElementsByTagName("input");
            var lastInputElement  =3D inputElements[inputElements.length =
-1];
            if (lastInputElement !=3D null) {
                ctrl =3D lastInputElement;
            }
        }
        if (typeof(ctrl.focus) !=3D "undefined" && ctrl.focus !=3D null) =
{
            ctrl.focus();
            Page_InvalidControlToBeFocused =3D ctrl;
        }
    }
}
function IsInVisibleContainer(ctrl) {
    if (typeof(ctrl.style) !=3D "undefined" &&
        ( ( typeof(ctrl.style.display) !=3D "undefined" &&
            ctrl.style.display =3D=3D "none") ||
          ( typeof(ctrl.style.visibility) !=3D "undefined" &&
            ctrl.style.visibility =3D=3D "hidden") ) ) {
        return false;
    }
    else if (typeof(ctrl.parentNode) !=3D "undefined" &&
             ctrl.parentNode !=3D null &&
             ctrl.parentNode !=3D ctrl) {
        return IsInVisibleContainer(ctrl.parentNode);
    }
    return true;
}
function IsValidationGroupMatch(control, validationGroup) {
    if ((typeof(validationGroup) =3D=3D "undefined") || (validationGroup =
=3D=3D null)) {
        return true;
    }
    var controlGroup =3D "";
    if (typeof(control.validationGroup) =3D=3D "string") {
        controlGroup =3D control.validationGroup;
    }
    return (controlGroup =3D=3D validationGroup);
}
function ValidatorOnLoad() {
    if (typeof(Page_Validators) =3D=3D "undefined")
        return;
    var i, val;
    for (i =3D 0; i < Page_Validators.length; i++) {
        val =3D Page_Validators[i];
        if (typeof(val.evaluationfunction) =3D=3D "string") {
            eval("val.evaluationfunction =3D " + val.evaluationfunction =
+ ";");
        }
        if (typeof(val.isvalid) =3D=3D "string") {
            if (val.isvalid =3D=3D "False") {
                val.isvalid =3D false;
                Page_IsValid =3D false;
            }
            else {
                val.isvalid =3D true;
            }
        } else {
            val.isvalid =3D true;
        }
        if (typeof(val.enabled) =3D=3D "string") {
            val.enabled =3D (val.enabled !=3D "False");
        }
        if (typeof(val.controltovalidate) =3D=3D "string") {
            ValidatorHookupControlID(val.controltovalidate, val);
        }
        if (typeof(val.controlhookup) =3D=3D "string") {
            ValidatorHookupControlID(val.controlhookup, val);
        }
    }
    Page_ValidationActive =3D true;
}
function ValidatorConvert(op, dataType, val) {
    function GetFullYear(year) {
        var twoDigitCutoffYear =3D val.cutoffyear % 100;
        var cutoffYearCentury =3D val.cutoffyear - twoDigitCutoffYear;
        return ((year > twoDigitCutoffYear) ? (cutoffYearCentury - 100 + =
year) : (cutoffYearCentury + year));
    }
    var num, cleanInput, m, exp;
    if (dataType =3D=3D "Integer") {
        exp =3D /^\s*[-\+]?\d+\s*$/;
        if (op.match(exp) =3D=3D null)
            return null;
        num =3D parseInt(op, 10);
        return (isNaN(num) ? null : num);
    }
    else if(dataType =3D=3D "Double") {
        exp =3D new RegExp("^\\s*([-\\+])?(\\d*)\\" + val.decimalchar + =
"?(\\d*)\\s*$");
        m =3D op.match(exp);
        if (m =3D=3D null)
            return null;
        if (m[2].length =3D=3D 0 && m[3].length =3D=3D 0)
            return null;
        cleanInput =3D (m[1] !=3D null ? m[1] : "") + (m[2].length>0 ? =
m[2] : "0") + (m[3].length>0 ? "." + m[3] : "");
        num =3D parseFloat(cleanInput);
        return (isNaN(num) ? null : num);
    }
    else if (dataType =3D=3D "Currency") {
        var hasDigits =3D (val.digits > 0);
        var beginGroupSize, subsequentGroupSize;
        var groupSizeNum =3D parseInt(val.groupsize, 10);
        if (!isNaN(groupSizeNum) && groupSizeNum > 0) {
            beginGroupSize =3D "{1," + groupSizeNum + "}";
            subsequentGroupSize =3D "{" + groupSizeNum + "}";
        }
        else {
            beginGroupSize =3D subsequentGroupSize =3D "+";
        }
        exp =3D new RegExp("^\\s*([-\\+])?((\\d" + beginGroupSize + =
"(\\" + val.groupchar + "\\d" + subsequentGroupSize + ")+)|\\d*)"
                        + (hasDigits ? "\\" + val.decimalchar + =
"?(\\d{0," + val.digits + "})" : "")
                        + "\\s*$");
        m =3D op.match(exp);
        if (m =3D=3D null)
            return null;
        if (m[2].length =3D=3D 0 && hasDigits && m[5].length =3D=3D 0)
            return null;
        cleanInput =3D (m[1] !=3D null ? m[1] : "") + m[2].replace(new =
RegExp("(\\" + val.groupchar + ")", "g"), "") + ((hasDigits && =
m[5].length > 0) ? "." + m[5] : "");
        num =3D parseFloat(cleanInput);
        return (isNaN(num) ? null : num);
    }
    else if (dataType =3D=3D "Date") {
        var yearFirstExp =3D new =
RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. =
?)(\\d{1,2})\\4(\\d{1,2})\\.?\\s*$");
        m =3D op.match(yearFirstExp);
        var day, month, year;
        if (m !=3D null && (m[2].length =3D=3D 4 || val.dateorder =3D=3D =
"ymd")) {
            day =3D m[6];
            month =3D m[5];
            year =3D (m[2].length =3D=3D 4) ? m[2] : =
GetFullYear(parseInt(m[3], 10))
        }
        else {
            if (val.dateorder =3D=3D "ymd"){
                return null;
            }
            var yearLastExp =3D new RegExp("^\\s*(\\d{1,2})([-/]|\\. =
?)(\\d{1,2})(?:\\s|\\2)((\\d{4})|(\\d{2}))(?:\\s\u0433\\.)?\\s*$");
            m =3D op.match(yearLastExp);
            if (m =3D=3D null) {
                return null;
            }
            if (val.dateorder =3D=3D "mdy") {
                day =3D m[3];
                month =3D m[1];
            }
            else {
                day =3D m[1];
                month =3D m[3];
            }
            year =3D (m[5].length =3D=3D 4) ? m[5] : =
GetFullYear(parseInt(m[6], 10))
        }
        month -=3D 1;
        var date =3D new Date(year, month, day);
        if (year < 100) {
            date.setFullYear(year);
        }
        return (typeof(date) =3D=3D "object" && year =3D=3D =
date.getFullYear() && month =3D=3D date.getMonth() && day =3D=3D =
date.getDate()) ? date.valueOf() : null;
    }
    else {
        return op.toString();
    }
}
function ValidatorCompare(operand1, operand2, operator, val) {
    var dataType =3D val.type;
    var op1, op2;
    if ((op1 =3D ValidatorConvert(operand1, dataType, val)) =3D=3D null)
        return false;
    if (operator =3D=3D "DataTypeCheck")
        return true;
    if ((op2 =3D ValidatorConvert(operand2, dataType, val)) =3D=3D null)
        return true;
    switch (operator) {
        case "NotEqual":
            return (op1 !=3D op2);
        case "GreaterThan":
            return (op1 > op2);
        case "GreaterThanEqual":
            return (op1 >=3D op2);
        case "LessThan":
            return (op1 < op2);
        case "LessThanEqual":
            return (op1 <=3D op2);
        default:
            return (op1 =3D=3D op2);
    }
}
function CompareValidatorEvaluateIsValid(val) {
    var value =3D ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length =3D=3D 0)
        return true;
    var compareTo =3D "";
    if ((typeof(val.controltocompare) !=3D "string") ||
        (typeof(document.getElementById(val.controltocompare)) =3D=3D =
"undefined") ||
        (null =3D=3D document.getElementById(val.controltocompare))) {
        if (typeof(val.valuetocompare) =3D=3D "string") {
            compareTo =3D val.valuetocompare;
        }
    }
    else {
        compareTo =3D ValidatorGetValue(val.controltocompare);
    }
    var operator =3D "Equal";
    if (typeof(val.operator) =3D=3D "string") {
        operator =3D val.operator;
    }
    return ValidatorCompare(value, compareTo, operator, val);
}
function CustomValidatorEvaluateIsValid(val) {
    var value =3D "";
    if (typeof(val.controltovalidate) =3D=3D "string") {
        value =3D ValidatorGetValue(val.controltovalidate);
        if ((ValidatorTrim(value).length =3D=3D 0) &&
            ((typeof(val.validateemptytext) !=3D "string") || =
(val.validateemptytext !=3D "true"))) {
            return true;
        }
    }
    var args =3D { Value:value, IsValid:true };
    if (typeof(val.clientvalidationfunction) =3D=3D "string") {
        eval(val.clientvalidationfunction + "(val, args) ;");
    }
    return args.IsValid;
}
function RegularExpressionValidatorEvaluateIsValid(val) {
    var value =3D ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length =3D=3D 0)
        return true;
    var rx =3D new RegExp(val.validationexpression);
    var matches =3D rx.exec(value);
    return (matches !=3D null && value =3D=3D matches[0]);
}
function ValidatorTrim(s) {
    var m =3D s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
    return (m =3D=3D null) ? "" : m[1];
}
function RequiredFieldValidatorEvaluateIsValid(val) {
    return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) !=3D =
ValidatorTrim(val.initialvalue))
}
function RangeValidatorEvaluateIsValid(val) {
    var value =3D ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length =3D=3D 0)
        return true;
    return (ValidatorCompare(value, val.minimumvalue, =
"GreaterThanEqual", val) &&
            ValidatorCompare(value, val.maximumvalue, "LessThanEqual", =
val));
}
function ValidationSummaryOnSubmit(validationGroup) {
    if (typeof(Page_ValidationSummaries) =3D=3D "undefined")
        return;
    var summary, sums, s;
    for (sums =3D 0; sums < Page_ValidationSummaries.length; sums++) {
        summary =3D Page_ValidationSummaries[sums];
        summary.style.display =3D "none";
        if (!Page_IsValid && IsValidationGroupMatch(summary, =
validationGroup)) {
            var i;
            if (summary.showsummary !=3D "False") {
                summary.style.display =3D "";
                if (typeof(summary.displaymode) !=3D "string") {
                    summary.displaymode =3D "BulletList";
                }
                switch (summary.displaymode) {
                    case "List":
                        headerSep =3D "<br>";
                        first =3D "";
                        pre =3D "";
                        post =3D "<br>";
                        end =3D "";
                        break;
                    case "BulletList":
                    default:
                        headerSep =3D "";
                        first =3D "<ul>";
                        pre =3D "<li>";
                        post =3D "</li>";
                        end =3D "</ul>";
                        break;
                    case "SingleParagraph":
                        headerSep =3D " ";
                        first =3D "";
                        pre =3D "";
                        post =3D " ";
                        end =3D "<br>";
                        break;
                }
                s =3D "";
                if (typeof(summary.headertext) =3D=3D "string") {
                    s +=3D summary.headertext + headerSep;
                }
                s +=3D first;
                for (i=3D0; i<Page_Validators.length; i++) {
                    if (!Page_Validators[i].isvalid && =
typeof(Page_Validators[i].errormessage) =3D=3D "string") {
                        s +=3D pre + Page_Validators[i].errormessage + =
post;
                    }
                }
                s +=3D end;
                summary.innerHTML =3D s;
                window.scrollTo(0,0);
            }
            if (summary.showmessagebox =3D=3D "True") {
                s =3D "";
                if (typeof(summary.headertext) =3D=3D "string") {
                    s +=3D summary.headertext + "\r\n";
                }
                var lastValIndex =3D Page_Validators.length - 1;
                for (i=3D0; i<=3DlastValIndex; i++) {
                    if (!Page_Validators[i].isvalid && =
typeof(Page_Validators[i].errormessage) =3D=3D "string") {
                        switch (summary.displaymode) {
                            case "List":
                                s +=3D Page_Validators[i].errormessage;
                                if (i < lastValIndex) {
                                    s +=3D "\r\n";
                                }
                                break;
                            case "BulletList":
                            default:
                                s +=3D "- " + =
Page_Validators[i].errormessage;
                                if (i < lastValIndex) {
                                    s +=3D "\r\n";
                                }
                                break;
                            case "SingleParagraph":
                                s +=3D Page_Validators[i].errormessage + =
" ";
                                break;
                        }
                    }
                }
                alert(s);
            }
        }
    }
}

if(typeof(Sys)!=3D=3D'undefined')Sys.Application.notifyScriptLoaded();
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/ScriptResource.axd?d=rysaw5isGn_qBUQ_yY87Cq0eim1BPYPSkloLDnlBsZgLqt9z9IRG0FfNybvcBPig0&t=633718480760000000

=EF=BB=BF//--------------------------------------------------------------=
---------
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------=

// MicrosoftAjax.js
// Microsoft AJAX Framework.


Function.__typeName =3D 'Function';
Function.__class =3D true;

Function.createCallback =3D function Function$createCallback(method, =
context) {
    /// <param name=3D"method" type=3D"Function"></param>
    /// <param name=3D"context" mayBeNull=3D"true"></param>
    /// <returns type=3D"Function"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "method", type: Function},
        {name: "context", mayBeNull: true}
    ]);
    if (e) throw e;


       =20
    return function() {
        var l =3D arguments.length;
        if (l > 0) {
                        var args =3D [];
            for (var i =3D 0; i < l; i++) {
                args[i] =3D arguments[i];
            }
            args[l] =3D context;
            return method.apply(this, args);
        }
        return method.call(this, context);
    }
}

Function.createDelegate =3D function Function$createDelegate(instance, =
method) {
    /// <param name=3D"instance" mayBeNull=3D"true"></param>
    /// <param name=3D"method" type=3D"Function"></param>
    /// <returns type=3D"Function"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true},
        {name: "method", type: Function}
    ]);
    if (e) throw e;


       =20
    return function() {
        return method.apply(instance, arguments);
    }
}

Function.emptyFunction =3D Function.emptyMethod =3D function =
Function$emptyMethod() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
}

Function._validateParams =3D function Function$_validateParams(params, =
expectedParams) {
                                                                         =
                                                          =20
    var e;

    e =3D Function._validateParameterCount(params, expectedParams);
    if (e) {
        e.popStackFrame();
        return e;
    }

    for (var i=3D0; i < params.length; i++) {
                                var expectedParam =3D =
expectedParams[Math.min(i, expectedParams.length - 1)];

        var paramName =3D expectedParam.name;
        if (expectedParam.parameterArray) {
                        paramName +=3D "[" + (i - expectedParams.length =
+ 1) + "]";
        }

        e =3D Function._validateParameter(params[i], expectedParam, =
paramName);
        if (e) {
            e.popStackFrame();
            return e;
        }
    }


    return null;
}

Function._validateParameterCount =3D function =
Function$_validateParameterCount(params, expectedParams) {
    var maxParams =3D expectedParams.length;
    var minParams =3D 0;
    for (var i=3D0; i < expectedParams.length; i++) {
        if (expectedParams[i].parameterArray) {
            maxParams =3D Number.MAX_VALUE;
        }
        else if (!expectedParams[i].optional) {
            minParams++;
        }
    }

    if (params.length < minParams || params.length > maxParams) {
        var e =3D Error.parameterCount();
        e.popStackFrame();
        return e;
    }

    return null;
}

Function._validateParameter =3D function =
Function$_validateParameter(param, expectedParam, paramName) {
    var e;

    var expectedType =3D expectedParam.type;
    var expectedInteger =3D !!expectedParam.integer;
    var expectedDomElement =3D !!expectedParam.domElement;
    var mayBeNull =3D !!expectedParam.mayBeNull;

    e =3D Function._validateParameterType(param, expectedType, =
expectedInteger, expectedDomElement, mayBeNull, paramName);
    if (e) {
        e.popStackFrame();
        return e;
    }

        var expectedElementType =3D expectedParam.elementType;
    var elementMayBeNull =3D !!expectedParam.elementMayBeNull;
    if (expectedType =3D=3D=3D Array && typeof(param) !=3D=3D =
"undefined" && param !=3D=3D null &&
        (expectedElementType || !elementMayBeNull)) {
        var expectedElementInteger =3D !!expectedParam.elementInteger;
        var expectedElementDomElement =3D =
!!expectedParam.elementDomElement;
        for (var i=3D0; i < param.length; i++) {
            var elem =3D param[i];
            e =3D Function._validateParameterType(elem, =
expectedElementType,
                expectedElementInteger, expectedElementDomElement, =
elementMayBeNull,
                paramName + "[" + i + "]");
            if (e) {
                e.popStackFrame();
                return e;
            }
        }
    }

    return null;
}

Function._validateParameterType =3D function =
Function$_validateParameterType(param, expectedType, expectedInteger, =
expectedDomElement, mayBeNull, paramName) {
    var e;

    if (typeof(param) =3D=3D=3D "undefined") {
        if (mayBeNull) {
            return null;
        }
        else {
            e =3D Error.argumentUndefined(paramName);
            e.popStackFrame();
            return e;
        }
    }

    if (param =3D=3D=3D null) {
        if (mayBeNull) {
            return null;
        }
        else {
            e =3D Error.argumentNull(paramName);
            e.popStackFrame();
            return e;
        }
    }

    if (expectedType && expectedType.__enum) {
        if (typeof(param) !=3D=3D 'number') {
            e =3D Error.argumentType(paramName, Object.getType(param), =
expectedType);
            e.popStackFrame();
            return e;
        }
        if ((param % 1) =3D=3D=3D 0) {
            var values =3D expectedType.prototype;
            if (!expectedType.__flags || (param =3D=3D=3D 0)) {
                for (var i in values) {
                    if (values[i] =3D=3D=3D param) return null;
                }
            }
            else {
                var v =3D param;
                for (var i in values) {
                    var vali =3D values[i];
                    if (vali =3D=3D=3D 0) continue;
                    if ((vali & param) =3D=3D=3D vali) {
                        v -=3D vali;
                    }
                    if (v =3D=3D=3D 0) return null;
                }
            }
        }
        e =3D Error.argumentOutOfRange(paramName, param, =
String.format(Sys.Res.enumInvalidValue, param, expectedType.getName()));
        e.popStackFrame();
        return e;
    }

                    if (expectedDomElement && (param !=3D=3D window) && =
(param !=3D=3D document) &&
        !(window.HTMLElement && (param instanceof HTMLElement)) &&
        (typeof(param.nodeName) !=3D=3D 'string')) {

        e =3D Error.argument(paramName, Sys.Res.argumentDomElement);
        e.popStackFrame();
        return e;
    }

        if (expectedType && !expectedType.isInstanceOfType(param)) {
        e =3D Error.argumentType(paramName, Object.getType(param), =
expectedType);
        e.popStackFrame();
        return e;
    }

    if (expectedType =3D=3D=3D Number && expectedInteger) {
                        if ((param % 1) !=3D=3D 0) {
            e =3D Error.argumentOutOfRange(paramName, param, =
Sys.Res.argumentInteger);
            e.popStackFrame();
            return e;
        }
    }

    return null;
}
Error.__typeName =3D 'Error';
Error.__class =3D true;

Error.create =3D function Error$create(message, errorInfo) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"errorInfo" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"Error"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: =
true},
        {name: "errorInfo", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


            var e =3D new Error(message);
    e.message =3D message;

    if (errorInfo) {
        for (var v in errorInfo) {
            e[v] =3D errorInfo[v];
        }
    }

    e.popStackFrame();
    return e;
}

Error.argument =3D function Error$argument(paramName, message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: =
true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


    var displayMessage =3D "Sys.ArgumentException: " + (message ? =
message : Sys.Res.argument);
    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

    var e =3D Error.create(displayMessage, { name: =
"Sys.ArgumentException", paramName: paramName });
    e.popStackFrame();
    return e;
}

Error.argumentNull =3D function Error$argumentNull(paramName, message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: =
true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


    var displayMessage =3D "Sys.ArgumentNullException: " + (message ? =
message : Sys.Res.argumentNull);
    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

    var e =3D Error.create(displayMessage, { name: =
"Sys.ArgumentNullException", paramName: paramName });
    e.popStackFrame();
    return e;
}

Error.argumentOutOfRange =3D function =
Error$argumentOutOfRange(paramName, actualValue, message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"actualValue" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D 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 =3D "Sys.ArgumentOutOfRangeException: " + =
(message ? message : Sys.Res.argumentOutOfRange);
    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

                if (typeof(actualValue) !=3D=3D "undefined" && =
actualValue !=3D=3D null) {
        displayMessage +=3D "\n" + String.format(Sys.Res.actualValue, =
actualValue);
    }

    var e =3D Error.create(displayMessage, {
        name: "Sys.ArgumentOutOfRangeException",
        paramName: paramName,
        actualValue: actualValue
    });
    e.popStackFrame();
    return e;
}

Error.argumentType =3D function Error$argumentType(paramName, =
actualType, expectedType, message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"actualType" type=3D"Type" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"expectedType" type=3D"Type" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D 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 =3D "Sys.ArgumentTypeException: ";
    if (message) {
        displayMessage +=3D message;
    }
    else if (actualType && expectedType) {
        displayMessage +=3D
            String.format(Sys.Res.argumentTypeWithTypes, =
actualType.getName(), expectedType.getName());
    }
    else {
        displayMessage +=3D Sys.Res.argumentType;
    }

    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

    var e =3D Error.create(displayMessage, {
        name: "Sys.ArgumentTypeException",
        paramName: paramName,
        actualType: actualType,
        expectedType: expectedType
    });
    e.popStackFrame();
    return e;
}

Error.argumentUndefined =3D function Error$argumentUndefined(paramName, =
message) {
    /// <param name=3D"paramName" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "paramName", type: String, mayBeNull: true, optional: =
true},
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


    var displayMessage =3D "Sys.ArgumentUndefinedException: " + (message =
? message : Sys.Res.argumentUndefined);
    if (paramName) {
        displayMessage +=3D "\n" + String.format(Sys.Res.paramName, =
paramName);
    }

    var e =3D Error.create(displayMessage, { name: =
"Sys.ArgumentUndefinedException", paramName: paramName });
    e.popStackFrame();
    return e;
}

Error.format =3D function Error$format(message) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage =3D "Sys.FormatException: " + (message ? message =
: Sys.Res.format);
    var e =3D Error.create(displayMessage, {name: =
'Sys.FormatException'});
    e.popStackFrame();
    return e;
}

Error.invalidOperation =3D function Error$invalidOperation(message) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage =3D "Sys.InvalidOperationException: " + (message =
? message : Sys.Res.invalidOperation);

    var e =3D Error.create(displayMessage, {name: =
'Sys.InvalidOperationException'});
    e.popStackFrame();
    return e;
}

Error.notImplemented =3D function Error$notImplemented(message) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var displayMessage =3D "Sys.NotImplementedException: " + (message ? =
message : Sys.Res.notImplemented);

    var e =3D Error.create(displayMessage, {name: =
'Sys.NotImplementedException'});
    e.popStackFrame();
    return e;
}

Error.parameterCount =3D function Error$parameterCount(message) {
    /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "message", type: String, mayBeNull: true, optional: true}
    ]);
    if (e) throw e;


    var displayMessage =3D "Sys.ParameterCountException: " + (message ? =
message : Sys.Res.parameterCount);
    var e =3D Error.create(displayMessage, {name: =
'Sys.ParameterCountException'});
    e.popStackFrame();
    return e;
}

Error.prototype.popStackFrame =3D function Error$popStackFrame() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();

                           =20
    if (typeof(this.stack) =3D=3D=3D "undefined" || this.stack =3D=3D=3D =
null ||
        typeof(this.fileName) =3D=3D=3D "undefined" || this.fileName =
=3D=3D=3D null ||
        typeof(this.lineNumber) =3D=3D=3D "undefined" || this.lineNumber =
=3D=3D=3D null) {
        return;
    }

    var stackFrames =3D this.stack.split("\n");

                var currentFrame =3D stackFrames[0];
    var pattern =3D this.fileName + ":" + this.lineNumber;
    while(typeof(currentFrame) !=3D=3D "undefined" &&
          currentFrame !=3D=3D null &&
          currentFrame.indexOf(pattern) =3D=3D=3D -1) {
        stackFrames.shift();
        currentFrame =3D stackFrames[0];
    }

    var nextFrame =3D stackFrames[1];

        if (typeof(nextFrame) =3D=3D=3D "undefined" || nextFrame =
=3D=3D=3D null) {
        return;
    }

        var nextFrameParts =3D nextFrame.match(/@(.*):(\d+)$/);
    if (typeof(nextFrameParts) =3D=3D=3D "undefined" || nextFrameParts =
=3D=3D=3D null) {
        return;
    }

    this.fileName =3D nextFrameParts[1];

        this.lineNumber =3D parseInt(nextFrameParts[2]);

    stackFrames.shift();
    this.stack =3D stackFrames.join("\n");
}
if (!window) this.window =3D this;

window.Type =3D Function;

window.__rootNamespaces =3D [];
window.__registeredTypes =3D {};

Type.__fullyQualifiedIdentifierRegExp =3D new RegExp("^[^.0-9 =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
Type.__identifierRegExp =3D new RegExp("^[^.0-9 =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. =
\\s|,;:&*=3D+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");

Type.prototype.callBaseMethod =3D function Type$callBaseMethod(instance, =
name, baseArguments) {
    /// <param name=3D"instance"></param>
    /// <param name=3D"name" type=3D"String"></param>
    /// <param name=3D"baseArguments" type=3D"Array" optional=3D"true" =
mayBeNull=3D"true" elementMayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D 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 =3D this.getBaseMethod(instance, name);
    if (!baseMethod) throw =
Error.invalidOperation(String.format(Sys.Res.methodNotFound, name));
    if (!baseArguments) {
        return baseMethod.apply(instance);
    }
    else {
        return baseMethod.apply(instance, baseArguments);
    }
}

Type.prototype.getBaseMethod =3D function Type$getBaseMethod(instance, =
name) {
    /// <param name=3D"instance"></param>
    /// <param name=3D"name" type=3D"String"></param>
    /// <returns type=3D"Function" mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance"},
        {name: "name", type: String}
    ]);
    if (e) throw e;

    if (!this.isInstanceOfType(instance)) throw =
Error.argumentType('instance', Object.getType(instance), this);
    var baseType =3D this.getBaseType();
    if (baseType) {
        var baseMethod =3D baseType.prototype[name];
        return (baseMethod instanceof Function) ? baseMethod : null;
    }

    return null;
}

Type.prototype.getBaseType =3D function Type$getBaseType() {
    /// <returns type=3D"Type" mayBeNull=3D"true"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return (typeof(this.__baseType) =3D=3D=3D "undefined") ? null : =
this.__baseType;
}

Type.prototype.getInterfaces =3D function Type$getInterfaces() {
    /// <returns type=3D"Array" elementType=3D"Type" mayBeNull=3D"false" =
elementMayBeNull=3D"false"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    var result =3D [];
    var type =3D this;
    while(type) {
        var interfaces =3D type.__interfaces;
        if (interfaces) {
            for (var i =3D 0, l =3D interfaces.length; i < l; i++) {
                var interfaceType =3D interfaces[i];
                if (!Array.contains(result, interfaceType)) {
                    result[result.length] =3D interfaceType;
                }
            }
        }
        type =3D type.__baseType;
    }
    return result;
}

Type.prototype.getName =3D function Type$getName() {
    /// <returns type=3D"String"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return (typeof(this.__typeName) =3D=3D=3D "undefined") ? "" : =
this.__typeName;
}

Type.prototype.implementsInterface =3D function =
Type$implementsInterface(interfaceType) {
    /// <param name=3D"interfaceType" type=3D"Type"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "interfaceType", type: Type}
    ]);
    if (e) throw e;

    this.resolveInheritance();

    var interfaceName =3D interfaceType.getName();
    var cache =3D this.__interfaceCache;
    if (cache) {
        var cacheEntry =3D cache[interfaceName];
        if (typeof(cacheEntry) !=3D=3D 'undefined') return cacheEntry;
    }
    else {
        cache =3D this.__interfaceCache =3D {};
    }

    var baseType =3D this;
    while (baseType) {
        var interfaces =3D baseType.__interfaces;
        if (interfaces) {
            if (Array.indexOf(interfaces, interfaceType) !=3D=3D -1) {
                return cache[interfaceName] =3D true;
            }
        }

        baseType =3D baseType.__baseType;
    }

    return cache[interfaceName] =3D false;
}

Type.prototype.inheritsFrom =3D function Type$inheritsFrom(parentType) {
    /// <param name=3D"parentType" type=3D"Type"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "parentType", type: Type}
    ]);
    if (e) throw e;

    this.resolveInheritance();
    var baseType =3D this.__baseType;
    while (baseType) {
        if (baseType =3D=3D=3D parentType) {
            return true;
        }
        baseType =3D baseType.__baseType;
    }

    return false;
}

Type.prototype.initializeBase =3D function Type$initializeBase(instance, =
baseArguments) {
    /// <param name=3D"instance"></param>
    /// <param name=3D"baseArguments" type=3D"Array" optional=3D"true" =
mayBeNull=3D"true" elementMayBeNull=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance"},
        {name: "baseArguments", type: Array, mayBeNull: true, optional: =
true, elementMayBeNull: true}
    ]);
    if (e) throw e;

    if (!this.isInstanceOfType(instance)) throw =
Error.argumentType('instance', Object.getType(instance), this);

    this.resolveInheritance();
    if (this.__baseType) {
        if (!baseArguments) {
            this.__baseType.apply(instance);
        }
        else {
            this.__baseType.apply(instance, baseArguments);
        }
    }

    return instance;
}

Type.prototype.isImplementedBy =3D function =
Type$isImplementedBy(instance) {
    /// <param name=3D"instance" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true}
    ]);
    if (e) throw e;

    if (typeof(instance) =3D=3D=3D "undefined" || instance =3D=3D=3D =
null) return false;

    var instanceType =3D Object.getType(instance);
    return !!(instanceType.implementsInterface && =
instanceType.implementsInterface(this));
}

Type.prototype.isInstanceOfType =3D function =
Type$isInstanceOfType(instance) {
    /// <param name=3D"instance" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance", mayBeNull: true}
    ]);
    if (e) throw e;

    if (typeof(instance) =3D=3D=3D "undefined" || instance =3D=3D=3D =
null) return false;

    if (instance instanceof this) return true;

    var instanceType =3D Object.getType(instance);
    return !!(instanceType =3D=3D=3D this) ||
           (instanceType.inheritsFrom && =
instanceType.inheritsFrom(this)) ||
           (instanceType.implementsInterface && =
instanceType.implementsInterface(this));
}

Type.prototype.registerClass =3D function Type$registerClass(typeName, =
baseType, interfaceTypes) {
    /// <param name=3D"typeName" type=3D"String"></param>
    /// <param name=3D"baseType" type=3D"Type" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"interfaceTypes" parameterArray=3D"true" =
type=3D"Type"></param>
    /// <returns type=3D"Type"></returns>
    var e =3D 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 =3D eval(typeName);
    }
    catch(e) {
        throw Error.argument('typeName', Sys.Res.argumentTypeName);
    }
    if (parsedName !=3D=3D this) throw Error.argument('typeName', =
Sys.Res.badTypeName);
        if (window.__registeredTypes[typeName]) throw =
Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, =
typeName));

            if ((arguments.length > 1) && (typeof(baseType) =3D=3D=3D =
'undefined')) throw Error.argumentUndefined('baseType');
    if (baseType && !baseType.__class) throw Error.argument('baseType', =
Sys.Res.baseNotAClass);

    this.prototype.constructor =3D this;
    this.__typeName =3D typeName;
    this.__class =3D true;
    if (baseType) {
        this.__baseType =3D baseType;
        this.__basePrototypePending =3D true;
    }
        if (!window.__classes) window.__classes =3D {};
    window.__classes[typeName.toUpperCase()] =3D this;

                if (interfaceTypes) {
        this.__interfaces =3D [];
        for (var i =3D 2; i < arguments.length; i++) {
            var interfaceType =3D arguments[i];
            if (!interfaceType.__interface) throw =
Error.argument('interfaceTypes[' + (i - 2) + ']', =
Sys.Res.notAnInterface);
            this.resolveInheritance();
            for (var methodName in interfaceType.prototype) {
                var method =3D interfaceType.prototype[methodName];
                if (!this.prototype[methodName]) {
                    this.prototype[methodName] =3D method;
                }
            }
            this.__interfaces.push(interfaceType);
        }
    }
    window.__registeredTypes[typeName] =3D true;

    return this;
}

Type.prototype.registerInterface =3D function =
Type$registerInterface(typeName) {
    /// <param name=3D"typeName" type=3D"String"></param>
    /// <returns type=3D"Type"></returns>
    var e =3D 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 =3D eval(typeName);
    }
    catch(e) {
        throw Error.argument('typeName', Sys.Res.argumentTypeName);
    }
    if (parsedName !=3D=3D this) throw Error.argument('typeName', =
Sys.Res.badTypeName);
        if (window.__registeredTypes[typeName]) throw =
Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, =
typeName));
    this.prototype.constructor =3D this;
    this.__typeName =3D typeName;
    this.__interface =3D true;
    window.__registeredTypes[typeName] =3D true;

    return this;
}

Type.prototype.resolveInheritance =3D function Type$resolveInheritance() =
{
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();

    if (this.__basePrototypePending) {
        var baseType =3D this.__baseType;

        baseType.resolveInheritance();

        for (var memberName in baseType.prototype) {
            var memberValue =3D baseType.prototype[memberName];
            if (!this.prototype[memberName]) {
                this.prototype[memberName] =3D memberValue;
            }
        }
        delete this.__basePrototypePending;
    }
}

Type.getRootNamespaces =3D function Type$getRootNamespaces() {
    /// <returns type=3D"Array"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return Array.clone(window.__rootNamespaces);
}

Type.isClass =3D function Type$isClass(type) {
    /// <param name=3D"type" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(type) =3D=3D=3D 'undefined') || (type =3D=3D=3D null)) =
return false;
    return !!type.__class;
}

Type.isInterface =3D function Type$isInterface(type) {
    /// <param name=3D"type" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(type) =3D=3D=3D 'undefined') || (type =3D=3D=3D null)) =
return false;
    return !!type.__interface;
}

Type.isNamespace =3D function Type$isNamespace(object) {
    /// <param name=3D"object" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "object", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(object) =3D=3D=3D 'undefined') || (object =3D=3D=3D =
null)) return false;
    return !!object.__namespace;
}

Type.parse =3D function Type$parse(typeName, ns) {
    /// <param name=3D"typeName" type=3D"String" =
mayBeNull=3D"true"></param>
    /// <param name=3D"ns" optional=3D"true" mayBeNull=3D"true"></param>
    /// <returns type=3D"Type" mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "typeName", type: String, mayBeNull: true},
        {name: "ns", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    var fn;
    if (ns) {
        if (!window.__classes) return null;
        fn =3D window.__classes[ns.getName().toUpperCase() + '.' + =
typeName.toUpperCase()];
        return fn || null;
    }
    if (!typeName) return null;
    if (!Type.__htClasses) {
        Type.__htClasses =3D {};
    }
    fn =3D Type.__htClasses[typeName];
    if (!fn) {
        fn =3D eval(typeName);
        if (typeof(fn) !=3D=3D 'function') throw =
Error.argument('typeName', Sys.Res.notATypeName);
        Type.__htClasses[typeName] =3D fn;
    }
    return fn;
}

Type.registerNamespace =3D function =
Type$registerNamespace(namespacePath) {
    /// <param name=3D"namespacePath" type=3D"String"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "namespacePath", type: String}
    ]);
    if (e) throw e;

    if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) =
throw Error.argument('namespacePath', Sys.Res.invalidNameSpace);
    var rootObject =3D window;
    var namespaceParts =3D namespacePath.split('.');

    for (var i =3D 0; i < namespaceParts.length; i++) {
        var currentPart =3D namespaceParts[i];
        var ns =3D rootObject[currentPart];
        if (ns && !ns.__namespace) {
            throw =
Error.invalidOperation(String.format(Sys.Res.namespaceContainsObject, =
namespaceParts.splice(0, i + 1).join('.')));
        }
        if (!ns) {
            ns =3D rootObject[currentPart] =3D {};
            if (i =3D=3D=3D 0) {
                window.__rootNamespaces[window.__rootNamespaces.length] =
=3D ns;
            }
            ns.__namespace =3D true;
            ns.__typeName =3D namespaceParts.slice(0, i + 1).join('.');
            var parsedName;
            try {
                parsedName =3D eval(ns.__typeName);
            }
            catch(e) {
                parsedName =3D null;
            }
            if (parsedName !=3D=3D ns) {
                delete rootObject[currentPart];
                throw Error.argument('namespacePath', =
Sys.Res.invalidNameSpace);
            }
            ns.getName =3D function ns$getName() {return =
this.__typeName;}
        }
        rootObject =3D ns;
    }
}
Object.__typeName =3D 'Object';
Object.__class =3D true;

Object.getType =3D function Object$getType(instance) {
    /// <param name=3D"instance"></param>
    /// <returns type=3D"Type"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance"}
    ]);
    if (e) throw e;

    var ctor =3D instance.constructor;
    if (!ctor || (typeof(ctor) !=3D=3D "function") || !ctor.__typeName =
|| (ctor.__typeName =3D=3D=3D 'Object')) {
        return Object;
    }
    return ctor;
}

Object.getTypeName =3D function Object$getTypeName(instance) {
    /// <param name=3D"instance"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "instance"}
    ]);
    if (e) throw e;

    return Object.getType(instance).getName();
}
Boolean.__typeName =3D 'Boolean';
Boolean.__class =3D true;

Boolean.parse =3D function Boolean$parse(value) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String}
    ]);
    if (e) throw e;

    var v =3D value.trim().toLowerCase();
    if (v =3D=3D=3D 'false') return false;
    if (v =3D=3D=3D 'true') return true;
    throw Error.argumentOutOfRange('value', value, =
Sys.Res.boolTrueOrFalse);
}
Date.__typeName =3D 'Date';
Date.__class =3D true;

Date._appendPreOrPostMatch =3D function =
Date$_appendPreOrPostMatch(preMatch, strBuilder) {
                var quoteCount =3D 0;
    var escaped =3D false;
    for (var i =3D 0, il =3D preMatch.length; i < il; i++) {
        var c =3D preMatch.charAt(i);
        switch (c) {
        case '\'':
            if (escaped) strBuilder.append("'");
            else quoteCount++;
            escaped =3D false;
            break;
        case '\\':
            if (escaped) strBuilder.append("\\");
            escaped =3D !escaped;
            break;
        default:
            strBuilder.append(c);
            escaped =3D false;
            break;
        }
    }
    return quoteCount;
}

Date._expandFormat =3D function Date$_expandFormat(dtf, format) {
        if (!format) {
        format =3D "F";
    }
    if (format.length =3D=3D=3D 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.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);
        }
    }
    return format;
}

Date._expandYear =3D function Date$_expandYear(dtf, year) {
        if (year < 100) {
        var curr =3D new Date().getFullYear();
        year +=3D curr - (curr % 100);
        if (year > dtf.Calendar.TwoDigitYearMax) {
            return year - 100;
        }
    }
    return year;
}

Date._getParseRegExp =3D function Date$_getParseRegExp(dtf, format) {
                if (!dtf._parseRegExp) {
        dtf._parseRegExp =3D {};
    }
    else if (dtf._parseRegExp[format]) {
        return dtf._parseRegExp[format];
    }

        var expFormat =3D Date._expandFormat(dtf, format);
    expFormat =3D expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, =
"\\\\$1");

    var regexp =3D new Sys.StringBuilder("^");
    var groups =3D [];
    var index =3D 0;
    var quoteCount =3D 0;
    var tokenRegExp =3D Date._getTokenRegExp();
    var match;

        while ((match =3D tokenRegExp.exec(expFormat)) !=3D=3D null) {
        var preMatch =3D expFormat.slice(index, match.index);
        index =3D tokenRegExp.lastIndex;

                quoteCount +=3D Date._appendPreOrPostMatch(preMatch, =
regexp);
        if ((quoteCount%2) =3D=3D=3D 1) {
            regexp.append(match[0]);
            continue;
        }

                switch (match[0]) {
            case 'dddd': case 'ddd':
            case 'MMMM': case 'MMM':
                regexp.append("(\\D+)");
                break;
            case 'tt': case 't':
                regexp.append("(\\D*)");
                break;
            case 'yyyy':
                regexp.append("(\\d{4})");
                break;
            case 'fff':
                regexp.append("(\\d{3})");
                break;
            case 'ff':
                regexp.append("(\\d{2})");
                break;
            case 'f':
                regexp.append("(\\d)");
                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':
                regexp.append("(\\d\\d?)");
                break;
            case 'zzz':
                regexp.append("([+-]?\\d\\d?:\\d{2})");
                break;
            case 'zz': case 'z':
                regexp.append("([+-]?\\d\\d?)");
                break;
        }
        Array.add(groups, match[0]);
    }
    Date._appendPreOrPostMatch(expFormat.slice(index), regexp);
    regexp.append("$");
        var regexpStr =3D regexp.toString().replace(/\s+/g, "\\s+");
    var parseRegExp =3D {'regExp': regexpStr, 'groups': groups};
        dtf._parseRegExp[format] =3D parseRegExp;
    return parseRegExp;
}

Date._getTokenRegExp =3D 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/g;
}

Date.parseLocale =3D function Date$parseLocale(value, formats) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <param name=3D"formats" parameterArray=3D"true" =
optional=3D"true" mayBeNull=3D"true"></param>
    /// <returns type=3D"Date"></returns>
    var e =3D 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);
}

Date.parseInvariant =3D function Date$parseInvariant(value, formats) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <param name=3D"formats" parameterArray=3D"true" =
optional=3D"true" mayBeNull=3D"true"></param>
    /// <returns type=3D"Date"></returns>
    var e =3D 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);
}

Date._parse =3D function Date$_parse(value, cultureInfo, args) {
            var custom =3D false;
    for (var i =3D 1, il =3D args.length; i < il; i++) {
        var format =3D args[i];
        if (format) {
            custom =3D true;
            var date =3D Date._parseExact(value, format, cultureInfo);
            if (date) return date;
        }
    }
        if (! custom) {
        var formats =3D cultureInfo._getDateTimeFormats();
        for (var i =3D 0, il =3D formats.length; i < il; i++) {
            var date =3D Date._parseExact(value, formats[i], =
cultureInfo);
            if (date) return date;
        }
    }
    return null;
}

Date._parseExact =3D function Date$_parseExact(value, format, =
cultureInfo) {
            value =3D value.trim();
    var dtf =3D cultureInfo.dateTimeFormat;

            var parseInfo =3D Date._getParseRegExp(dtf, format);
    var match =3D new RegExp(parseInfo.regExp).exec(value);
        if (match !=3D=3D null) {
        var groups =3D parseInfo.groups;
        var year =3D null, month =3D null, date =3D null, weekDay =3D =
null;
        var hour =3D 0, min =3D 0, sec =3D 0, msec =3D 0, tzMinOffset =
=3D null;
        var pmHour =3D false;
                for (var j =3D 0, jl =3D groups.length; j < jl; j++) {
            var matchGroup =3D match[j+1];
            if (matchGroup) {
                switch (groups[j]) {
                    case 'dd': case 'd':
                                                date =3D =
Date._parseInt(matchGroup);
                                                if ((date < 1) || (date =
> 31)) return null;
                        break;
                    case 'MMMM':
                                                month =3D =
cultureInfo._getMonthIndex(matchGroup);
                        if ((month < 0) || (month > 11)) return null;
                        break;
                    case 'MMM':
                                                month =3D =
cultureInfo._getAbbrMonthIndex(matchGroup);
                        if ((month < 0) || (month > 11)) return null;
                        break;
                    case 'M': case 'MM':
                                                var month =3D =
Date._parseInt(matchGroup) - 1;
                        if ((month < 0) || (month > 11)) return null;
                        break;
                    case 'y': case 'yy':
                                                year =3D =
Date._expandYear(dtf,Date._parseInt(matchGroup));
                        if ((year < 0) || (year > 9999)) return null;
                        break;
                    case 'yyyy':
                                                year =3D =
Date._parseInt(matchGroup);
                        if ((year < 0) || (year > 9999)) return null;
                        break;
                    case 'h': case 'hh':
                                                hour =3D =
Date._parseInt(matchGroup);
                        if (hour =3D=3D=3D 12) hour =3D 0;
                        if ((hour < 0) || (hour > 11)) return null;
                        break;
                    case 'H': case 'HH':
                                                hour =3D =
Date._parseInt(matchGroup);
                        if ((hour < 0) || (hour > 23)) return null;
                        break;
                    case 'm': case 'mm':
                                                min =3D =
Date._parseInt(matchGroup);
                        if ((min < 0) || (min > 59)) return null;
                        break;
                    case 's': case 'ss':
                                                sec =3D =
Date._parseInt(matchGroup);
                        if ((sec < 0) || (sec > 59)) return null;
                        break;
                    case 'tt': case 't':
                                                var upperToken =3D =
matchGroup.toUpperCase();
                        pmHour =3D (upperToken =3D=3D=3D =
dtf.PMDesignator.toUpperCase());
                        if (!pmHour && (upperToken !=3D=3D =
dtf.AMDesignator.toUpperCase())) return null;
                        break;
                    case 'f':
                                                msec =3D =
Date._parseInt(matchGroup) * 100;
                        if ((msec < 0) || (msec > 999)) return null;
                        break;
                    case 'ff':
                                                msec =3D =
Date._parseInt(matchGroup) * 10;
                        if ((msec < 0) || (msec > 999)) return null;
                        break;
                    case 'fff':
                                                msec =3D =
Date._parseInt(matchGroup);
                        if ((msec < 0) || (msec > 999)) return null;
                        break;
                    case 'dddd':
                                                weekDay =3D =
cultureInfo._getDayIndex(matchGroup);
                        if ((weekDay < 0) || (weekDay > 6)) return null;
                        break;
                    case 'ddd':
                                                weekDay =3D =
cultureInfo._getAbbrDayIndex(matchGroup);
                        if ((weekDay < 0) || (weekDay > 6)) return null;
                        break;
                    case 'zzz':
                                                var offsets =3D =
matchGroup.split(/:/);
                        if (offsets.length !=3D=3D 2) return null;
                        var hourOffset =3D Date._parseInt(offsets[0]);
                        if ((hourOffset < -12) || (hourOffset > 13)) =
return null;
                        var minOffset =3D Date._parseInt(offsets[1]);
                        if ((minOffset < 0) || (minOffset > 59)) return =
null;
                        tzMinOffset =3D (hourOffset * 60) + =
(matchGroup.startsWith('-')? -minOffset : minOffset);
                        break;
                    case 'z': case 'zz':
                                                var hourOffset =3D =
Date._parseInt(matchGroup);
                        if ((hourOffset < -12) || (hourOffset > 13)) =
return null;
                        tzMinOffset =3D hourOffset * 60;
                        break;
                }
            }
        }
        var result =3D new Date();
        if (year =3D=3D=3D null) {
            year =3D result.getFullYear();
        }
        if (month =3D=3D=3D null) {
            month =3D result.getMonth();
        }
        if (date =3D=3D=3D null) {
            date =3D result.getDate();
        }
                result.setFullYear(year, month, date);
                if (result.getDate() !=3D=3D date) return null;
                if ((weekDay !=3D=3D null) && (result.getDay() !=3D=3D =
weekDay)) {
            return null;
        }
                if (pmHour && (hour < 12)) {
            hour +=3D 12;
        }
        result.setHours(hour, min, sec, msec);
        if (tzMinOffset !=3D=3D null) {
                        var adjustedMin =3D result.getMinutes() - =
(tzMinOffset + result.getTimezoneOffset());
                                                =
result.setHours(result.getHours() + parseInt(adjustedMin/60), =
adjustedMin%60);
        }
        return result;
    }
}

Date._parseInt =3D function Date$_parseInt(value) {
        return parseInt(value.replace(/^[\s0]+(\d+)$/,"$1"));
}

Date.prototype.format =3D function Date$format(format) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;

    return this._toFormattedString(format, =
Sys.CultureInfo.InvariantCulture);
}

Date.prototype.localeFormat =3D function Date$localeFormat(format) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;

    return this._toFormattedString(format, =
Sys.CultureInfo.CurrentCulture);
}

Date.prototype._toFormattedString =3D function =
Date$_toFormattedString(format, cultureInfo) {
    if (!format || (format.length =3D=3D=3D 0) || (format =3D=3D=3D =
'i')) {
        if (cultureInfo && (cultureInfo.name.length > 0)) {
            return this.toLocaleString();
        }
        else {
            return this.toString();
        }
    }

    var dtf =3D cultureInfo.dateTimeFormat;
    format =3D Date._expandFormat(dtf, format);

        var ret =3D new Sys.StringBuilder();
    var hour;

    function addLeadingZero(num) {
        if (num < 10) {
            return '0' + num;
        }
        return num.toString();
    }

    function addLeadingZeros(num) {
        if (num < 10) {
            return '00' + num;
        }
        if (num < 100) {
            return '0' + num;
        }
        return num.toString();
    }

    var quoteCount =3D 0;
    var tokenRegExp =3D Date._getTokenRegExp();
    for (;;) {

                var index =3D tokenRegExp.lastIndex;

                var ar =3D tokenRegExp.exec(format);

                var preMatch =3D format.slice(index, ar ? ar.index : =
format.length);
        quoteCount +=3D Date._appendPreOrPostMatch(preMatch, ret);

        if (!ar) break;

                if ((quoteCount%2) =3D=3D=3D 1) {
            ret.append(ar[0]);
            continue;
        }

        switch (ar[0]) {
        case "dddd":
                        ret.append(dtf.DayNames[this.getDay()]);
            break;
        case "ddd":
                        =
ret.append(dtf.AbbreviatedDayNames[this.getDay()]);
            break;
        case "dd":
                        ret.append(addLeadingZero(this.getDate()));
            break;
        case "d":
                        ret.append(this.getDate());
            break;
        case "MMMM":
                        ret.append(dtf.MonthNames[this.getMonth()]);
            break;
        case "MMM":
                        =
ret.append(dtf.AbbreviatedMonthNames[this.getMonth()]);
            break;
        case "MM":
                        ret.append(addLeadingZero(this.getMonth() + 1));
            break;
        case "M":
                        ret.append(this.getMonth() + 1);
            break;
        case "yyyy":
                        ret.append(this.getFullYear());
            break;
        case "yy":
                        ret.append(addLeadingZero(this.getFullYear() % =
100));
            break;
        case "y":
                        ret.append(this.getFullYear() % 100);
            break;
        case "hh":
                        hour =3D this.getHours() % 12;
            if (hour =3D=3D=3D 0) hour =3D 12;
            ret.append(addLeadingZero(hour));
            break;
        case "h":
                        hour =3D this.getHours() % 12;
            if (hour =3D=3D=3D 0) hour =3D 12;
            ret.append(hour);
            break;
        case "HH":
                        ret.append(addLeadingZero(this.getHours()));
            break;
        case "H":
                        ret.append(this.getHours());
            break;
        case "mm":
                        ret.append(addLeadingZero(this.getMinutes()));
            break;
        case "m":
                        ret.append(this.getMinutes());
            break;
        case "ss":
                        ret.append(addLeadingZero(this.getSeconds()));
            break;
        case "s":
                        ret.append(this.getSeconds());
            break;
        case "tt":
                        ret.append((this.getHours() < 12) ? =
dtf.AMDesignator : dtf.PMDesignator);
            break;
        case "t":
                        ret.append(((this.getHours() < 12) ? =
dtf.AMDesignator : dtf.PMDesignator).charAt(0));
            break;
        case "f":
                        =
ret.append(addLeadingZeros(this.getMilliseconds()).charAt(0));
            break;
        case "ff":
                        =
ret.append(addLeadingZeros(this.getMilliseconds()).substr(0, 2));
            break;
        case "fff":
                        =
ret.append(addLeadingZeros(this.getMilliseconds()));
            break;
        case "z":
                        hour =3D this.getTimezoneOffset() / 60;
            ret.append(((hour >=3D 0) ? '+' : '-') + =
Math.floor(Math.abs(hour)));
            break;
        case "zz":
                        hour =3D this.getTimezoneOffset() / 60;
            ret.append(((hour >=3D 0) ? '+' : '-') + =
addLeadingZero(Math.floor(Math.abs(hour))));
            break;
        case "zzz":
                        hour =3D this.getTimezoneOffset() / 60;
            ret.append(((hour >=3D 0) ? '+' : '-') + =
addLeadingZero(Math.floor(Math.abs(hour))) +
                dtf.TimeSeparator + =
addLeadingZero(Math.abs(this.getTimezoneOffset() % 60)));
            break;
        }
    }
    return ret.toString();
}
Number.__typeName =3D 'Number';
Number.__class =3D true;

Number.parseLocale =3D function Number$parseLocale(value) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <returns type=3D"Number"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String}
    ]);
    if (e) throw e;

    return Number._parse(value, Sys.CultureInfo.CurrentCulture);
}
Number.parseInvariant =3D function Number$parseInvariant(value) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <returns type=3D"Number"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String}
    ]);
    if (e) throw e;

    return Number._parse(value, Sys.CultureInfo.InvariantCulture);
}
Number._parse =3D function Number$_parse(value, cultureInfo) {
            var valueStr =3D value.trim();
    if (valueStr.match(/infinity/i) !=3D=3D null) {
        return parseFloat(valueStr);
    }
    if (valueStr.match(/^0x[a-f0-9]+$/i) !=3D=3D null) {
        return parseInt(valueStr);
    }
    var numFormat =3D cultureInfo.numberFormat;
    var decSeparator =3D numFormat.NumberDecimalSeparator;
    var grpSeparator =3D numFormat.NumberGroupSeparator;

            var numberFormatRegex =3D new RegExp("^[+-]?[\\d\\" + =
grpSeparator + "]*\\" + decSeparator + "?\\d*([eE][+-]?\\d+)?$");
    if (!valueStr.match(numberFormatRegex)) {
        return Number.NaN;
    }

        valueStr =3D valueStr.split(grpSeparator).join("");

        valueStr =3D valueStr.replace(decSeparator, ".");

    return parseFloat(valueStr);
}

Number.prototype.format =3D function Number$format(format) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;

    return this._toFormattedString(format, =
Sys.CultureInfo.InvariantCulture);
}
Number.prototype.localeFormat =3D function Number$localeFormat(format) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String}
    ]);
    if (e) throw e;

    return this._toFormattedString(format, =
Sys.CultureInfo.CurrentCulture);
}
Number.prototype._toFormattedString =3D function =
Number$_toFormattedString(format, cultureInfo) {
    if (!format || (format.length =3D=3D=3D 0) || (format =3D=3D=3D =
'i')) {
        if (cultureInfo && (cultureInfo.name.length > 0)) {
            return this.toLocaleString();
        }
        else {
            return this.toString();
        }
    }

        var _percentPositivePattern =3D ["n %", "n%", "%n" ];
    var _percentNegativePattern =3D ["-n %", "-n%", "-%n"];
    var _numberNegativePattern =3D ["(n)","-n","- n","n-","n -"];
    var _currencyPositivePattern =3D ["$n","n$","$ n","n $"];
    var _currencyNegativePattern =3D =
["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n =
$-","$ n-","$ -n","n- $","($ n)","(n $)"];

        function expandNumber(number, precision, groupSizes, sep, =
decimalChar) {
       =20
        var curSize =3D groupSizes[0];
        var curGroupIndex =3D 1;

                var numberString =3D number.toString();
        var right =3D "";
        var exponent =3D "";
                var decimalSplit =3D numberString.split('.');
        if (decimalSplit.length > 1) {
            numberString =3D decimalSplit[0];
            right =3D decimalSplit[1];
                        var exponentSplit =3D right.split(/e/i);
            if (exponentSplit.length > 1) {
                right =3D exponentSplit[0];
                exponent =3D "e" + exponentSplit[1];
            }
        }

                if (precision > 0) {
                        var rightDifference =3D right.length - =
precision;
            if (rightDifference > 0) {
                right =3D right.slice(0, precision);
            } else if (rightDifference < 0) {
                for (var i=3D0; i<Math.abs(rightDifference); i++) {
                    right +=3D '0';
                }
            }

                        right =3D decimalChar + right;
        }
        else {             right =3D "";
        }
        right +=3D exponent;

        var stringIndex =3D numberString.length-1;
        var ret =3D "";
        while (stringIndex >=3D 0) {

                        if (curSize =3D=3D=3D 0 || curSize > =
stringIndex) {
                if (ret.length > 0)
                    return numberString.slice(0, stringIndex + 1) + sep =
+ ret + right;
                else
                    return numberString.slice(0, stringIndex + 1) + =
right;
            }

            if (ret.length > 0)
                ret =3D numberString.slice(stringIndex - curSize + 1, =
stringIndex+1) + sep + ret;
            else
                ret =3D numberString.slice(stringIndex - curSize + 1, =
stringIndex+1);

            stringIndex -=3D curSize;

            if (curGroupIndex < groupSizes.length) {
                curSize =3D groupSizes[curGroupIndex];
                curGroupIndex++;
            }
        }
        return numberString.slice(0, stringIndex + 1) + sep + ret + =
right;
    }
    var nf =3D cultureInfo.numberFormat;

        var number =3D Math.abs(this);

        if (!format)
        format =3D "D";

    var precision =3D -1;
    if (format.length > 1) precision =3D parseInt(format.slice(1));

    var pattern;
    switch (format.charAt(0)) {
    case "d":
    case "D":
        pattern =3D 'n';

                if (precision !=3D=3D -1) {
            var numberStr =3D ""+number;
            var zerosToAdd =3D precision - numberStr.length;
            if (zerosToAdd > 0) {
                for (var i=3D0; i<zerosToAdd; i++) {
                    numberStr =3D '0'+numberStr;
                }
            }
            number =3D numberStr;
        }

                if (this < 0) number =3D -number;
        break;
    case "c":
    case "C":
        if (this < 0) pattern =3D =
_currencyNegativePattern[nf.CurrencyNegativePattern];
        else pattern =3D =
_currencyPositivePattern[nf.CurrencyPositivePattern];
        if (precision =3D=3D=3D -1) precision =3D =
nf.CurrencyDecimalDigits;
        number =3D expandNumber(Math.abs(this), precision, =
nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, =
nf.CurrencyDecimalSeparator);
        break;
    case "n":
    case "N":
        if (this < 0) pattern =3D =
_numberNegativePattern[nf.NumberNegativePattern];
        else pattern =3D 'n';
        if (precision =3D=3D=3D -1) precision =3D =
nf.NumberDecimalDigits;
        number =3D expandNumber(Math.abs(this), precision, =
nf.NumberGroupSizes, nf.NumberGroupSeparator, =
nf.NumberDecimalSeparator);
        break;
    case "p":
    case "P":
        if (this < 0) pattern =3D =
_percentNegativePattern[nf.PercentNegativePattern];
        else pattern =3D =
_percentPositivePattern[nf.PercentPositivePattern];
        if (precision =3D=3D=3D -1) precision =3D =
nf.PercentDecimalDigits;
        number =3D expandNumber(Math.abs(this), precision, =
nf.PercentGroupSizes, nf.PercentGroupSeparator, =
nf.PercentDecimalSeparator);
        break;
    default:
        throw Error.format(Sys.Res.formatBadFormatSpecifier);
    }

    var regex =3D /n|\$|-|%/g;

        var ret =3D "";

    for (;;) {

                var index =3D regex.lastIndex;

                var ar =3D regex.exec(pattern);

                ret +=3D pattern.slice(index, ar ? ar.index : =
pattern.length);

        if (!ar)
            break;

        switch (ar[0]) {
        case "n":
            ret +=3D number;
            break;
        case "$":
            ret +=3D nf.CurrencySymbol;
            break;
        case "-":
            ret +=3D nf.NegativeSign;
            break;
        case "%":
            ret +=3D nf.PercentSymbol;
            break;
        }
    }

    return ret;
}
RegExp.__typeName =3D 'RegExp';
RegExp.__class =3D true;
Array.__typeName =3D 'Array';
Array.__class =3D true;

Array.add =3D Array.enqueue =3D function Array$enqueue(array, item) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"item" mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;


        array[array.length] =3D item;
}

Array.addRange =3D function Array$addRange(array, items) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"items" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "items", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;


        array.push.apply(array, items);
}

Array.clear =3D function Array$clear(array) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;

    array.length =3D 0;
}

Array.clone =3D function Array$clone(array) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <returns type=3D"Array" elementMayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;

    if (array.length =3D=3D=3D 1) {
        return [array[0]];
    }
    else {
                        return Array.apply(null, array);
    }
}

Array.contains =3D function Array$contains(array, item) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"item" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;

    return (Array.indexOf(array, item) >=3D 0);
}

Array.dequeue =3D function Array$dequeue(array) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <returns mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true}
    ]);
    if (e) throw e;

    return array.shift();
}

Array.forEach =3D function Array$forEach(array, method, instance) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"method" type=3D"Function"></param>
    /// <param name=3D"instance" optional=3D"true" =
mayBeNull=3D"true"></param>
    var e =3D 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 =3D 0, l =3D array.length; i < l; i++) {
        var elt =3D array[i];
        if (typeof(elt) !=3D=3D 'undefined') method.call(instance, elt, =
i, array);
    }
}

Array.indexOf =3D function Array$indexOf(array, item, start) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"item" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"start" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"Number"></returns>
    var e =3D 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;

    if (typeof(item) =3D=3D=3D "undefined") return -1;
    var length =3D array.length;
    if (length !=3D=3D 0) {
                start =3D start - 0;
                if (isNaN(start)) {
            start =3D 0;
        }
        else {
                                    if (isFinite(start)) {
                                start =3D start - (start % 1);
            }
                        if (start < 0) {
                start =3D Math.max(0, length + start);
            }
        }

                for (var i =3D start; i < length; i++) {
            if ((typeof(array[i]) !=3D=3D "undefined") && (array[i] =
=3D=3D=3D item)) {
                return i;
            }
        }
    }
    return -1;
}

Array.insert =3D function Array$insert(array, index, item) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"index" mayBeNull=3D"true"></param>
    /// <param name=3D"item" mayBeNull=3D"true"></param>
    var e =3D 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);
}

Array.parse =3D function Array$parse(value) {
    /// <param name=3D"value" type=3D"String" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"Array" elementMayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String, mayBeNull: true}
    ]);
    if (e) throw e;

    if (!value) return [];
    var v =3D eval(value);
    if (!Array.isInstanceOfType(v)) throw Error.argument('value', =
Sys.Res.arrayParseBadFormat);
    return v;
}

Array.remove =3D function Array$remove(array, item) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"item" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true}
    ]);
    if (e) throw e;

    var index =3D Array.indexOf(array, item);
    if (index >=3D 0) {
        array.splice(index, 1);
    }
    return (index >=3D 0);
}

Array.removeAt =3D function Array$removeAt(array, index) {
    /// <param name=3D"array" type=3D"Array" =
elementMayBeNull=3D"true"></param>
    /// <param name=3D"index" mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "index", mayBeNull: true}
    ]);
    if (e) throw e;

    array.splice(index, 1);
}
String.__typeName =3D 'String';
String.__class =3D true;

String.prototype.endsWith =3D function String$endsWith(suffix) {
    /// <param name=3D"suffix" type=3D"String"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "suffix", type: String}
    ]);
    if (e) throw e;

    return (this.substr(this.length - suffix.length) =3D=3D=3D suffix);
}

String.prototype.startsWith =3D function String$startsWith(prefix) {
    /// <param name=3D"prefix" type=3D"String"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "prefix", type: String}
    ]);
    if (e) throw e;

    return (this.substr(0, prefix.length) =3D=3D=3D prefix);
}

String.prototype.trim =3D function String$trim() {
    /// <returns type=3D"String"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return this.replace(/^\s+|\s+$/g, '');
}

String.prototype.trimEnd =3D function String$trimEnd() {
    /// <returns type=3D"String"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return this.replace(/\s+$/, '');
}

String.prototype.trimStart =3D function String$trimStart() {
    /// <returns type=3D"String"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return this.replace(/^\s+/, '');
}

String.format =3D function String$format(format, args) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <param name=3D"args" parameterArray=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String},
        {name: "args", mayBeNull: true, parameterArray: true}
    ]);
    if (e) throw e;

    return String._toFormattedString(false, arguments);
}

String.localeFormat =3D function String$localeFormat(format, args) {
    /// <param name=3D"format" type=3D"String"></param>
    /// <param name=3D"args" parameterArray=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "format", type: String},
        {name: "args", mayBeNull: true, parameterArray: true}
    ]);
    if (e) throw e;

    return String._toFormattedString(true, arguments);
}

String._toFormattedString =3D function =
String$_toFormattedString(useLocale, args) {
    var result =3D '';
    var format =3D args[0];

    for (var i=3D0;;) {
                var open =3D format.indexOf('{', i);
        var close =3D format.indexOf('}', i);
        if ((open < 0) && (close < 0)) {
                        result +=3D format.slice(i);
            break;
        }
        if ((close > 0) && ((close < open) || (open < 0))) {
                        if (format.charAt(close + 1) !=3D=3D '}') {
                throw Error.argument('format', =
Sys.Res.stringFormatBraceMismatch);
            }
            result +=3D format.slice(i, close + 1);
            i =3D close + 2;
            continue;
        }

                result +=3D format.slice(i, open);
        i =3D open + 1;

                if (format.charAt(i) =3D=3D=3D '{') {
            result +=3D '{';
            i++;
            continue;
        }

                if (close < 0) throw Error.argument('format', =
Sys.Res.stringFormatBraceMismatch);

       =20
                var brace =3D format.substring(i, close);
        var colonIndex =3D brace.indexOf(':');
        var argNumber =3D parseInt((colonIndex < 0)? brace : =
brace.substring(0, colonIndex)) + 1;
        if (isNaN(argNumber)) throw Error.argument('format', =
Sys.Res.stringFormatInvalid);
        var argFormat =3D (colonIndex < 0)? '' : =
brace.substring(colonIndex + 1);

        var arg =3D args[argNumber];
        if (typeof(arg) =3D=3D=3D "undefined" || arg =3D=3D=3D null) {
            arg =3D '';
        }

                if (arg.toFormattedString) {
            result +=3D arg.toFormattedString(argFormat);
        }
        else if (useLocale && arg.localeFormat) {
            result +=3D arg.localeFormat(argFormat);
        }
        else if (arg.format) {
            result +=3D arg.format(argFormat);
        }
        else
            result +=3D arg.toString();

        i =3D close + 1;
    }

    return result;
}

Type.registerNamespace('Sys');
Sys.IDisposable =3D function Sys$IDisposable() {
    throw Error.notImplemented();
}

    function Sys$IDisposable$dispose() {
        throw Error.notImplemented();
    }
Sys.IDisposable.prototype =3D {
    dispose: Sys$IDisposable$dispose
}
Sys.IDisposable.registerInterface('Sys.IDisposable');
Sys.StringBuilder =3D function Sys$StringBuilder(initialText) {
    /// <param name=3D"initialText" optional=3D"true" =
mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "initialText", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    this._parts =3D (typeof(initialText) !=3D=3D 'undefined' && =
initialText !=3D=3D null && initialText !=3D=3D '') ?
        [initialText.toString()] : [];
    this._value =3D {};
    this._len =3D 0;
}


    function Sys$StringBuilder$append(text) {
        /// <param name=3D"text" mayBeNull=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "text", mayBeNull: true}
        ]);
        if (e) throw e;

        this._parts[this._parts.length] =3D text;
    }

    function Sys$StringBuilder$appendLine(text) {
        /// <param name=3D"text" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "text", mayBeNull: true, optional: true}
        ]);
        if (e) throw e;

        this._parts[this._parts.length] =3D
            ((typeof(text) =3D=3D=3D 'undefined') || (text =3D=3D=3D =
null) || (text =3D=3D=3D '')) ?
            '\r\n' : text + '\r\n';
    }

    function Sys$StringBuilder$clear() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        this._parts =3D [];
        this._value =3D {};
        this._len =3D 0;
    }

    function Sys$StringBuilder$isEmpty() {
        /// <returns type=3D"Boolean"></returns>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._parts.length =3D=3D=3D 0) return true;
        return this.toString() =3D=3D=3D '';
    }



    function Sys$StringBuilder$toString(separator) {
        /// <param name=3D"separator" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
        /// <returns type=3D"String"></returns>
        var e =3D Function._validateParams(arguments, [
            {name: "separator", type: String, mayBeNull: true, optional: =
true}
        ]);
        if (e) throw e;

        separator =3D separator || '';
        var parts =3D this._parts;
        if (this._len !=3D=3D parts.length) {
            this._value =3D {};
            this._len =3D parts.length;
        }
        var val =3D this._value;
        if (typeof(val[separator]) =3D=3D=3D 'undefined') {
                        if (separator !=3D=3D '') {
                for (var i =3D 0; i < parts.length;) {
                    if ((typeof(parts[i]) =3D=3D=3D 'undefined') || =
(parts[i] =3D=3D=3D '') || (parts[i] =3D=3D=3D null)) {
                        parts.splice(i, 1);
                    }
                    else {
                        i++;
                    }
                }
            }
            val[separator] =3D this._parts.join(separator);
        }
        return val[separator];
    }
Sys.StringBuilder.prototype =3D {
    append: Sys$StringBuilder$append,

    appendLine: Sys$StringBuilder$appendLine,

    clear: Sys$StringBuilder$clear,

    isEmpty: Sys$StringBuilder$isEmpty,

            toString: Sys$StringBuilder$toString
}
Sys.StringBuilder.registerClass('Sys.StringBuilder');
if (!window.XMLHttpRequest) {
    window.XMLHttpRequest =3D function window$XMLHttpRequest() {
        var progIDs =3D [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ];
	   =20
        for (var i =3D 0; i < progIDs.length; i++) {
            try {
                var xmlHttp =3D new ActiveXObject(progIDs[i]);
                return xmlHttp;
            }
            catch (ex) {
            }
        }
	   =20
        return null;
    }
}

Sys.Browser =3D {};

Sys.Browser.InternetExplorer =3D {};
Sys.Browser.Firefox =3D {};
Sys.Browser.Safari =3D {};
Sys.Browser.Opera =3D {};

Sys.Browser.agent =3D null;
Sys.Browser.hasDebuggerStatement =3D false;
Sys.Browser.name =3D navigator.appName;
Sys.Browser.version =3D parseFloat(navigator.appVersion);

if (navigator.userAgent.indexOf(' MSIE ') > -1) {
    Sys.Browser.agent =3D Sys.Browser.InternetExplorer;
    Sys.Browser.version =3D parseFloat(navigator.userAgent.match(/MSIE =
(\d+\.\d+)/)[1]);
    Sys.Browser.hasDebuggerStatement =3D true;
}
else if (navigator.userAgent.indexOf(' Firefox/') > -1) {
    Sys.Browser.agent =3D Sys.Browser.Firefox;
    Sys.Browser.version =3D parseFloat(navigator.userAgent.match(/ =
Firefox\/(\d+\.\d+)/)[1]);
    Sys.Browser.name =3D 'Firefox';
    Sys.Browser.hasDebuggerStatement =3D true;
}
else if (navigator.userAgent.indexOf(' Safari/') > -1) {
    Sys.Browser.agent =3D Sys.Browser.Safari;
    Sys.Browser.version =3D parseFloat(navigator.userAgent.match(/ =
Safari\/(\d+\.\d+)/)[1]);
    Sys.Browser.name =3D 'Safari';
}
else if (navigator.userAgent.indexOf('Opera/') > -1) {
    Sys.Browser.agent =3D Sys.Browser.Opera;
}


Type.registerNamespace('Sys.UI');

Sys._Debug =3D function Sys$_Debug() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
}


    function Sys$_Debug$_appendConsole(text) {
                if ((typeof(Debug) !=3D=3D '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);
        }
    }

    function Sys$_Debug$_appendTrace(text) {
        var traceElement =3D document.getElementById('TraceConsole');
        if (traceElement && (traceElement.tagName.toUpperCase() =
=3D=3D=3D 'TEXTAREA')) {
            traceElement.value +=3D text + '\n';
        }
    }

    function Sys$_Debug$assert(condition, message, displayCaller) {
        /// <param name=3D"condition" type=3D"Boolean"></param>
        /// <param name=3D"message" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
        /// <param name=3D"displayCaller" type=3D"Boolean" =
optional=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "condition", type: Boolean},
            {name: "message", type: String, mayBeNull: true, optional: =
true},
            {name: "displayCaller", type: Boolean, optional: true}
        ]);
        if (e) throw e;

        if (!condition) {
            message =3D (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);
            }
        }
    }

    function Sys$_Debug$clearTrace() {
        var traceElement =3D document.getElementById('TraceConsole');
        if (traceElement && (traceElement.tagName.toUpperCase() =
=3D=3D=3D 'TEXTAREA')) {
            traceElement.value =3D '';
        }
    }

    function Sys$_Debug$fail(message) {
        /// <param name=3D"message" type=3D"String" =
mayBeNull=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "message", type: String, mayBeNull: true}
        ]);
        if (e) throw e;

        this._appendConsole(message);

                if (Sys.Browser.hasDebuggerStatement) {
            eval('debugger');
        }
    }

    function Sys$_Debug$trace(text) {
        /// <param name=3D"text"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "text"}
        ]);
        if (e) throw e;

        this._appendConsole(text);
        this._appendTrace(text);
    }

    function Sys$_Debug$traceDump(object, name) {
        /// <param name=3D"object" mayBeNull=3D"true"></param>
        /// <param name=3D"name" type=3D"String" mayBeNull=3D"true" =
optional=3D"true"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "object", mayBeNull: true},
            {name: "name", type: String, mayBeNull: true, optional: =
true}
        ]);
        if (e) throw e;

        var text =3D this._traceDump(object, name, true);
    }

    function Sys$_Debug$_traceDump(object, name, recursive, =
indentationPadding, loopArray) {
        name =3D name? name : 'traceDump';
        indentationPadding =3D indentationPadding? indentationPadding : =
'';
        if (object =3D=3D=3D null) {
            this.trace(indentationPadding + name + ': null');
            return;
        }
        switch(typeof(object)) {
            case 'undefined':
                this.trace(indentationPadding + name + ': Undefined');
                break;
            case 'number': case 'string': case 'boolean':
                this.trace(indentationPadding + name + ': ' + object);
                break;
            default:
                if (Date.isInstanceOfType(object) || =
RegExp.isInstanceOfType(object)) {
                    this.trace(indentationPadding + name + ': ' + =
object.toString());
                    break;
                }
                if (!loopArray) {
                    loopArray =3D [];
                }
                else if (Array.contains(loopArray, object)) {
                    this.trace(indentationPadding + name + ': ...');
                    return;
                }
                Array.add(loopArray, object);

                                                                if =
((object =3D=3D window) || (object =3D=3D=3D document) ||
                    (window.HTMLElement && (object instanceof =
HTMLElement)) ||
                    (typeof(object.nodeName) =3D=3D=3D 'string')) {
                    var tag =3D object.tagName? object.tagName : =
'DomElement';
                    if (object.id) {
                        tag +=3D ' - ' + object.id;
                    }
                    this.trace(indentationPadding + name + ' {' +  tag + =
'}');
                }
                                else {
                    var typeName =3D Object.getTypeName(object);
                    this.trace(indentationPadding + name + =
(typeof(typeName) =3D=3D=3D 'string' ? ' {' + typeName + '}' : ''));
                    if ((indentationPadding =3D=3D=3D '') || recursive) =
{
                        indentationPadding +=3D "    ";
                        var i, length, properties, p, v;
                        if (Array.isInstanceOfType(object)) {
                            length =3D object.length;
                            for (i =3D 0; i < length; i++) {
                                this._traceDump(object[i], '[' + i + =
']', recursive, indentationPadding, loopArray);
                            }
                        }
                        else {
                            for (p in object) {
                                v =3D object[p];
                                if (!Function.isInstanceOfType(v)) {
                                    this._traceDump(v, p, recursive, =
indentationPadding, loopArray);
                                }
                            }
                        }
                    }
                }
                Array.remove(loopArray, object);
        }
    }
Sys._Debug.prototype =3D {

    _appendConsole: Sys$_Debug$_appendConsole,

    _appendTrace: Sys$_Debug$_appendTrace,

    assert: Sys$_Debug$assert,

    clearTrace: Sys$_Debug$clearTrace,

    fail: Sys$_Debug$fail,

    trace: Sys$_Debug$trace,

    traceDump: Sys$_Debug$traceDump,

    _traceDump: Sys$_Debug$_traceDump
}
Sys._Debug.registerClass('Sys._Debug');

Sys.Debug =3D new Sys._Debug();
    Sys.Debug.isDebug =3D true;
function Sys$Enum$parse(value, ignoreCase) {
    /// <param name=3D"value" type=3D"String"></param>
    /// <param name=3D"ignoreCase" type=3D"Boolean" =
optional=3D"true"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", type: String},
        {name: "ignoreCase", type: Boolean, optional: true}
    ]);
    if (e) throw e;

    var values, parsed, val;
    if (ignoreCase) {
        values =3D this.__lowerCaseValues;
        if (!values) {
            this.__lowerCaseValues =3D values =3D {};
            var prototype =3D this.prototype;
            for (var name in prototype) {
                values[name.toLowerCase()] =3D prototype[name];
            }
        }
    }
    else {
        values =3D this.prototype;
    }
    if (!this.__flags) {
        val =3D (ignoreCase ? value.toLowerCase() : value);
        parsed =3D values[val.trim()];
        if (typeof(parsed) !=3D=3D 'number') throw =
Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, =
this.__typeName));
        return parsed;
    }
    else {
        var parts =3D (ignoreCase ? value.toLowerCase() : =
value).split(',');
        var v =3D 0;

        for (var i =3D parts.length - 1; i >=3D 0; i--) {
            var part =3D parts[i].trim();
            parsed =3D values[part];
            if (typeof(parsed) !=3D=3D 'number') throw =
Error.argument('value', String.format(Sys.Res.enumInvalidValue, =
value.split(',')[i].trim(), this.__typeName));
            v |=3D parsed;
        }
        return v;
    }
}

function Sys$Enum$toString(value) {
    /// <param name=3D"value" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "value", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

            if ((typeof(value) =3D=3D=3D 'undefined') || (value =
=3D=3D=3D null)) return this.__string;
    if ((typeof(value) !=3D 'number') || ((value % 1) !=3D=3D 0)) throw =
Error.argumentType('value', Object.getType(value), this);
    var values =3D this.prototype;
    var i;
    if (!this.__flags || (value =3D=3D=3D 0)) {
        for (i in values) {
            if (values[i] =3D=3D=3D value) {
                return i;
            }
        }
    }
    else {
        var sorted =3D this.__sortedValues;
        if (!sorted) {
            sorted =3D [];
            for (i in values) {
                sorted[sorted.length] =3D {key: i, value: values[i]};
            }
            sorted.sort(function(a, b) {
                return a.value - b.value;
            });
            this.__sortedValues =3D sorted;
        }
        var parts =3D [];
        var v =3D value;
        for (i =3D sorted.length - 1; i >=3D 0; i--) {
            var kvp =3D sorted[i];
            var vali =3D kvp.value;
            if (vali =3D=3D=3D 0) continue;
            if ((vali & value) =3D=3D=3D vali) {
                parts[parts.length] =3D kvp.key;
                v -=3D vali;
                if (v =3D=3D=3D 0) break;
            }
        }
        if (parts.length && v =3D=3D=3D 0) return =
parts.reverse().join(', ');
    }
    throw Error.argumentOutOfRange('value', value, =
String.format(Sys.Res.enumInvalidValue, value, this.__typeName));
}

Type.prototype.registerEnum =3D function Type$registerEnum(name, flags) =
{
    /// <param name=3D"name" type=3D"String"></param>
    /// <param name=3D"flags" type=3D"Boolean" =
optional=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "name", type: String},
        {name: "flags", type: Boolean, optional: true}
    ]);
    if (e) throw e;

    if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw =
Error.argument('name', Sys.Res.notATypeName);
        var parsedName;
    try {
        parsedName =3D eval(name);
    }
    catch(e) {
        throw Error.argument('name', Sys.Res.argumentTypeName);
    }
    if (parsedName !=3D=3D this) throw Error.argument('name', =
Sys.Res.badTypeName);
    if (window.__registeredTypes[name]) throw =
Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, =
name));
    for (var i in this.prototype) {
        var val =3D this.prototype[i];
        if (!Type.__identifierRegExp.test(i)) throw =
Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, i));
        if (typeof(val) !=3D=3D 'number' || (val % 1) !=3D=3D 0) throw =
Error.invalidOperation(Sys.Res.enumValueNotInteger);
        if (typeof(this[i]) !=3D=3D 'undefined') throw =
Error.invalidOperation(String.format(Sys.Res.enumReservedName, i));
    }
    for (var i in this.prototype) {
        this[i] =3D this.prototype[i];
    }
    this.__typeName =3D name;
    this.parse =3D Sys$Enum$parse;
    this.__string =3D this.toString();
    this.toString =3D Sys$Enum$toString;
    this.__flags =3D flags;
    this.__enum =3D true;
    window.__registeredTypes[name] =3D true;
}

Type.isEnum =3D function Type$isEnum(type) {
    /// <param name=3D"type" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(type) =3D=3D=3D 'undefined') || (type =3D=3D=3D null)) =
return false;
    return !!type.__enum;
}

Type.isFlags =3D function Type$isFlags(type) {
    /// <param name=3D"type" mayBeNull=3D"true"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "type", mayBeNull: true}
    ]);
    if (e) throw e;

    if ((typeof(type) =3D=3D=3D 'undefined') || (type =3D=3D=3D null)) =
return false;
    return !!type.__flags;
}
Sys.EventHandlerList =3D function Sys$EventHandlerList() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    this._list =3D {};
}


    function Sys$EventHandlerList$addHandler(id, handler) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <param name=3D"handler" type=3D"Function"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;

        Array.add(this._getEvent(id, true), handler);
    }
    function Sys$EventHandlerList$removeHandler(id, handler) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <param name=3D"handler" type=3D"Function"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "id", type: String},
            {name: "handler", type: Function}
        ]);
        if (e) throw e;

        var evt =3D this._getEvent(id);
        if (!evt) return;
        Array.remove(evt, handler);
    }
    function Sys$EventHandlerList$getHandler(id) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <returns type=3D"Function"></returns>
        var e =3D Function._validateParams(arguments, [
            {name: "id", type: String}
        ]);
        if (e) throw e;

        var evt =3D this._getEvent(id);
        if (!evt || (evt.length =3D=3D=3D 0)) return null;
        evt =3D Array.clone(evt);
        if (!evt._handler) {
            evt._handler =3D function(source, args) {
                for (var i =3D 0, l =3D evt.length; i < l; i++) {
                    evt[i](source, args);
                }
            };
        }
        return evt._handler;
    }

    function Sys$EventHandlerList$_getEvent(id, create) {
        if (!this._list[id]) {
            if (!create) return null;
            this._list[id] =3D [];
        }
        return this._list[id];
    }
Sys.EventHandlerList.prototype =3D {
    addHandler: Sys$EventHandlerList$addHandler,
    removeHandler: Sys$EventHandlerList$removeHandler,
    getHandler: Sys$EventHandlerList$getHandler,

    _getEvent: Sys$EventHandlerList$_getEvent
}
Sys.EventHandlerList.registerClass('Sys.EventHandlerList');
Sys.EventArgs =3D function Sys$EventArgs() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
}
Sys.EventArgs.registerClass('Sys.EventArgs');

Sys.EventArgs.Empty =3D new Sys.EventArgs();
Sys.CancelEventArgs =3D function Sys$CancelEventArgs() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    Sys.CancelEventArgs.initializeBase(this);

    this._cancel =3D false;
}


    function Sys$CancelEventArgs$get_cancel() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._cancel;
    }
    function Sys$CancelEventArgs$set_cancel(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Boolean}]);
        if (e) throw e;

        this._cancel =3D value;
    }
Sys.CancelEventArgs.prototype =3D {
    get_cancel: Sys$CancelEventArgs$get_cancel,
    set_cancel: Sys$CancelEventArgs$set_cancel
}

Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs);
Sys.INotifyPropertyChange =3D function Sys$INotifyPropertyChange() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}

    function Sys$INotifyPropertyChange$add_propertyChanged(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$INotifyPropertyChange$remove_propertyChanged(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        throw Error.notImplemented();
    }
Sys.INotifyPropertyChange.prototype =3D {
    add_propertyChanged: Sys$INotifyPropertyChange$add_propertyChanged,
    remove_propertyChanged: =
Sys$INotifyPropertyChange$remove_propertyChanged
}
Sys.INotifyPropertyChange.registerInterface('Sys.INotifyPropertyChange');=

Sys.PropertyChangedEventArgs =3D function =
Sys$PropertyChangedEventArgs(propertyName) {
    /// <param name=3D"propertyName" type=3D"String"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "propertyName", type: String}
    ]);
    if (e) throw e;

    Sys.PropertyChangedEventArgs.initializeBase(this);
    this._propertyName =3D propertyName;
}
=20
    function Sys$PropertyChangedEventArgs$get_propertyName() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._propertyName;
    }
Sys.PropertyChangedEventArgs.prototype =3D {
    get_propertyName: Sys$PropertyChangedEventArgs$get_propertyName
}
Sys.PropertyChangedEventArgs.registerClass('Sys.PropertyChangedEventArgs'=
, Sys.EventArgs);
Sys.INotifyDisposing =3D function Sys$INotifyDisposing() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}

    function Sys$INotifyDisposing$add_disposing(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$INotifyDisposing$remove_disposing(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        throw Error.notImplemented();
    }
Sys.INotifyDisposing.prototype =3D {
    add_disposing: Sys$INotifyDisposing$add_disposing,
    remove_disposing: Sys$INotifyDisposing$remove_disposing
}
Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");
Sys.Component =3D function Sys$Component() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    if (Sys.Application) Sys.Application.registerDisposableObject(this);
}





    function Sys$Component$get_events() {
        /// <value type=3D"Sys.EventHandlerList"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (!this._events) {
            this._events =3D new Sys.EventHandlerList();
        }
        return this._events;
    }
    function Sys$Component$get_id() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._id;
    }
    function Sys$Component$set_id(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        if (this._idSet) throw =
Error.invalidOperation(Sys.Res.componentCantSetIdTwice);
        this._idSet =3D true;
        var oldId =3D this.get_id();
        if (oldId && Sys.Application.findComponent(oldId)) throw =
Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp);
        this._id =3D value;
    }
    function Sys$Component$get_isInitialized() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._initialized;
    }
    function Sys$Component$get_isUpdating() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._updating;
    }
    function Sys$Component$add_disposing(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().addHandler("disposing", handler);
    }
    function Sys$Component$remove_disposing(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("disposing", handler);
    }
    function Sys$Component$add_propertyChanged(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().addHandler("propertyChanged", handler);
    }
    function Sys$Component$remove_propertyChanged(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("propertyChanged", handler);
    }
    function Sys$Component$beginUpdate() {
        this._updating =3D true;
    }
    function Sys$Component$dispose() {
        if (this._events) {
            var handler =3D this._events.getHandler("disposing");
            if (handler) {
                handler(this, Sys.EventArgs.Empty);
            }
        }
        delete this._events;
        Sys.Application.unregisterDisposableObject(this);
        Sys.Application.removeComponent(this);
    }
    function Sys$Component$endUpdate() {
        this._updating =3D false;
        if (!this._initialized) this.initialize();
        this.updated();
    }
    function Sys$Component$initialize() {
        this._initialized =3D true;
    }
    function Sys$Component$raisePropertyChanged(propertyName) {
        /// <param name=3D"propertyName" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "propertyName", type: String}
        ]);
        if (e) throw e;

        if (!this._events) return;
        var handler =3D this._events.getHandler("propertyChanged");
        if (handler) {
            handler(this, new =
Sys.PropertyChangedEventArgs(propertyName));
        }
    }
    function Sys$Component$updated() {
    }
Sys.Component.prototype =3D {
    _id: null,
    _idSet: false,
    _initialized: false,
    _updating: false,
    get_events: Sys$Component$get_events,
    get_id: Sys$Component$get_id,
    set_id: Sys$Component$set_id,
    get_isInitialized: Sys$Component$get_isInitialized,
    get_isUpdating: Sys$Component$get_isUpdating,
    add_disposing: Sys$Component$add_disposing,
    remove_disposing: Sys$Component$remove_disposing,
    add_propertyChanged: Sys$Component$add_propertyChanged,
    remove_propertyChanged: Sys$Component$remove_propertyChanged,
    beginUpdate: Sys$Component$beginUpdate,
    dispose: Sys$Component$dispose,
    endUpdate: Sys$Component$endUpdate,
    initialize: Sys$Component$initialize,
    raisePropertyChanged: Sys$Component$raisePropertyChanged,
    updated: Sys$Component$updated
}
Sys.Component.registerClass('Sys.Component', null, Sys.IDisposable, =
Sys.INotifyPropertyChange, Sys.INotifyDisposing);

function Sys$Component$_setProperties(target, properties) {
    /// <param name=3D"target"></param>
    /// <param name=3D"properties"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "target"},
        {name: "properties"}
    ]);
    if (e) throw e;

    var current;
    var targetType =3D Object.getType(target);
    var isObject =3D (targetType =3D=3D=3D Object) || (targetType =
=3D=3D=3D Sys.UI.DomElement);
    var isComponent =3D Sys.Component.isInstanceOfType(target) && =
!target.get_isUpdating();
    if (isComponent) target.beginUpdate();
    for (var name in properties) {
        var val =3D properties[name];
        var getter =3D isObject ? null : target["get_" + name];
        if (isObject || typeof(getter) !=3D=3D 'function') {
                        var targetVal =3D target[name];
            if (!isObject && typeof(targetVal) =3D=3D=3D 'undefined') =
throw Error.invalidOperation(String.format(Sys.Res.propertyUndefined, =
name));
            if (!val || (typeof(val) !=3D=3D 'object') || (isObject && =
!targetVal)) {
                target[name] =3D val;
            }
            else {
                Sys$Component$_setProperties(targetVal, val);
            }
        }
        else {
            var setter =3D target["set_" + name];
            if (typeof(setter) =3D=3D=3D 'function') {
                                setter.apply(target, [val]);
            }
            else if (val instanceof Array) {
                                current =3D getter.apply(target);
                if (!(current instanceof Array)) throw new =
Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name));
                for (var i =3D 0, j =3D current.length, l=3D val.length; =
i < l; i++, j++) {
                    current[j] =3D val[i];
                }
            }
            else if ((typeof(val) =3D=3D=3D 'object') && =
(Object.getType(val) =3D=3D=3D Object)) {
                                current =3D getter.apply(target);
                if ((typeof(current) =3D=3D=3D 'undefined') || (current =
=3D=3D=3D null)) throw new =
Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, =
name));
                Sys$Component$_setProperties(current, val);
            }
            else {
                                throw new =
Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, =
name));
            }
        }
    }
    if (isComponent) target.endUpdate();
}

function Sys$Component$_setReferences(component, references) {
    for (var name in references) {
        var setter =3D component["set_" + name];
        var reference =3D $find(references[name]);
        if (typeof(setter) !=3D=3D 'function') throw new =
Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, =
name));
        if (!reference) throw =
Error.invalidOperation(String.format(Sys.Res.referenceNotFound, =
references[name]));
        setter.apply(component, [reference]);
    }
}

var $create =3D Sys.Component.create =3D function =
Sys$Component$create(type, properties, events, references, element) {
    /// <param name=3D"type" type=3D"Type"></param>
    /// <param name=3D"properties" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"events" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"references" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <param name=3D"element" domElement=3D"true" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns type=3D"Sys.UI.Component"></returns>
    var e =3D 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.Component)) {
        throw Error.argument('type', =
String.format(Sys.Res.createNotComponent, type.getName()));
    }
    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 =3D (element ? new type(element): new type());
    var app =3D Sys.Application;
    var creatingComponents =3D app.get_isCreatingComponents();

    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]);
        }
    }

    app._createdComponents[app._createdComponents.length] =3D component;
    if (component.get_id()) {
        app.addComponent(component);
    }
    if (creatingComponents) {
        if (references) {
            app._addComponentToSecondPass(component, references);
        }
        else {
            component.endUpdate();
        }
    }
    else {
        if (references) {
            Sys$Component$_setReferences(component, references);
        }
        component.endUpdate();
    }

    return component;
}
Sys.UI.MouseButton =3D function Sys$UI$MouseButton() {
    /// <field name=3D"leftButton" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"middleButton" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"rightButton" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}




Sys.UI.MouseButton.prototype =3D {
    leftButton: 0,
    middleButton: 1,
    rightButton: 2
}
Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");
Sys.UI.Key =3D function Sys$UI$Key() {
    /// <field name=3D"backspace" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"tab" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"enter" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"esc" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"space" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"pageUp" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"pageDown" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"end" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"home" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"left" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"up" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"right" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"down" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"del" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}















Sys.UI.Key.prototype =3D {
    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
}
Sys.UI.Key.registerEnum("Sys.UI.Key");
Sys.UI.DomEvent =3D function Sys$UI$DomEvent(eventObject) {
    /// <param name=3D"eventObject"></param>
    /// <field name=3D"altKey" type=3D"Boolean"></field>
    /// <field name=3D"button" type=3D"Sys.UI.MouseButton"></field>
    /// <field name=3D"charCode" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"clientX" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"clientY" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"ctrlKey" type=3D"Boolean"></field>
    /// <field name=3D"keyCode" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"offsetX" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"offsetY" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"screenX" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"screenY" type=3D"Number" =
integer=3D"true"></field>
    /// <field name=3D"shiftKey" type=3D"Boolean"></field>
    /// <field name=3D"target" domElement=3D"true"></field>
    /// <field name=3D"type" type=3D"String"></field>
    var e =3D Function._validateParams(arguments, [
        {name: "eventObject"}
    ]);
    if (e) throw e;

    var e =3D eventObject;
    this.rawEvent =3D e;
    this.altKey =3D e.altKey;
    if (typeof(e.button) !=3D=3D 'undefined') {
        this.button =3D (typeof(e.which) !=3D=3D 'undefined') ? e.button =
:
            (e.button =3D=3D=3D 4) ? Sys.UI.MouseButton.middleButton :
            (e.button =3D=3D=3D 2) ? Sys.UI.MouseButton.rightButton :
            Sys.UI.MouseButton.leftButton;
    }
    if (e.type =3D=3D=3D 'keypress') {
        this.charCode =3D e.charCode || e.keyCode;
    }
    else if (e.keyCode && (e.keyCode =3D=3D=3D 46)) {
        this.keyCode =3D 127;
    }
    else {
        this.keyCode =3D e.keyCode;
    }
    this.clientX =3D e.clientX;
    this.clientY =3D e.clientY;
    this.ctrlKey =3D e.ctrlKey;
    this.target =3D e.target ? e.target : e.srcElement;
    if (this.target) {
        var loc =3D Sys.UI.DomElement.getLocation(this.target);
        this.offsetX =3D (typeof(e.offsetX) !=3D=3D 'undefined') ? =
e.offsetX : window.pageXOffset + (e.clientX || 0) - loc.x;
        this.offsetY =3D (typeof(e.offsetY) !=3D=3D 'undefined') ? =
e.offsetY : window.pageYOffset + (e.clientY || 0) - loc.y;
    }
    this.screenX =3D e.screenX;
    this.screenY =3D e.screenY;
    this.shiftKey =3D e.shiftKey;
    this.type =3D e.type;
}

    function Sys$UI$DomEvent$preventDefault() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this.rawEvent.preventDefault) {
            this.rawEvent.preventDefault();
        }
        else if (window.event) {
            window.event.returnValue =3D false;
        }
    }
    function Sys$UI$DomEvent$stopPropagation() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this.rawEvent.stopPropagation) {
            this.rawEvent.stopPropagation();
        }
        else if (window.event) {
            window.event.cancelBubble =3D true;
        }
    }
Sys.UI.DomEvent.prototype =3D {
    preventDefault: Sys$UI$DomEvent$preventDefault,
    stopPropagation: Sys$UI$DomEvent$stopPropagation
}
Sys.UI.DomEvent.registerClass('Sys.UI.DomEvent');

var $addHandler =3D Sys.UI.DomEvent.addHandler =3D function =
Sys$UI$DomEvent$addHandler(element, eventName, handler) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"eventName" type=3D"String"></param>
    /// <param name=3D"handler" type=3D"Function"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;

    if (!element._events) {
        element._events =3D {};
    }
    var eventCache =3D element._events[eventName];
    if (!eventCache) {
        element._events[eventName] =3D eventCache =3D [];
    }
    var browserHandler;
    if (element.addEventListener) {
        browserHandler =3D function(e) {
            return handler.call(element, new Sys.UI.DomEvent(e));
        }
        element.addEventListener(eventName, browserHandler, false);
    }
    else if (element.attachEvent) {
        browserHandler =3D function() {
            return handler.call(element, new =
Sys.UI.DomEvent(window.event));
        }
        element.attachEvent('on' + eventName, browserHandler);
    }
    eventCache[eventCache.length] =3D {handler: handler, browserHandler: =
browserHandler};
}

var $addHandlers =3D Sys.UI.DomEvent.addHandlers =3D function =
Sys$UI$DomEvent$addHandlers(element, events, handlerOwner) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"events" type=3D"Object"></param>
    /// <param name=3D"handlerOwner" optional=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "events", type: Object},
        {name: "handlerOwner", optional: true}
    ]);
    if (e) throw e;

    for (var name in events) {
        var handler =3D events[name];
        if (typeof(handler) !=3D=3D 'function') throw =
Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler);
        if (handlerOwner) {
            handler =3D Function.createDelegate(handlerOwner, handler);
        }
        $addHandler(element, name, handler);
    }
}

var $clearHandlers =3D Sys.UI.DomEvent.clearHandlers =3D function =
Sys$UI$DomEvent$clearHandlers(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    if (element._events) {
        var cache =3D element._events;
        for (var name in cache) {
            var handlers =3D cache[name];
            for (var i =3D handlers.length - 1; i >=3D 0; i--) {
                $removeHandler(element, name, handlers[i].handler);
            }
        }
        element._events =3D null;
    }
}

var $removeHandler =3D Sys.UI.DomEvent.removeHandler =3D function =
Sys$UI$DomEvent$removeHandler(element, eventName, handler) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"eventName" type=3D"String"></param>
    /// <param name=3D"handler" type=3D"Function"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "eventName", type: String},
        {name: "handler", type: Function}
    ]);
    if (e) throw e;

    var browserHandler =3D null;
    if ((typeof(element._events) !=3D=3D 'object') || (element._events =
=3D=3D null)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid);
    var cache =3D element._events[eventName];
    if (!(cache instanceof Array)) throw =
Error.invalidOperation(Sys.Res.eventHandlerInvalid);
    var browserHandler =3D null;
    for (var i =3D 0, l =3D cache.length; i < l; i++) {
        if (cache[i].handler =3D=3D=3D handler) {
            browserHandler =3D cache[i].browserHandler;
            break;
        }
    }
    if (typeof(browserHandler) !=3D=3D 'function') throw =
Error.invalidOperation(Sys.Res.eventHandlerInvalid);
    if (element.removeEventListener) {
        element.removeEventListener(eventName, browserHandler, false);
    }
    else if (element.detachEvent) {
        element.detachEvent('on' + eventName, browserHandler);
    }
    cache.splice(i, 1);
}
Sys.IContainer =3D function Sys$IContainer() {
    throw Error.notImplemented();
}

    function Sys$IContainer$addComponent(component) {
        /// <param name=3D"component" type=3D"Sys.Component"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$IContainer$removeComponent(component) {
        /// <param name=3D"component" type=3D"Sys.Component"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$IContainer$findComponent(id) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <returns type=3D"Sys.Component"></returns>
        var e =3D Function._validateParams(arguments, [
            {name: "id", type: String}
        ]);
        if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$IContainer$getComponents() {
        /// <returns type=3D"Array" =
elementType=3D"Sys.Component"></returns>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
Sys.IContainer.prototype =3D {
    addComponent: Sys$IContainer$addComponent,
    removeComponent: Sys$IContainer$removeComponent,
    findComponent: Sys$IContainer$findComponent,
    getComponents: Sys$IContainer$getComponents
}
Sys.IContainer.registerInterface("Sys.IContainer");


Sys._ScriptLoader =3D function Sys$_ScriptLoader() {
    this._scriptsToLoad =3D null;
    this._scriptLoadedDelegate =3D Function.createDelegate(this, =
this._scriptLoadedHandler);
}

    function Sys$_ScriptLoader$dispose() {
        this._stopLoading();
        if(this._events) {
            delete this._events;
        }
        this._scriptLoadedDelegate =3D null;       =20
    }

    function Sys$_ScriptLoader$loadScripts(scriptTimeout, =
allScriptsLoadedCallback, scriptLoadFailedCallback, =
scriptLoadTimeoutCallback) {
        /// <param name=3D"scriptTimeout" type=3D"Number" =
integer=3D"true"></param>
        /// <param name=3D"allScriptsLoadedCallback" type=3D"Function" =
mayBeNull=3D"true"></param>
        /// <param name=3D"scriptLoadFailedCallback" type=3D"Function" =
mayBeNull=3D"true"></param>
        /// <param name=3D"scriptLoadTimeoutCallback" type=3D"Function" =
mayBeNull=3D"true"></param>
        var e =3D 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;

        if(this._loading) {
            throw =
Error.invalidOperation(Sys.Res.scriptLoaderAlreadyLoading);
        }
        this._loading =3D true;
        this._allScriptsLoadedCallback =3D allScriptsLoadedCallback;
        this._scriptLoadFailedCallback =3D scriptLoadFailedCallback;
        this._scriptLoadTimeoutCallback =3D scriptLoadTimeoutCallback;
       =20
        this._loadScriptsInternal();
    }

    function Sys$_ScriptLoader$notifyScriptLoaded() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
       =20
                        if(!this._loading) {
                                    return;
        }

        this._currentTask._notified++;
       =20
        if(Sys.Browser.agent =3D=3D=3D Sys.Browser.Safari) {          =20
            if(this._currentTask._notified =3D=3D=3D 1) {
                                                                         =
                                       =
window.setTimeout(Function.createDelegate(this, function() {
                    =
this._scriptLoadedHandler(this._currentTask.get_scriptElement(), true);
                }), 0);
            }
        }

                            }

    function Sys$_ScriptLoader$queueCustomScriptTag(scriptAttributes) {
        /// <param name=3D"scriptAttributes" =
mayBeNull=3D"false"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "scriptAttributes"}
        ]);
        if (e) throw e;

        if(!this._scriptsToLoad) {
            this._scriptsToLoad =3D [];
        }
        Array.add(this._scriptsToLoad, scriptAttributes);
    }

    function Sys$_ScriptLoader$queueScriptBlock(scriptContent) {
        /// <param name=3D"scriptContent" type=3D"String" =
mayBeNull=3D"false"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "scriptContent", type: String}
        ]);
        if (e) throw e;

        if(!this._scriptsToLoad) {
            this._scriptsToLoad =3D [];
        }
        Array.add(this._scriptsToLoad, {text: scriptContent});
    }

    function Sys$_ScriptLoader$queueScriptReference(scriptUrl) {
        /// <param name=3D"scriptUrl" type=3D"String" =
mayBeNull=3D"false"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "scriptUrl", type: String}
        ]);
        if (e) throw e;

        if(!this._scriptsToLoad) {
            this._scriptsToLoad =3D [];
        }
        Array.add(this._scriptsToLoad, {src: scriptUrl});
    }

    function Sys$_ScriptLoader$_createScriptElement(queuedScript) {
        var scriptElement =3D document.createElement('SCRIPT');

                        scriptElement.type =3D 'text/javascript';

                for (var attr in queuedScript) {
            scriptElement[attr] =3D queuedScript[attr];
        }
       =20
        return scriptElement;
    }

    function Sys$_ScriptLoader$_loadScriptsInternal() {
                if (this._scriptsToLoad && this._scriptsToLoad.length > =
0) {
            var nextScript =3D Array.dequeue(this._scriptsToLoad);
                        var scriptElement =3D =
this._createScriptElement(nextScript);
           =20
            if (scriptElement.text && Sys.Browser.agent =3D=3D=3D =
Sys.Browser.Safari) {
                                scriptElement.innerHTML =3D =
scriptElement.text;
                delete scriptElement.text;
            }           =20

                                                            if =
(typeof(nextScript.src) =3D=3D=3D "string") {
                                this._currentTask =3D new =
Sys._ScriptLoaderTask(scriptElement, this._scriptLoadedDelegate);
                                                                         =
       this._currentTask.execute();
            }
            else {
                                                =
document.getElementsByTagName('HEAD')[0].appendChild(scriptElement);
               =20
                                =
Sys._ScriptLoader._clearScript(scriptElement);

                                                                =
this._loadScriptsInternal();
            }
        }
        else {
                        var callback =3D this._allScriptsLoadedCallback;
            this._stopLoading();
            if(callback) {
                callback(this);
            }
        }
    }

    function Sys$_ScriptLoader$_raiseError(multipleCallbacks) {
                var callback =3D this._scriptLoadFailedCallback;
        var scriptElement =3D this._currentTask.get_scriptElement();
        this._stopLoading();
       =20
        if(callback) {
            callback(this, scriptElement, multipleCallbacks);
        }
        else {
            throw =
Sys._ScriptLoader._errorScriptLoadFailed(scriptElement.src, =
multipleCallbacks);
        }
    }

    function Sys$_ScriptLoader$_scriptLoadedHandler(scriptElement, =
loaded) {
                                if(loaded && =
this._currentTask._notified) {
            if(this._currentTask._notified > 1) {
                                this._raiseError(true);
            }
            else {
                                =
Array.add(Sys._ScriptLoader._getLoadedScripts(), scriptElement.src);
                this._currentTask.dispose();
                this._currentTask =3D null;
                this._loadScriptsInternal();
            }
        }
        else {
                        this._raiseError(false);
        }
    }

    function Sys$_ScriptLoader$_scriptLoadTimeoutHandler() {
        var callback =3D this._scriptLoadTimeoutCallback;
        this._stopLoading();

        if(callback) {
            callback(this);
        }
    }

    function Sys$_ScriptLoader$_stopLoading() {
        if(this._timeoutCookie) {
            window.clearTimeout(this._timeoutCookie);
            this._timeoutCookie =3D null;
        }

        if(this._currentTask) {
            this._currentTask.dispose();
            this._currentTask =3D null;
        }

        this._scriptsToLoad =3D null;
        this._loading =3D null;
       =20
        this._allScriptsLoadedCallback =3D null;
        this._scriptLoadFailedCallback =3D null;
        this._scriptLoadTimeoutCallback =3D null;
    }
Sys._ScriptLoader.prototype =3D {
    dispose: Sys$_ScriptLoader$dispose,
   =20
    loadScripts: Sys$_ScriptLoader$loadScripts,
   =20
    notifyScriptLoaded: Sys$_ScriptLoader$notifyScriptLoaded,
   =20
    queueCustomScriptTag: Sys$_ScriptLoader$queueCustomScriptTag,

    queueScriptBlock: Sys$_ScriptLoader$queueScriptBlock,

    queueScriptReference: Sys$_ScriptLoader$queueScriptReference,
   =20
    _createScriptElement: Sys$_ScriptLoader$_createScriptElement,  =20

    _loadScriptsInternal: Sys$_ScriptLoader$_loadScriptsInternal,
   =20
    _raiseError: Sys$_ScriptLoader$_raiseError,
   =20
    _scriptLoadedHandler: Sys$_ScriptLoader$_scriptLoadedHandler,
   =20
    _scriptLoadTimeoutHandler: =
Sys$_ScriptLoader$_scriptLoadTimeoutHandler,
   =20
    _stopLoading: Sys$_ScriptLoader$_stopLoading   =20
}
Sys._ScriptLoader.registerClass('Sys._ScriptLoader', null, =
Sys.IDisposable);

Sys._ScriptLoader.getInstance =3D function =
Sys$_ScriptLoader$getInstance() {
    var sl =3D Sys._ScriptLoader._activeInstance;
    if(!sl) {
        sl =3D Sys._ScriptLoader._activeInstance =3D new =
Sys._ScriptLoader();
    }
    return sl;
}

Sys._ScriptLoader.isScriptLoaded =3D function =
Sys$_ScriptLoader$isScriptLoaded(scriptSrc) {
                    var dummyScript =3D =
document.createElement('script');
    dummyScript.src =3D scriptSrc;
    return Array.contains(Sys._ScriptLoader._getLoadedScripts(), =
dummyScript.src);
}

Sys._ScriptLoader.readLoadedScripts =3D function =
Sys$_ScriptLoader$readLoadedScripts() {
        if(!Sys._ScriptLoader._referencedScripts) {
        var referencedScripts =3D Sys._ScriptLoader._referencedScripts =
=3D [];

        var existingScripts =3D document.getElementsByTagName('SCRIPT');
        for (i =3D existingScripts.length - 1; i >=3D 0; i--) {
            var scriptNode =3D existingScripts[i];
            var scriptSrc =3D scriptNode.src;
            if (scriptSrc.length) {
                if (!Array.contains(referencedScripts, scriptSrc)) {
                    Array.add(referencedScripts, scriptSrc);
                }
            }
        }
    }
}

Sys._ScriptLoader._clearScript =3D function =
Sys$_ScriptLoader$_clearScript(scriptElement) {
    if (!Sys.Debug.isDebug) {
                        =
scriptElement.parentNode.removeChild(scriptElement);
    }
}

Sys._ScriptLoader._errorScriptLoadFailed =3D function =
Sys$_ScriptLoader$_errorScriptLoadFailed(scriptUrl, multipleCallbacks) {
    var errorMessage;
    if(multipleCallbacks) {
        errorMessage =3D Sys.Res.scriptLoadMultipleCallbacks;
    }
    else {
                errorMessage =3D Sys.Res.scriptLoadFailedDebug;
    }

    var displayMessage =3D "Sys.ScriptLoadFailedException: " + =
String.format(errorMessage, scriptUrl);
    var e =3D Error.create(displayMessage, {name: =
'Sys.ScriptLoadFailedException', 'scriptUrl': scriptUrl });
    e.popStackFrame();
    return e;
}

Sys._ScriptLoader._getLoadedScripts =3D function =
Sys$_ScriptLoader$_getLoadedScripts() {
    if(!Sys._ScriptLoader._referencedScripts) {
        Sys._ScriptLoader._referencedScripts =3D [];
        Sys._ScriptLoader.readLoadedScripts();
    }
    return Sys._ScriptLoader._referencedScripts;
}


Sys._ScriptLoaderTask =3D function Sys$_ScriptLoaderTask(scriptElement, =
completedCallback) {
    /// <param name=3D"scriptElement" domElement=3D"true"></param>
    /// <param name=3D"completedCallback" type=3D"Function"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "scriptElement", domElement: true},
        {name: "completedCallback", type: Function}
    ]);
    if (e) throw e;

    this._scriptElement =3D scriptElement;
    this._completedCallback =3D completedCallback;
    this._notified =3D 0;
}

    function Sys$_ScriptLoaderTask$get_scriptElement() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._scriptElement;
    }

    function Sys$_ScriptLoaderTask$dispose() {
                if(this._disposed) {
                        return;
        }
        this._disposed =3D true;
        this._removeScriptElementHandlers();
                Sys._ScriptLoader._clearScript(this._scriptElement);
        this._scriptElement =3D null;
    }

    function Sys$_ScriptLoaderTask$execute() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        this._addScriptElementHandlers();
        =
document.getElementsByTagName('HEAD')[0].appendChild(this._scriptElement)=
;
    }

    function Sys$_ScriptLoaderTask$_addScriptElementHandlers() {
                this._scriptLoadDelegate =3D =
Function.createDelegate(this, this._scriptLoadHandler);
       =20
        if (Sys.Browser.agent !=3D=3D Sys.Browser.InternetExplorer) {
            this._scriptElement.readyState =3D 'loaded';
            $addHandler(this._scriptElement, 'load', =
this._scriptLoadDelegate);
        }
        else {
            $addHandler(this._scriptElement, 'readystatechange', =
this._scriptLoadDelegate);
        }   =20
                        this._scriptErrorDelegate =3D =
Function.createDelegate(this, this._scriptErrorHandler);
        $addHandler(this._scriptElement, 'error', =
this._scriptErrorDelegate);
    }

    function Sys$_ScriptLoaderTask$_removeScriptElementHandlers() {
                if(this._scriptLoadDelegate) {
            var scriptElement =3D this.get_scriptElement();
            if (Sys.Browser.agent !=3D=3D Sys.Browser.InternetExplorer) =
{
                $removeHandler(scriptElement, 'load', =
this._scriptLoadDelegate);
            }
            else {
                $removeHandler(scriptElement, 'readystatechange', =
this._scriptLoadDelegate);
            }
            $removeHandler(scriptElement, 'error', =
this._scriptErrorDelegate);
            this._scriptErrorDelegate =3D null;
            this._scriptLoadDelegate =3D null;
        }
    }

    function Sys$_ScriptLoaderTask$_scriptErrorHandler() {
                if(this._disposed) {
            return;
        }
       =20
                this._completedCallback(this.get_scriptElement(), =
false);
    }

    function Sys$_ScriptLoaderTask$_scriptLoadHandler() {
                if(this._disposed) {
            return;
        }

        var scriptElement =3D this.get_scriptElement();
        if ((scriptElement.readyState !=3D=3D 'loaded') &&
            (scriptElement.readyState !=3D=3D 'complete')) {
            return;
        }
       =20
                                        var _this =3D this;
        window.setTimeout(function() {
            _this._completedCallback(scriptElement, true);
        }, 0);
    }
Sys._ScriptLoaderTask.prototype =3D {
    get_scriptElement: Sys$_ScriptLoaderTask$get_scriptElement,
   =20
    dispose: Sys$_ScriptLoaderTask$dispose,
       =20
    execute: Sys$_ScriptLoaderTask$execute,
      =20
    _addScriptElementHandlers: =
Sys$_ScriptLoaderTask$_addScriptElementHandlers,   =20
   =20
    _removeScriptElementHandlers: =
Sys$_ScriptLoaderTask$_removeScriptElementHandlers,   =20

    _scriptErrorHandler: Sys$_ScriptLoaderTask$_scriptErrorHandler,
          =20
    _scriptLoadHandler: Sys$_ScriptLoaderTask$_scriptLoadHandler =20
}
Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask", null, =
Sys.IDisposable);
Sys.ApplicationLoadEventArgs =3D function =
Sys$ApplicationLoadEventArgs(components, isPartialLoad) {
    /// <param name=3D"components" type=3D"Array" =
elementType=3D"Sys.Component"></param>
    /// <param name=3D"isPartialLoad" type=3D"Boolean"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "components", type: Array, elementType: Sys.Component},
        {name: "isPartialLoad", type: Boolean}
    ]);
    if (e) throw e;

    Sys.ApplicationLoadEventArgs.initializeBase(this);
    this._components =3D components;
    this._isPartialLoad =3D isPartialLoad;
}
=20
    function Sys$ApplicationLoadEventArgs$get_components() {
        /// <value type=3D"Array" elementType=3D"Sys.Component"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._components;
    }
    function Sys$ApplicationLoadEventArgs$get_isPartialLoad() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._isPartialLoad;
    }
Sys.ApplicationLoadEventArgs.prototype =3D {
    get_components: Sys$ApplicationLoadEventArgs$get_components,
    get_isPartialLoad: Sys$ApplicationLoadEventArgs$get_isPartialLoad
}
Sys.ApplicationLoadEventArgs.registerClass('Sys.ApplicationLoadEventArgs'=
, Sys.EventArgs);
Sys._Application =3D function Sys$_Application() {
    Sys._Application.initializeBase(this);

    this._disposableObjects =3D [];
    this._components =3D {};
    this._createdComponents =3D [];
    this._secondPassComponents =3D [];

    this._unloadHandlerDelegate =3D Function.createDelegate(this, =
this._unloadHandler);
    this._loadHandlerDelegate =3D Function.createDelegate(this, =
this._loadHandler);

    Sys.UI.DomEvent.addHandler(window, "unload", =
this._unloadHandlerDelegate);
    Sys.UI.DomEvent.addHandler(window, "load", =
this._loadHandlerDelegate);
}




    function Sys$_Application$get_isCreatingComponents() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._creatingComponents;
    }
    function Sys$_Application$add_load(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().addHandler("load", handler);
    }
    function Sys$_Application$remove_load(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("load", handler);
    }
    function Sys$_Application$add_init(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        if (this._initialized) {
            handler(this, Sys.EventArgs.Empty);
        }
        else {
            this.get_events().addHandler("init", handler);
        }
    }
    function Sys$_Application$remove_init(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("init", handler);
    }
    function Sys$_Application$add_unload(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().addHandler("unload", handler);
    }
    function Sys$_Application$remove_unload(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this.get_events().removeHandler("unload", handler);
    }
    function Sys$_Application$addComponent(component) {
        /// <param name=3D"component" type=3D"Sys.Component"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;

        var id =3D component.get_id();
        if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId);
        if (typeof(this._components[id]) !=3D=3D 'undefined') throw =
Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, =
id));
        this._components[id] =3D component;
    }
    function Sys$_Application$beginCreateComponents() {
        this._creatingComponents =3D true;
    }
    function Sys$_Application$dispose() {
        if (!this._disposing) {
            this._disposing =3D true;
            if (window.pageUnload) {
                window.pageUnload(this, Sys.EventArgs.Empty);
            }
            var unloadHandler =3D =
this.get_events().getHandler("unload");
            if (unloadHandler) {
                unloadHandler(this, Sys.EventArgs.Empty);
            }
            var disposableObjects =3D =
Array.clone(this._disposableObjects);
            for (var i =3D 0, l =3D disposableObjects.length; i < l; =
i++) {
                disposableObjects[i].dispose();
            }
            Array.clear(this._disposableObjects);

            Sys.UI.DomEvent.removeHandler(window, "unload", =
this._unloadHandlerDelegate);
            if(this._loadHandlerDelegate) {
                Sys.UI.DomEvent.removeHandler(window, "load", =
this._loadHandlerDelegate);
                this._loadHandlerDelegate =3D null;
            }

            var sl =3D Sys._ScriptLoader.getInstance();
            if(sl) {
                sl.dispose();
            }

            Sys._Application.callBaseMethod(this, 'dispose');
        }
    }
    function Sys$_Application$endCreateComponents() {
        var components =3D this._secondPassComponents;
        for (var i =3D 0, l =3D components.length; i < l; i++) {
            var component =3D components[i].component;
            Sys$Component$_setReferences(component, =
components[i].references);
            component.endUpdate();
        }
        this._secondPassComponents =3D [];
        this._creatingComponents =3D false;
    }
    function Sys$_Application$findComponent(id, parent) {
        /// <param name=3D"id" type=3D"String"></param>
        /// <param name=3D"parent" optional=3D"true" =
mayBeNull=3D"true"></param>
        /// <returns type=3D"Sys.Component" =
mayBeNull=3D"true"></returns>
        var e =3D 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);
    }
    function Sys$_Application$getComponents() {
        /// <returns type=3D"Array" =
elementType=3D"Sys.Component"></returns>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        var res =3D [];
        var components =3D this._components;
        for (var name in components) {
            res[res.length] =3D components[name];
        }
        return res;
    }
    function Sys$_Application$initialize() {
        if(!this._initialized && !this._initializing) {
            this._initializing =3D true;
                                                =
window.setTimeout(Function.createDelegate(this, this._doInitialize), 0);
        }
    }
    function Sys$_Application$notifyScriptLoaded() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        var sl =3D Sys._ScriptLoader.getInstance();
        if(sl) {
            sl.notifyScriptLoaded();
        }
    }
    function Sys$_Application$registerDisposableObject(object) {
        /// <param name=3D"object" type=3D"Sys.IDisposable"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "object", type: Sys.IDisposable}
        ]);
        if (e) throw e;

        if (!this._disposing) {
            this._disposableObjects[this._disposableObjects.length] =3D =
object;
        }
    }
    function Sys$_Application$raiseLoad() {
        var h =3D this.get_events().getHandler("load");
        var args =3D new =
Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), =
!this._initializing);
        if (h) {
            h(this, args);
        }

        if (window.pageLoad) {
            window.pageLoad(this, args);
        }
        this._createdComponents =3D [];
    }
    function Sys$_Application$removeComponent(component) {
        /// <param name=3D"component" type=3D"Sys.Component"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "component", type: Sys.Component}
        ]);
        if (e) throw e;

        var id =3D component.get_id();
        if (id) delete this._components[id];
    }
    function Sys$_Application$unregisterDisposableObject(object) {
        /// <param name=3D"object" type=3D"Sys.IDisposable"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "object", type: Sys.IDisposable}
        ]);
        if (e) throw e;

        if (!this._disposing) {
            Array.remove(this._disposableObjects, object);
        }
    }
    function Sys$_Application$_addComponentToSecondPass(component, =
references) {
        this._secondPassComponents[this._secondPassComponents.length] =
=3D {component: component, references: references};
    }
    function Sys$_Application$_doInitialize() {
        Sys._Application.callBaseMethod(this, 'initialize');

        var handler =3D this.get_events().getHandler("init");
        if (handler) {
            this.beginCreateComponents();
            handler(this, Sys.EventArgs.Empty);
            this.endCreateComponents();
        }
        this.raiseLoad();
        this._initializing =3D false;
    }
    function Sys$_Application$_loadHandler() {
                        if(this._loadHandlerDelegate) {
            Sys.UI.DomEvent.removeHandler(window, "load", =
this._loadHandlerDelegate);
            this._loadHandlerDelegate =3D null;
        }
        this.initialize();
    }
    function Sys$_Application$_unloadHandler(event) {
        this.dispose();
    }
Sys._Application.prototype =3D {
    _creatingComponents: false,
    _disposing: false,

    get_isCreatingComponents: Sys$_Application$get_isCreatingComponents,
    add_load: Sys$_Application$add_load,
    remove_load: Sys$_Application$remove_load,
    add_init: Sys$_Application$add_init,
    remove_init: Sys$_Application$remove_init,
    add_unload: Sys$_Application$add_unload,
    remove_unload: Sys$_Application$remove_unload,
    addComponent: Sys$_Application$addComponent,
    beginCreateComponents: Sys$_Application$beginCreateComponents,
    dispose: Sys$_Application$dispose,
    endCreateComponents: Sys$_Application$endCreateComponents,
    findComponent: Sys$_Application$findComponent,
    getComponents: Sys$_Application$getComponents,
    initialize: Sys$_Application$initialize,
    notifyScriptLoaded: Sys$_Application$notifyScriptLoaded,
    registerDisposableObject: Sys$_Application$registerDisposableObject,
    raiseLoad: Sys$_Application$raiseLoad,
    removeComponent: Sys$_Application$removeComponent,
    unregisterDisposableObject: =
Sys$_Application$unregisterDisposableObject,
    _addComponentToSecondPass: =
Sys$_Application$_addComponentToSecondPass,
    _doInitialize: Sys$_Application$_doInitialize,   =20
    _loadHandler: Sys$_Application$_loadHandler,
    _unloadHandler: Sys$_Application$_unloadHandler
}
Sys._Application.registerClass('Sys._Application', Sys.Component, =
Sys.IContainer);

Sys.Application =3D new Sys._Application();

var $find =3D Sys.Application.findComponent;

Type.registerNamespace('Sys.Net');

Sys.Net.WebRequestExecutor =3D function Sys$Net$WebRequestExecutor() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    this._webRequest =3D null;
    this._resultObject =3D null;
}


    function Sys$Net$WebRequestExecutor$get_webRequest() {
        /// <value type=3D"Sys.Net.WebRequest"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._webRequest;
    }

    function Sys$Net$WebRequestExecutor$_set_webRequest(value) {
        if (this.get_started()) {
            throw =
Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, =
'set_webRequest'));
        }

        this._webRequest =3D value;
    }


    function Sys$Net$WebRequestExecutor$get_started() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }

    function Sys$Net$WebRequestExecutor$get_responseAvailable() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }

    function Sys$Net$WebRequestExecutor$get_timedOut() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_aborted() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_responseData() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_statusCode() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_statusText() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_xml() {
        /// <value></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$get_object() {
        /// <value></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (!this._resultObject) {
            this._resultObject =3D =
Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData(=
));
        }
        return this._resultObject;
    }


    function Sys$Net$WebRequestExecutor$executeRequest() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$abort() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$getResponseHeader(header) {
        /// <param name=3D"header" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "header", type: String}
        ]);
        if (e) throw e;

        throw Error.notImplemented();
    }
    function Sys$Net$WebRequestExecutor$getAllResponseHeaders() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        throw Error.notImplemented();
    }
Sys.Net.WebRequestExecutor.prototype =3D {
    get_webRequest: Sys$Net$WebRequestExecutor$get_webRequest,

    _set_webRequest: Sys$Net$WebRequestExecutor$_set_webRequest,

        get_started: Sys$Net$WebRequestExecutor$get_started,

    get_responseAvailable: =
Sys$Net$WebRequestExecutor$get_responseAvailable,

    get_timedOut: Sys$Net$WebRequestExecutor$get_timedOut,
    get_aborted: Sys$Net$WebRequestExecutor$get_aborted,
    get_responseData: Sys$Net$WebRequestExecutor$get_responseData,
    get_statusCode: Sys$Net$WebRequestExecutor$get_statusCode,
    get_statusText: Sys$Net$WebRequestExecutor$get_statusText,
    get_xml: Sys$Net$WebRequestExecutor$get_xml,
    get_object: Sys$Net$WebRequestExecutor$get_object,

        executeRequest: Sys$Net$WebRequestExecutor$executeRequest,
    abort: Sys$Net$WebRequestExecutor$abort,
    getResponseHeader: Sys$Net$WebRequestExecutor$getResponseHeader,
    getAllResponseHeaders: =
Sys$Net$WebRequestExecutor$getAllResponseHeaders
}
Sys.Net.WebRequestExecutor.registerClass('Sys.Net.WebRequestExecutor');
window.XMLDOM =3D function window$XMLDOM(markup) {
    if (!window.DOMParser) {
        var progIDs =3D [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' =
];
        for (var i =3D 0; i < progIDs.length; i++) {
            try {
                var xmlDOM =3D new ActiveXObject(progIDs[i]);
                xmlDOM.async =3D false;
                xmlDOM.loadXML(markup);
                xmlDOM.setProperty('SelectionLanguage', 'XPath');
                return xmlDOM;
            }
            catch (ex) {
            }
        }
        return null;
    }
        else {
        try {
            var domParser =3D new window.DOMParser();
            return domParser.parseFromString(markup, 'text/xml');
        } catch (ex) {
            return null;
        }
    }
    return null;
    }

Sys.Net.XMLHttpExecutor =3D function Sys$Net$XMLHttpExecutor() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();

    Sys.Net.XMLHttpExecutor.initializeBase(this);

    var _this =3D this;
    this._xmlHttpRequest =3D null;
    this._webRequest =3D null;
    this._responseAvailable =3D false;
    this._timedOut =3D false;
    this._timer =3D null;
    this._aborted =3D false;
    this._started =3D false;

    this._onReadyStateChange =3D function () {
       =20
        if (_this._xmlHttpRequest.readyState =3D=3D=3D 4 ) {

            _this._clearTimer();
            _this._responseAvailable =3D true;
            _this._webRequest.completed(Sys.EventArgs.Empty);
            if (_this._xmlHttpRequest !=3D null) {
                _this._xmlHttpRequest.onreadystatechange =3D =
Function.emptyMethod;
                _this._xmlHttpRequest =3D null;
            }
        }
    }

    this._clearTimer =3D function this$_clearTimer() {
        if (_this._timer !=3D null) {
            window.clearTimeout(_this._timer);
            _this._timer =3D null;
        }
    }

    this._onTimeout =3D function this$_onTimeout() {
        if (!_this._responseAvailable) {
            _this._clearTimer();
            _this._timedOut =3D true;
            _this._xmlHttpRequest.onreadystatechange =3D =
Function.emptyMethod;
            _this._xmlHttpRequest.abort();
            _this._webRequest.completed(Sys.EventArgs.Empty);
            _this._xmlHttpRequest =3D null;
        }
    }

}



    function Sys$Net$XMLHttpExecutor$get_timedOut() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timedOut;
    }

    function Sys$Net$XMLHttpExecutor$get_started() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._started;
    }

    function Sys$Net$XMLHttpExecutor$get_responseAvailable() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return this._responseAvailable;
    }

    function Sys$Net$XMLHttpExecutor$get_aborted() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._aborted;
    }

    function Sys$Net$XMLHttpExecutor$executeRequest() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        this._webRequest =3D this.get_webRequest();

        if (this._started) {
            throw =
Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, =
'executeRequest'));
        }
        if (this._webRequest =3D=3D=3D null) {
            throw Error.invalidOperation(Sys.Res.nullWebRequest);
        }

        var body =3D this._webRequest.get_body();
        var headers =3D this._webRequest.get_headers();
        this._xmlHttpRequest =3D new XMLHttpRequest();
        this._xmlHttpRequest.onreadystatechange =3D =
this._onReadyStateChange;
        var verb =3D this._webRequest.get_httpVerb();
        this._xmlHttpRequest.open(verb, =
this._webRequest.getResolvedUrl(), true );
        if (headers) {
            for (var header in headers) {
                var val =3D headers[header];
                if (typeof(val) !=3D=3D "function")
                    this._xmlHttpRequest.setRequestHeader(header, val);
            }
        }

        if (verb.toLowerCase() =3D=3D=3D "post") {
                        if ((headers =3D=3D=3D null) || =
!headers['Content-Type']) {
                this._xmlHttpRequest.setRequestHeader('Content-Type', =
'application/x-www-form-urlencoded');
            }

                        if (!body) {
                body =3D "";
            }
        }

        var timeout =3D this._webRequest.get_timeout();
        if (timeout > 0) {
            this._timer =3D =
window.setTimeout(Function.createDelegate(this, this._onTimeout), =
timeout);
        }
        this._xmlHttpRequest.send(body);
        this._started =3D true;
    }

    function Sys$Net$XMLHttpExecutor$getResponseHeader(header) {
        /// <param name=3D"header" type=3D"String"></param>
        /// <returns type=3D"String"></returns>
        var e =3D 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 result;
        try {
            result =3D this._xmlHttpRequest.getResponseHeader(header);
        } catch (e) {
        }
        if (!result) result =3D "";
        return result;
    }

    function Sys$Net$XMLHttpExecutor$getAllResponseHeaders() {
        /// <returns type=3D"String"></returns>
        if (arguments.length !=3D=3D 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();
    }

    function Sys$Net$XMLHttpExecutor$get_responseData() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 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;
    }

    function Sys$Net$XMLHttpExecutor$get_statusCode() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 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'));
        }

        return this._xmlHttpRequest.status;
    }

    function Sys$Net$XMLHttpExecutor$get_statusText() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 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;
    }

    function Sys$Net$XMLHttpExecutor$get_xml() {
        /// <value></value>
        if (arguments.length !=3D=3D 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 xml =3D this._xmlHttpRequest.responseXML;
        if (!xml || !xml.documentElement) {

                        xml =3D new =
XMLDOM(this._xmlHttpRequest.responseText);

                        if (!xml || !xml.documentElement)
                return null;
        }
                else if (navigator.userAgent.indexOf('MSIE') !=3D=3D -1) =
{
            xml.setProperty('SelectionLanguage', 'XPath');
        }

                if (xml.documentElement.namespaceURI =3D=3D=3D =
"http://www.mozilla.org/newlayout/xml/parsererror.xml" &&
            xml.documentElement.tagName =3D=3D=3D "parsererror") {
            return null;
        }
       =20
                if (xml.documentElement.firstChild && =
xml.documentElement.firstChild.tagName =3D=3D=3D "parsererror") {
            return null;
        }
       =20
        return xml;
    }

    function Sys$Net$XMLHttpExecutor$abort() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (!this._started) {
            throw =
Error.invalidOperation(Sys.Res.cannotAbortBeforeStart);
        }

                if (this._aborted || this._responseAvailable || =
this._timedOut)
            return;

        this._aborted =3D true;

        this._clearTimer();

        if (this._xmlHttpRequest && !this._responseAvailable) {

                        this._xmlHttpRequest.onreadystatechange =3D =
Function.emptyMethod;
            this._xmlHttpRequest.abort();

            this._xmlHttpRequest =3D null;
            var handler =3D =
this._webRequest._get_eventHandlerList().getHandler("completed");
            if (handler) {
                handler(this, Sys.EventArgs.Empty);
            }
        }
    }
Sys.Net.XMLHttpExecutor.prototype =3D {

    get_timedOut: Sys$Net$XMLHttpExecutor$get_timedOut,

    get_started: Sys$Net$XMLHttpExecutor$get_started,

    get_responseAvailable: =
Sys$Net$XMLHttpExecutor$get_responseAvailable,

    get_aborted: Sys$Net$XMLHttpExecutor$get_aborted,

    executeRequest: Sys$Net$XMLHttpExecutor$executeRequest,

    getResponseHeader: Sys$Net$XMLHttpExecutor$getResponseHeader,

    getAllResponseHeaders: =
Sys$Net$XMLHttpExecutor$getAllResponseHeaders,

    get_responseData: Sys$Net$XMLHttpExecutor$get_responseData,

    get_statusCode: Sys$Net$XMLHttpExecutor$get_statusCode,

    get_statusText: Sys$Net$XMLHttpExecutor$get_statusText,

    get_xml: Sys$Net$XMLHttpExecutor$get_xml,

    abort: Sys$Net$XMLHttpExecutor$abort
}
Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', =
Sys.Net.WebRequestExecutor);
Sys.Net._WebRequestManager =3D function Sys$Net$_WebRequestManager() {
    this._this =3D this;
    this._defaultTimeout =3D 0;
    this._defaultExecutorType =3D "Sys.Net.XMLHttpExecutor";
}


    function Sys$Net$_WebRequestManager$add_invokingRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("invokingRequest", =
handler);
    }
    function Sys$Net$_WebRequestManager$remove_invokingRequest(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("invokingRequest", =
handler);
    }

    function Sys$Net$_WebRequestManager$add_completedRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("completedRequest", =
handler);
    }
    function Sys$Net$_WebRequestManager$remove_completedRequest(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("completedRequest", =
handler);
    }

    function Sys$Net$_WebRequestManager$_get_eventHandlerList() {
        if (!this._events) {
            this._events =3D new Sys.EventHandlerList();
        }
        return this._events;
    }

    function Sys$Net$_WebRequestManager$get_defaultTimeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultTimeout;
    }
    function Sys$Net$_WebRequestManager$set_defaultTimeout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        if (value < 0) {
            throw Error.argumentOutOfRange("value", value, =
Sys.Res.invalidTimeout);
        }

        this._defaultTimeout =3D value;
    }

    function Sys$Net$_WebRequestManager$get_defaultExecutorType() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultExecutorType;
    }
    function Sys$Net$_WebRequestManager$set_defaultExecutorType(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        this._defaultExecutorType =3D value;
    }

    function Sys$Net$_WebRequestManager$executeRequest(webRequest) {
        /// <param name=3D"webRequest" =
type=3D"Sys.Net.WebRequest"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "webRequest", type: Sys.Net.WebRequest}
        ]);
        if (e) throw e;

        var executor =3D webRequest.get_executor();
                if (!executor) {
           =20
            var failed =3D false;
            try {
                var executorType =3D eval(this._defaultExecutorType);
                executor =3D new executorType();
            } catch (e) {
                failed =3D 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()) {
            return;
        }

        var evArgs =3D new Sys.Net.NetworkRequestEventArgs(webRequest);
        var handler =3D =
this._get_eventHandlerList().getHandler("invokingRequest");
        if (handler) {
            handler(this, evArgs);
        }

        if (!evArgs.get_cancel()) {
            executor.executeRequest();
        }
    }
Sys.Net._WebRequestManager.prototype =3D {
    add_invokingRequest: Sys$Net$_WebRequestManager$add_invokingRequest,
    remove_invokingRequest: =
Sys$Net$_WebRequestManager$remove_invokingRequest,

    add_completedRequest: =
Sys$Net$_WebRequestManager$add_completedRequest,
    remove_completedRequest: =
Sys$Net$_WebRequestManager$remove_completedRequest,

    _get_eventHandlerList: =
Sys$Net$_WebRequestManager$_get_eventHandlerList,

    get_defaultTimeout: Sys$Net$_WebRequestManager$get_defaultTimeout,
    set_defaultTimeout: Sys$Net$_WebRequestManager$set_defaultTimeout,

    get_defaultExecutorType: =
Sys$Net$_WebRequestManager$get_defaultExecutorType,
    set_defaultExecutorType: =
Sys$Net$_WebRequestManager$set_defaultExecutorType,

    executeRequest: Sys$Net$_WebRequestManager$executeRequest
}

Sys.Net._WebRequestManager.registerClass('Sys.Net._WebRequestManager');

Sys.Net.WebRequestManager =3D new Sys.Net._WebRequestManager();
Sys.Net.NetworkRequestEventArgs =3D function =
Sys$Net$NetworkRequestEventArgs(webRequest) {
    /// <param name=3D"webRequest" type=3D"Sys.Net.WebRequest"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "webRequest", type: Sys.Net.WebRequest}
    ]);
    if (e) throw e;

    Sys.Net.NetworkRequestEventArgs.initializeBase(this);
    this._webRequest =3D webRequest;
}


    function Sys$Net$NetworkRequestEventArgs$get_webRequest() {
        /// <value type=3D"Sys.Net.WebRequest"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._webRequest;
    }
Sys.Net.NetworkRequestEventArgs.prototype =3D {
    get_webRequest: Sys$Net$NetworkRequestEventArgs$get_webRequest
}

Sys.Net.NetworkRequestEventArgs.registerClass('Sys.Net.NetworkRequestEven=
tArgs', Sys.CancelEventArgs);
Sys.Net.WebRequest =3D function Sys$Net$WebRequest() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    this._url =3D "";
    this._headers =3D { };
    this._body =3D null;
    this._userContext =3D null;
    this._httpVerb =3D null;
    this._executor =3D null;
    this._invokeCalled =3D false;
    this._timeout =3D 0;
}


    function Sys$Net$WebRequest$add_completed(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        this._get_eventHandlerList().addHandler("completed", handler);
    }
    function Sys$Net$WebRequest$remove_completed(handler) {
    var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
    if (e) throw e;

        this._get_eventHandlerList().removeHandler("completed", =
handler);
    }

    function Sys$Net$WebRequest$completed(eventArgs) {
        /// <param name=3D"eventArgs" type=3D"Sys.EventArgs"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "eventArgs", type: Sys.EventArgs}
        ]);
        if (e) throw e;

        var handler =3D =
Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRe=
quest");
        if (handler) {
            handler(this._executor, eventArgs);
        }

        handler =3D =
this._get_eventHandlerList().getHandler("completed");
        if (handler) {
            handler(this._executor, eventArgs);
        }
    }

    function Sys$Net$WebRequest$_get_eventHandlerList() {
        if (!this._events) {
            this._events =3D new Sys.EventHandlerList();
        }
        return this._events;
    }

    function Sys$Net$WebRequest$get_url() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._url;
    }
    function Sys$Net$WebRequest$set_url(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        this._url =3D value;
    }

    function Sys$Net$WebRequest$get_headers() {
        /// <value></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._headers;
    }

    function Sys$Net$WebRequest$get_httpVerb() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
                if (this._httpVerb =3D=3D=3D null) {
            if (this._body =3D=3D=3D null) {
                return "GET";
            }
            return "POST";
        }
        return this._httpVerb;
    }
    function Sys$Net$WebRequest$set_httpVerb(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        if (value.length =3D=3D=3D 0) {
            throw Error.argument('value', Sys.Res.invalidHttpVerb);
        }

        this._httpVerb =3D value;
    }

    function Sys$Net$WebRequest$get_body() {
        /// <value mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._body;
    }
    function Sys$Net$WebRequest$set_body(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
mayBeNull: true}]);
        if (e) throw e;

        this._body =3D value;
    }

    function Sys$Net$WebRequest$get_userContext() {
        /// <value mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._userContext;
    }
    function Sys$Net$WebRequest$set_userContext(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
mayBeNull: true}]);
        if (e) throw e;

        this._userContext =3D value;
    }

    function Sys$Net$WebRequest$get_executor() {
        /// <value type=3D"Sys.Net.WebRequestExecutor"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._executor;
    }
    function Sys$Net$WebRequest$set_executor(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Sys.Net.WebRequestExecutor}]);
        if (e) throw e;

        if (this._executor !=3D=3D null && this._executor.get_started()) =
{
            throw =
Error.invalidOperation(Sys.Res.setExecutorAfterActive);
        }

        this._executor =3D value;
        this._executor._set_webRequest(this);
    }

    function Sys$Net$WebRequest$get_timeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._timeout =3D=3D=3D 0) {
            return Sys.Net.WebRequestManager.get_defaultTimeout();
        }
        return this._timeout;
    }
    function Sys$Net$WebRequest$set_timeout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        if (value < 0) {
            throw Error.argumentOutOfRange("value", value, =
Sys.Res.invalidTimeout);
        }

        this._timeout =3D value;
    }

    function Sys$Net$WebRequest$getResolvedUrl() {
        /// <returns type=3D"String"></returns>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return Sys.Net.WebRequest._resolveUrl(this._url);
    }

    function Sys$Net$WebRequest$invoke() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._invokeCalled) {
            throw Error.invalidOperation(Sys.Res.invokeCalledTwice);
        }

        Sys.Net.WebRequestManager.executeRequest(this);
        this._invokeCalled =3D true;
    }
Sys.Net.WebRequest.prototype =3D {
    add_completed: Sys$Net$WebRequest$add_completed,
    remove_completed: Sys$Net$WebRequest$remove_completed,

    completed: Sys$Net$WebRequest$completed,

    _get_eventHandlerList: Sys$Net$WebRequest$_get_eventHandlerList,

    get_url: Sys$Net$WebRequest$get_url,
    set_url: Sys$Net$WebRequest$set_url,

    get_headers: Sys$Net$WebRequest$get_headers,

    get_httpVerb: Sys$Net$WebRequest$get_httpVerb,
    set_httpVerb: Sys$Net$WebRequest$set_httpVerb,

    get_body: Sys$Net$WebRequest$get_body,
    set_body: Sys$Net$WebRequest$set_body,

    get_userContext: Sys$Net$WebRequest$get_userContext,
    set_userContext: Sys$Net$WebRequest$set_userContext,

    get_executor: Sys$Net$WebRequest$get_executor,
    set_executor: Sys$Net$WebRequest$set_executor,

    get_timeout: Sys$Net$WebRequest$get_timeout,
    set_timeout: Sys$Net$WebRequest$set_timeout,

    getResolvedUrl: Sys$Net$WebRequest$getResolvedUrl,

    invoke: Sys$Net$WebRequest$invoke
}

Sys.Net.WebRequest._resolveUrl =3D function =
Sys$Net$WebRequest$_resolveUrl(url, baseUrl) {
        if (url && url.indexOf('://') !=3D=3D -1) {
        return url;
    }

        if (!baseUrl || baseUrl.length =3D=3D=3D 0) {
        var baseElement =3D document.getElementsByTagName('base')[0];
        if (baseElement && baseElement.href && baseElement.href.length > =
0) {
            baseUrl =3D baseElement.href;
        }
        else {
            baseUrl =3D document.URL;
        }
    }

        var qsStart =3D baseUrl.indexOf('?');
    if (qsStart !=3D=3D -1) {
        baseUrl =3D baseUrl.substr(0, qsStart);
    }
    baseUrl =3D baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);

        if (!url || url.length =3D=3D=3D 0) {
        return baseUrl;
    }

        if (url.charAt(0) =3D=3D=3D '/') {
        var slashslash =3D baseUrl.indexOf('://');
        if (slashslash =3D=3D=3D -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl1);
        }

        var nextSlash =3D baseUrl.indexOf('/', slashslash + 3);
        if (nextSlash =3D=3D=3D -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl2);
        }

        return baseUrl.substr(0, nextSlash) + url;
    }
            else {
        var lastSlash =3D baseUrl.lastIndexOf('/');
        if (lastSlash =3D=3D=3D -1) {
            throw Error.argument("baseUrl", Sys.Res.badBaseUrl3);
        }

        return baseUrl.substr(0, lastSlash+1) + url;
    }
}

Sys.Net.WebRequest._createQueryString =3D function =
Sys$Net$WebRequest$_createQueryString(queryString, encodeMethod) {
        if (!encodeMethod)
        encodeMethod =3D encodeURIComponent;

    var sb =3D new Sys.StringBuilder();

    var i =3D 0;
    for (var arg in queryString) {
        var obj =3D queryString[arg];
        if (typeof(obj) =3D=3D=3D "function") continue;
        var val =3D =
Sys.Serialization.JavaScriptSerializer.serialize(obj);
        if (i !=3D=3D 0) {
            sb.append('&');
        }

        sb.append(arg);
        sb.append('=3D');
        sb.append(encodeMethod(val));

        i++;
    }

    return sb.toString();
}

Sys.Net.WebRequest._createUrl =3D function =
Sys$Net$WebRequest$_createUrl(url, queryString) {
    if (!queryString) {
        return url;
    }

    var qs =3D Sys.Net.WebRequest._createQueryString(queryString);
    if (qs.length > 0) {
        var sep =3D '?';
        if (url && url.indexOf('?') !=3D=3D -1)
            sep =3D '&';
        return url + sep + qs;
    } else {
        return url;
    }
}

Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest');
Sys.Net.WebServiceProxy =3D function Sys$Net$WebServiceProxy() {
}


    function Sys$Net$WebServiceProxy$set_timeout(value) {
        this._timeout =3D value;
    }
    function Sys$Net$WebServiceProxy$get_timeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timeout;
    }
    function Sys$Net$WebServiceProxy$set_defaultUserContext(value) {
        this._userContext =3D value;
    }
    function Sys$Net$WebServiceProxy$get_defaultUserContext() {
        /// <value></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._userContext;
    }
    function Sys$Net$WebServiceProxy$set_defaultSucceededCallback(value) =
{
        this._succeeded =3D value;
    }
    function Sys$Net$WebServiceProxy$get_defaultSucceededCallback() {
        /// <value type=3D"Function"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._succeeded;
    }
    function Sys$Net$WebServiceProxy$set_defaultFailedCallback(value) {
        this._failed =3D value;
    }
    function Sys$Net$WebServiceProxy$get_defaultFailedCallback() {
        /// <value type=3D"Function"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._failed;
    }
    function Sys$Net$WebServiceProxy$set_path(value) {
        this._path =3D value;
    }
    function Sys$Net$WebServiceProxy$get_path() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._path;
    }

    function Sys$Net$WebServiceProxy$_invoke(servicePath, methodName, =
useGet, params, onSuccess, onFailure, userContext) {
        /// <param name=3D"servicePath" type=3D"String"></param>
        /// <param name=3D"methodName" type=3D"String"></param>
        /// <param name=3D"useGet" type=3D"Boolean"></param>
        /// <param name=3D"params"></param>
        /// <param name=3D"onSuccess" type=3D"Function" =
mayBeNull=3D"true" optional=3D"true"></param>
        /// <param name=3D"onFailure" type=3D"Function" =
mayBeNull=3D"true" optional=3D"true"></param>
        /// <param name=3D"userContext" mayBeNull=3D"true" =
optional=3D"true"></param>
        /// <returns type=3D"Sys.Net.WebRequest"></returns>
        var e =3D 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;


                if (onSuccess =3D=3D=3D null || typeof onSuccess =
=3D=3D=3D 'undefined') onSuccess =3D =
this.get_defaultSucceededCallback();
        if (onFailure =3D=3D=3D null || typeof onFailure =3D=3D=3D =
'undefined') onFailure =3D this.get_defaultFailedCallback();
        if (userContext =3D=3D=3D null || typeof userContext =3D=3D=3D =
'undefined') userContext =3D this.get_defaultUserContext();
       =20
        return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, =
useGet, params, onSuccess, onFailure, userContext, this.get_timeout());
    }
Sys.Net.WebServiceProxy.prototype =3D {
    set_timeout: Sys$Net$WebServiceProxy$set_timeout,
    get_timeout: Sys$Net$WebServiceProxy$get_timeout,
    set_defaultUserContext: =
Sys$Net$WebServiceProxy$set_defaultUserContext,
    get_defaultUserContext: =
Sys$Net$WebServiceProxy$get_defaultUserContext,
    set_defaultSucceededCallback: =
Sys$Net$WebServiceProxy$set_defaultSucceededCallback,
    get_defaultSucceededCallback: =
Sys$Net$WebServiceProxy$get_defaultSucceededCallback,
    set_defaultFailedCallback: =
Sys$Net$WebServiceProxy$set_defaultFailedCallback,
    get_defaultFailedCallback: =
Sys$Net$WebServiceProxy$get_defaultFailedCallback,
    set_path: Sys$Net$WebServiceProxy$set_path,
    get_path: Sys$Net$WebServiceProxy$get_path,

    _invoke: Sys$Net$WebServiceProxy$_invoke
}
Sys.Net.WebServiceProxy.registerClass('Sys.Net.WebServiceProxy');

Sys.Net.WebServiceProxy.invoke =3D function =
Sys$Net$WebServiceProxy$invoke(servicePath, methodName, useGet, params, =
onSuccess, onFailure, userContext, timeout) {
    /// <param name=3D"servicePath" type=3D"String"></param>
    /// <param name=3D"methodName" type=3D"String"></param>
    /// <param name=3D"useGet" type=3D"Boolean" =
optional=3D"true"></param>
    /// <param name=3D"params" mayBeNull=3D"true" =
optional=3D"true"></param>
    /// <param name=3D"onSuccess" type=3D"Function" mayBeNull=3D"true" =
optional=3D"true"></param>
    /// <param name=3D"onFailure" type=3D"Function" mayBeNull=3D"true" =
optional=3D"true"></param>
    /// <param name=3D"userContext" mayBeNull=3D"true" =
optional=3D"true"></param>
    /// <param name=3D"timeout" type=3D"Number" =
optional=3D"true"></param>
    /// <returns type=3D"Sys.Net.WebRequest"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "servicePath", type: String},
        {name: "methodName", type: String},
        {name: "useGet", type: Boolean, 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, optional: true}
    ]);
    if (e) throw e;


        var request =3D new Sys.Net.WebRequest();

    request.get_headers()['Content-Type'] =3D 'application/json; =
charset=3Dutf-8';
    if (!params) params =3D {};
    var urlParams =3D params;
        if (!useGet || !urlParams) urlParams =3D {};
    =
request.set_url(Sys.Net.WebRequest._createUrl(servicePath+"/"+methodName,=
 urlParams));

    var body =3D null;
        if (!useGet) {
        body =3D =
Sys.Serialization.JavaScriptSerializer.serialize(params);

                if (body =3D=3D=3D "{}") body =3D "";
    }

        request.set_body(body);
    request.add_completed(onComplete);
    if (timeout && timeout > 0) request.set_timeout(timeout);
    request.invoke();

    function onComplete(response, eventArgs) {
        if (response.get_responseAvailable()) {
            var statusCode =3D response.get_statusCode();
            var result =3D null;

            try {
                var contentType =3D =
response.getResponseHeader("Content-Type");
                if (contentType.startsWith("application/json")) {
                    result =3D response.get_object();
                }
                else if (contentType.startsWith("text/xml")) {
                    result =3D response.get_xml();
                }
                                else {
                    result =3D response.get_responseData();
                }
            } catch (ex) {
            }

            var error =3D response.getResponseHeader("jsonerror");
            var errorObj =3D (error =3D=3D=3D "true");
            if (errorObj) {
                result =3D new Sys.Net.WebServiceError(false, =
result.Message, result.StackTrace, result.ExceptionType);
            }
            if (((statusCode < 200) || (statusCode >=3D 300)) || =
errorObj) {
                if (onFailure) {
                    if (!result || !errorObj) {
                        result =3D new Sys.Net.WebServiceError(false , =
String.format(Sys.Res.webServiceFailedNoMsg, methodName), "", "");
                    }
                    result._statusCode =3D statusCode;
                    onFailure(result, userContext, methodName);
                }
                else {
                                        var error;
                    if (result && errorObj) {
                                                error =3D =
result.get_exceptionType() + "-- " + result.get_message();
                    }
                    else {
                                                                        =
error =3D response.get_responseData();
                    }
                    alert(String.format(Sys.Res.webServiceFailed, =
methodName, error));
                }
            }
            else if (onSuccess) {
                onSuccess(result, userContext, methodName);
            }
        }
        else {
            var msg;
            if (response.get_timedOut()) {
                msg =3D String.format(Sys.Res.webServiceTimedOut, =
methodName);
            }
            else {
                msg =3D String.format(Sys.Res.webServiceFailedNoMsg, =
methodName)
            }
            if (onFailure) {
                onFailure(new =
Sys.Net.WebServiceError(response.get_timedOut(), msg, "", ""), =
userContext, methodName);
            }
            else {
                                alert(msg);
            }
        }
    }

    return request;
}

Sys.Net.WebServiceProxy._generateTypedConstructor =3D function =
Sys$Net$WebServiceProxy$_generateTypedConstructor(type) {
    return function(properties) {
                if (properties) {
            for (var name in properties) {
                this[name] =3D properties[name];
            }
        }
        this.__type =3D type;
    }
}
Sys.Net.WebServiceError =3D function Sys$Net$WebServiceError(timedOut, =
message, stackTrace, exceptionType) {
    /// <param name=3D"timedOut" type=3D"Boolean"></param>
    /// <param name=3D"message" type=3D"String" =
mayBeNull=3D"true"></param>
    /// <param name=3D"stackTrace" type=3D"String" =
mayBeNull=3D"true"></param>
    /// <param name=3D"exceptionType" type=3D"String" =
mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "timedOut", type: Boolean},
        {name: "message", type: String, mayBeNull: true},
        {name: "stackTrace", type: String, mayBeNull: true},
        {name: "exceptionType", type: String, mayBeNull: true}
    ]);
    if (e) throw e;

    this._timedOut =3D timedOut;
    this._message =3D message;
    this._stackTrace =3D stackTrace;
    this._exceptionType =3D exceptionType;
    this._statusCode =3D -1;
}


    function Sys$Net$WebServiceError$get_timedOut() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timedOut;
    }

    function Sys$Net$WebServiceError$get_statusCode() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._statusCode;
    }

    function Sys$Net$WebServiceError$get_message() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._message;
    }

    function Sys$Net$WebServiceError$get_stackTrace() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._stackTrace;
    }

    function Sys$Net$WebServiceError$get_exceptionType() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._exceptionType;
    }
Sys.Net.WebServiceError.prototype =3D {
    get_timedOut: Sys$Net$WebServiceError$get_timedOut,

    get_statusCode: Sys$Net$WebServiceError$get_statusCode,

    get_message: Sys$Net$WebServiceError$get_message,

    get_stackTrace: Sys$Net$WebServiceError$get_stackTrace,

    get_exceptionType: Sys$Net$WebServiceError$get_exceptionType
}
Sys.Net.WebServiceError.registerClass('Sys.Net.WebServiceError');

Type.registerNamespace('Sys.Services');

Sys.Services._ProfileService =3D function Sys$Services$_ProfileService() =
{
    Sys.Services._ProfileService.initializeBase(this);
    this.properties =3D {};
}
Sys.Services._ProfileService.DefaultWebServicePath =3D '';








    function Sys$Services$_ProfileService$get_defaultFailedCallback() {
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultFailedCallback;
    }
    function =
Sys$Services$_ProfileService$set_defaultFailedCallback(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultFailedCallback =3D value;
    }

    function =
Sys$Services$_ProfileService$get_defaultLoadCompletedCallback() {
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultLoadCompletedCallback;
    }
    function =
Sys$Services$_ProfileService$set_defaultLoadCompletedCallback(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultLoadCompletedCallback =3D value;
    }

    function =
Sys$Services$_ProfileService$get_defaultSaveCompletedCallback() {
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultSaveCompletedCallback;
    }
    function =
Sys$Services$_ProfileService$set_defaultSaveCompletedCallback(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultSaveCompletedCallback =3D value;
    }


    function Sys$Services$_ProfileService$get_path() {
        /// <value type=3D"String" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._path;
    }
    function Sys$Services$_ProfileService$set_path(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String, mayBeNull: true}]);
        if (e) throw e;

        if((!value) || (!value.length)) {
            value =3D '';
        }
        this._path =3D value;
    }

    function Sys$Services$_ProfileService$get_timeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timeout;
    }
    function Sys$Services$_ProfileService$set_timeout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        this._timeout =3D value;
    }

    function Sys$Services$_ProfileService$load(propertyNames, =
loadCompletedCallback, failedCallback, userContext) {
        /// <param name=3D"propertyNames" type=3D"Array" =
elementType=3D"String" optional=3D"true" elementMayBeNull=3D"false" =
mayBeNull=3D"true"></param>
        /// <param name=3D"loadCompletedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"failedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"userContext" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D 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 =3D {};
        var methodName;
        if(!propertyNames) {
            methodName =3D "GetAllPropertiesForCurrentUser";
        }
        else {
            methodName =3D "GetPropertiesForCurrentUser";
            parameters =3D { properties: =
this._clonePropertyNames(propertyNames) };
        }
                this._invoke(this._get_path(),
                                        methodName,
                                        false,
                                        parameters,
                                        Function.createDelegate(this, =
this._onLoadComplete),
                                        Function.createDelegate(this, =
this._onLoadFailed),                                         =
[loadCompletedCallback, failedCallback, userContext]);
    }

    function Sys$Services$_ProfileService$save(propertyNames, =
saveCompletedCallback, failedCallback, userContext) {
        /// <param name=3D"propertyNames" type=3D"Array" =
elementType=3D"String" optional=3D"true" elementMayBeNull=3D"false" =
mayBeNull=3D"true"></param>
        /// <param name=3D"saveCompletedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"failedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"userContext" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D 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 =3D =
this._flattenProperties(propertyNames, this.properties);
                this._invoke(this._get_path(),
                                        "SetPropertiesForCurrentUser",
                                        false,
                                        { values: flattenedProperties },
                                        Function.createDelegate(this, =
this._onSaveComplete),
                                        Function.createDelegate(this, =
this._onSaveFailed),
                                        [saveCompletedCallback, =
failedCallback, userContext]);
    }


    function Sys$Services$_ProfileService$_clonePropertyNames(arr) {
        var nodups =3D [];
        var seen =3D {};
        for(var i=3D0; i < arr.length; i++) {
            var prop =3D arr[i];
            if(!seen[prop]) { Array.add(nodups, prop); =
seen[prop]=3Dtrue; };
        }
        return nodups;
    }





    function =
Sys$Services$_ProfileService$_flattenProperties(propertyNames, =
properties, groupName) {
        var flattenedProperties =3D {};
        var val;
        var key;
        if(propertyNames && propertyNames.length =3D=3D=3D 0) {
            return flattenedProperties;
        }

        for (var property in properties) {
            val =3D properties[property];
            key =3D groupName ? groupName + "." + property : property;
                        =
if(Sys.Services.ProfileGroup.isInstanceOfType(val)) {
                var groupProperties =3D =
this._flattenProperties(propertyNames, val, key);
                                                                         =
                                       for(var subKey in =
groupProperties) {
                    var subVal =3D groupProperties[subKey];
                    flattenedProperties[subKey] =3D subVal;
                }
            }
            else {
                                if(!propertyNames || =
Array.indexOf(propertyNames, key) !=3D=3D -1) {
                    flattenedProperties[key] =3D val;
                }
            }
        }
        return flattenedProperties;
    }

    function Sys$Services$_ProfileService$_get_path() {
        var path =3D this.get_path();
        if(!path.length) {
            path =3D Sys.Services._ProfileService.DefaultWebServicePath;
        }
        if(!path || !path.length) {
            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
        }
        return path;
    }

    function Sys$Services$_ProfileService$_onLoadComplete(result, =
context, methodName) {
        if(typeof(result) !=3D=3D "object") {
            throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
 methodName, "Object"));
        }

        var unflattened =3D this._unflattenProperties(result);
        for(var name in unflattened) {
            this.properties[name] =3D unflattened[name];
        }
       =20
        var userCallback =3D context[0];
        var callback =3D userCallback ? userCallback : =
this._defaultLoadCompletedCallback;
        if(callback) {
            callback(result.length, context[2], =
"Sys.Services.ProfileService.load");
        }
    }

    function Sys$Services$_ProfileService$_onLoadFailed(err, context, =
methodName) {
        var userCallback =3D context[1];
        var callback =3D userCallback ? userCallback : =
this._defaultFailedCallback;
        if(callback) {
            callback(err, context[2], =
"Sys.Services.ProfileService.load");
        }
    }

    function Sys$Services$_ProfileService$_onSaveComplete(result, =
context, methodName) {
        if(typeof(result) !=3D=3D "number") {
            throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
 methodName, "Number"));
        }
       =20
        var userCallback =3D context[0];
        var userContext =3D context[2];
        var callback =3D userCallback ? userCallback : =
this._defaultSaveCompletedCallback;
        if(callback) {
            callback(result, userContext, =
"Sys.Services.ProfileService.save");
        }
    }

    function Sys$Services$_ProfileService$_onSaveFailed(err, context, =
methodName) {
        var userCallback =3D context[1];
        var userContext =3D context[2];
        var callback =3D userCallback ? userCallback : =
this._defaultFailedCallback;
        if(callback) {
            callback(err, userContext, =
"Sys.Services.ProfileService.save");
        }
    }

    function =
Sys$Services$_ProfileService$_unflattenProperties(properties) {
        var unflattenedProperties =3D {};
        var dotIndex;
        var val;
        var count =3D 0;
        for(var key in properties) {
            count++;
            val =3D properties[key];

            dotIndex =3D key.indexOf('.');
            if(dotIndex !=3D=3D -1) {
                var groupName =3D key.substr(0, dotIndex);
                key =3D key.substr(dotIndex+1);
                var group =3D unflattenedProperties[groupName];
                if((!group) || =
(!Sys.Services.ProfileGroup.isInstanceOfType(group))) {
                    group =3D new Sys.Services.ProfileGroup();
                    unflattenedProperties[groupName] =3D group;
                }
                group[key] =3D val;
            }
            else {
                unflattenedProperties[key] =3D val;
            }
        }
        properties.length =3D count;
        return unflattenedProperties;
    }
Sys.Services._ProfileService.prototype =3D {
    _defaultFailedCallback: null,
    _defaultLoadCompletedCallback: null,
    _defaultSaveCompletedCallback: null,
    _path: '',
    _timeout: 0,

    get_defaultFailedCallback: =
Sys$Services$_ProfileService$get_defaultFailedCallback,
    set_defaultFailedCallback: =
Sys$Services$_ProfileService$set_defaultFailedCallback,

    get_defaultLoadCompletedCallback: =
Sys$Services$_ProfileService$get_defaultLoadCompletedCallback,
    set_defaultLoadCompletedCallback: =
Sys$Services$_ProfileService$set_defaultLoadCompletedCallback,

    get_defaultSaveCompletedCallback: =
Sys$Services$_ProfileService$get_defaultSaveCompletedCallback,
    set_defaultSaveCompletedCallback: =
Sys$Services$_ProfileService$set_defaultSaveCompletedCallback,
   =20
   =20
    get_path: Sys$Services$_ProfileService$get_path,
    set_path: Sys$Services$_ProfileService$set_path,
       =20
    get_timeout: Sys$Services$_ProfileService$get_timeout,
    set_timeout: Sys$Services$_ProfileService$set_timeout,
       =20
    load: Sys$Services$_ProfileService$load,

    save: Sys$Services$_ProfileService$save,
   =20
        _clonePropertyNames: =
Sys$Services$_ProfileService$_clonePropertyNames,   =20

                    _flattenProperties: =
Sys$Services$_ProfileService$_flattenProperties,
   =20
    _get_path: Sys$Services$_ProfileService$_get_path,   =20

    _onLoadComplete: Sys$Services$_ProfileService$_onLoadComplete,
   =20
    _onLoadFailed: Sys$Services$_ProfileService$_onLoadFailed,
   =20
    _onSaveComplete: Sys$Services$_ProfileService$_onSaveComplete,
   =20
    _onSaveFailed: Sys$Services$_ProfileService$_onSaveFailed,
   =20
    _unflattenProperties: =
Sys$Services$_ProfileService$_unflattenProperties
}
Sys.Services._ProfileService.registerClass('Sys.Services._ProfileService'=
, Sys.Net.WebServiceProxy);
Sys.Services.ProfileService =3D new Sys.Services._ProfileService();

Sys.Services.ProfileGroup =3D function =
Sys$Services$ProfileGroup(properties) {
    /// <param name=3D"properties" optional=3D"true" =
mayBeNull=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "properties", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    if(properties) {
        for(var property in properties) {
            this[property] =3D properties[property];
        }
    }
}
Sys.Services.ProfileGroup.registerClass('Sys.Services.ProfileGroup');








Sys.Services._AuthenticationService =3D function =
Sys$Services$_AuthenticationService() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    Sys.Services._AuthenticationService.initializeBase(this);
}
Sys.Services._AuthenticationService.DefaultWebServicePath =3D '';








    function =
Sys$Services$_AuthenticationService$get_defaultFailedCallback() {
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultFailedCallback;
    }
    function =
Sys$Services$_AuthenticationService$set_defaultFailedCallback(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultFailedCallback =3D value;
    }

    function =
Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback() =
{
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultLoginCompletedCallback;
    }
    function =
Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback(val=
ue) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultLoginCompletedCallback =3D value;
    }

    function =
Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback() =
{
        /// <value type=3D"Function" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._defaultLogoutCompletedCallback;
    }
    function =
Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback(va=
lue) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Function, mayBeNull: true}]);
        if (e) throw e;

        this._defaultLogoutCompletedCallback =3D value;
    }

    function Sys$Services$_AuthenticationService$get_isLoggedIn() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._authenticated;
    }

    function Sys$Services$_AuthenticationService$get_path() {
        /// <value type=3D"String" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._path;
    }
    function Sys$Services$_AuthenticationService$set_path(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String, mayBeNull: true}]);
        if (e) throw e;

        if((!value) || (!value.length)) {
            value =3D '';
        }
        this._path =3D value;
    }

    function Sys$Services$_AuthenticationService$get_timeout() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._timeout;
    }
    function Sys$Services$_AuthenticationService$set_timeout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        this._timeout =3D value;
    }

    function Sys$Services$_AuthenticationService$login(username, =
password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, =
failedCallback, userContext) {
        /// <param name=3D"username" type=3D"String" =
mayBeNull=3D"false"></param>
        /// <param name=3D"password" type=3D"String" =
mayBeNull=3D"true"></param>
        /// <param name=3D"isPersistent" type=3D"Boolean" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"customInfo" type=3D"String" optional=3D"true" =
mayBeNull=3D"true"></param>
        /// <param name=3D"redirectUrl" type=3D"String" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"loginCompletedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"failedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"userContext" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D 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, redirectUrl, loginCompletedCallback, failedCallback, =
userContext]);
    }

    function Sys$Services$_AuthenticationService$logout(redirectUrl, =
logoutCompletedCallback, failedCallback, userContext) {
        /// <param name=3D"redirectUrl" type=3D"String" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"logoutCompletedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"failedCallback" type=3D"Function" =
optional=3D"true" mayBeNull=3D"true"></param>
        /// <param name=3D"userContext" optional=3D"true" =
mayBeNull=3D"true"></param>
        var e =3D 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, {},=20
                                        Function.createDelegate(this, =
this._onLogoutComplete),
                                        Function.createDelegate(this, =
this._onLogoutFailed),
                                        [redirectUrl, =
logoutCompletedCallback, failedCallback, userContext]);
    }

    function Sys$Services$_AuthenticationService$_get_path() {
        var path =3D this.get_path();
        if(!path.length) {
            path =3D =
Sys.Services._AuthenticationService.DefaultWebServicePath;
        }
        if(!path || !path.length) {
            throw Error.invalidOperation(Sys.Res.servicePathNotSet);
        }
        return path;
    }

    function =
Sys$Services$_AuthenticationService$_onLoginComplete(result, context, =
methodName) {
        if(typeof(result) !=3D=3D "boolean") {
            throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
 methodName, "Boolean"));
        }
       =20
        var redirectUrl =3D context[3];
        var userCallback =3D context[4];
        var userContext =3D context[6];
        var callback =3D userCallback ? userCallback : =
this._defaultLoginCompletedCallback;
       =20
        if(result) {
            this._authenticated =3D true;

            if(callback) {
                callback(true, userContext, =
"Sys.Services.AuthenticationService.login");
            }
           =20
            if(typeof(redirectUrl) !=3D=3D "undefined" && redirectUrl =
!=3D=3D null) {
                                window.location.href =3D redirectUrl;
            }
        }
        else if (callback) {
            callback(false, userContext, =
"Sys.Services.AuthenticationService.login");
        }
    }

    function Sys$Services$_AuthenticationService$_onLoginFailed(err, =
context, methodName) {
        var userCallback =3D context[5];
        var callback =3D userCallback ? userCallback : =
this._defaultFailedCallback;
        if(callback) {
            callback(err, context[6], =
"Sys.Services.AuthenticationService.login");
        }
    }

    function =
Sys$Services$_AuthenticationService$_onLogoutComplete(result, context, =
methodName) {
        if(result !=3D=3D null) {
            throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
 methodName, "null"));
        }
       =20
        var redirectUrl =3D context[0];
        var userCallback =3D context[1];
        var userContext =3D context[3];
        var callback =3D userCallback ? userCallback : =
this._defaultLogoutCompletedCallback;

        this._authenticated =3D false;
       =20
        if (callback) {
            callback(null, userContext, =
"Sys.Services.AuthenticationService.logout");
        }
       =20
                if(!redirectUrl) {
            window.location.reload();
        }
        else {
            window.location.href =3D redirectUrl;
        }
    }

    function Sys$Services$_AuthenticationService$_onLogoutFailed(err, =
context, methodName) {
        var userCallback =3D context[2];
        var callback =3D userCallback ? userCallback : =
this._defaultFailedCallback;
        if(callback) {
            callback(err, context[3], =
"Sys.Services.AuthenticationService.logout");
        }
    }

    function =
Sys$Services$_AuthenticationService$_setAuthenticated(authenticated) {
        this._authenticated =3D authenticated;
    }
Sys.Services._AuthenticationService.prototype =3D {
    _defaultFailedCallback: null,
    _defaultLoginCompletedCallback: null,
    _defaultLogoutCompletedCallback: null,
    _path: '',
    _timeout: 0,
    _authenticated: false,
   =20
    get_defaultFailedCallback: =
Sys$Services$_AuthenticationService$get_defaultFailedCallback,
    set_defaultFailedCallback: =
Sys$Services$_AuthenticationService$set_defaultFailedCallback,

    get_defaultLoginCompletedCallback: =
Sys$Services$_AuthenticationService$get_defaultLoginCompletedCallback,
    set_defaultLoginCompletedCallback: =
Sys$Services$_AuthenticationService$set_defaultLoginCompletedCallback,

    get_defaultLogoutCompletedCallback: =
Sys$Services$_AuthenticationService$get_defaultLogoutCompletedCallback,
    set_defaultLogoutCompletedCallback: =
Sys$Services$_AuthenticationService$set_defaultLogoutCompletedCallback,

    get_isLoggedIn: Sys$Services$_AuthenticationService$get_isLoggedIn,

    get_path: Sys$Services$_AuthenticationService$get_path,
    set_path: Sys$Services$_AuthenticationService$set_path,
   =20
    get_timeout: Sys$Services$_AuthenticationService$get_timeout,
    set_timeout: Sys$Services$_AuthenticationService$set_timeout,   =20
   =20
    login: Sys$Services$_AuthenticationService$login,
   =20
    logout: Sys$Services$_AuthenticationService$logout,
   =20
    _get_path: Sys$Services$_AuthenticationService$_get_path,
   =20
    _onLoginComplete: =
Sys$Services$_AuthenticationService$_onLoginComplete,
   =20
    _onLoginFailed: Sys$Services$_AuthenticationService$_onLoginFailed,
   =20
    _onLogoutComplete: =
Sys$Services$_AuthenticationService$_onLogoutComplete,
   =20
    _onLogoutFailed: =
Sys$Services$_AuthenticationService$_onLogoutFailed,
   =20
    _setAuthenticated: =
Sys$Services$_AuthenticationService$_setAuthenticated   =20
}

Sys.Services._AuthenticationService.registerClass('Sys.Services._Authenti=
cationService', Sys.Net.WebServiceProxy);
Sys.Services.AuthenticationService =3D new =
Sys.Services._AuthenticationService();

Type.registerNamespace('Sys.Serialization');


Sys.Serialization.JavaScriptSerializer =3D function =
Sys$Serialization$JavaScriptSerializer() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
}
Sys.Serialization.JavaScriptSerializer.registerClass('Sys.Serialization.J=
avaScriptSerializer');

Sys.Serialization.JavaScriptSerializer._stringRegEx =3D new =
RegExp('["\b\f\n\r\t\\\\\x00-\x1F]', 'i');

Sys.Serialization.JavaScriptSerializer._serializeWithBuilder =3D =
function =
Sys$Serialization$JavaScriptSerializer$_serializeWithBuilder(object, =
stringBuilder, sort) {
    var i;
    switch (typeof object) {
    case 'object':
        if (object) {
                        if (Array.isInstanceOfType(object)) {
                stringBuilder.append('[');
                for (i =3D 0; i < object.length; ++i) {
                    if (i > 0) {
                        stringBuilder.append(',');
                    }
                    =
Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object[i], =
stringBuilder);
                }
                stringBuilder.append(']');
            }
            else {
                                                                if =
(Date.isInstanceOfType(object)) {
                    stringBuilder.append('"\\/Date(');
                    stringBuilder.append(object.getTime());
                    stringBuilder.append(')\\/"');
                    break;
                }

                var properties =3D [];
                var propertyCount =3D 0;
                for (var name in object) {
                                        if (name.startsWith('$')) {
                        continue;
                    }
                    properties[propertyCount++] =3D name;
                }
                if (sort) properties.sort();

                stringBuilder.append('{');
                var needComma =3D false;
                for (i=3D0; i<propertyCount; i++) {
                    var value =3D object[properties[i]];
                    if (typeof value !=3D=3D 'undefined' && typeof value =
!=3D=3D 'function') {
                        if (needComma) {
                            stringBuilder.append(',');
                        }
                        else {
                            needComma =3D true;
                        }

                                                =
Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(properties[i=
], stringBuilder, sort);
                        stringBuilder.append(':');
                        =
Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(value, =
stringBuilder, sort);
                    }
                }
                stringBuilder.append('}');
            }
        }
        else {
            stringBuilder.append('null');
        }
        break;

    case 'number':
        if (isFinite(object)) {
            stringBuilder.append(String(object));
        }
        else {
            throw =
Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
        }
        break;

    case 'string':
        stringBuilder.append('"');

                if (Sys.Browser.agent =3D=3D=3D Sys.Browser.Safari || =
Sys.Serialization.JavaScriptSerializer._stringRegEx.test(object)) {
            var length =3D object.length;
            for (i =3D 0; i < length; ++i) {
                var curChar =3D object.charAt(i);
                                if (curChar >=3D ' ') {
                                        if (curChar =3D=3D=3D '\\' || =
curChar =3D=3D=3D '"') {
                        stringBuilder.append('\\');
                    }
                    stringBuilder.append(curChar);
                }
                else {
                    switch (curChar) {
                        case '\b':
                            stringBuilder.append('\\b');
                            break;
                        case '\f':
                            stringBuilder.append('\\f');
                            break;
                        case '\n':
                            stringBuilder.append('\\n');
                            break;
                        case '\r':
                            stringBuilder.append('\\r');
                            break;
                        case '\t':
                            stringBuilder.append('\\t');
                            break;
                        default:
                                                        =
stringBuilder.append('\\u00');
                            if (curChar.charCodeAt() < 16) =
stringBuilder.append('0');
                            =
stringBuilder.append(curChar.charCodeAt().toString(16));
                    }
                }
            }
        } else {
            stringBuilder.append(object);
        }
        stringBuilder.append('"');
        break;

    case 'boolean':
        stringBuilder.append(object.toString());
        break;

    default:
        stringBuilder.append('null');
        break;
    }
}

Sys.Serialization.JavaScriptSerializer.serialize =3D function =
Sys$Serialization$JavaScriptSerializer$serialize(object) {
    /// <param name=3D"object" mayBeNull=3D"true"></param>
    /// <returns type=3D"String"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "object", mayBeNull: true}
    ]);
    if (e) throw e;

    var stringBuilder =3D new Sys.StringBuilder();
    Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, =
stringBuilder, false);
    return stringBuilder.toString();
}

Sys.Serialization.JavaScriptSerializer.deserialize =3D function =
Sys$Serialization$JavaScriptSerializer$deserialize(data) {
    /// <param name=3D"data" type=3D"String"></param>
    /// <returns></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "data", type: String}
    ]);
    if (e) throw e;

    if (data.length =3D=3D=3D 0) throw Error.argument('data', =
Sys.Res.cannotDeserializeEmptyString);
                                                           =20
    try {   =20
        var exp =3D data.replace(new =
RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)\\)\\\\/\\"', 'g'), "$1new =
Date($2)");
        return eval('(' + exp + ')');
    }
    catch (e) {
         throw Error.argument('data', =
Sys.Res.cannotDeserializeInvalidJson);
    }
}

Sys.CultureInfo =3D function Sys$CultureInfo(name, numberFormat, =
dateTimeFormat) {
    /// <param name=3D"name" type=3D"String"></param>
    /// <param name=3D"numberFormat" type=3D"Object"></param>
    /// <param name=3D"dateTimeFormat" type=3D"Object"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "name", type: String},
        {name: "numberFormat", type: Object},
        {name: "dateTimeFormat", type: Object}
    ]);
    if (e) throw e;

    this.name =3D name;
    this.numberFormat =3D numberFormat;
    this.dateTimeFormat =3D dateTimeFormat;
}

    function Sys$CultureInfo$_getDateTimeFormats() {
        if (! this._dateTimeFormats) {
            var dtf =3D this.dateTimeFormat;
            this._dateTimeFormats =3D
              [ dtf.MonthDayPattern,
                dtf.YearMonthPattern,
                dtf.ShortDatePattern,
                dtf.ShortTimePattern,
                dtf.LongDatePattern,
                dtf.LongTimePattern,
                dtf.FullDateTimePattern,
                dtf.RFC1123Pattern,
                dtf.SortableDateTimePattern,
                dtf.UniversalSortableDateTimePattern ];
        }
        return this._dateTimeFormats;
    }
    function Sys$CultureInfo$_getMonthIndex(value) {
        if (!this._upperMonths) {
            this._upperMonths =3D =
this._toUpperArray(this.dateTimeFormat.MonthNames);
        }
        return Array.indexOf(this._upperMonths, this._toUpper(value));
    }
    function Sys$CultureInfo$_getAbbrMonthIndex(value) {
        if (!this._upperAbbrMonths) {
            this._upperAbbrMonths =3D =
this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
        }
        return Array.indexOf(this._upperMonths, this._toUpper(value));
    }
    function Sys$CultureInfo$_getDayIndex(value) {
        if (!this._upperDays) {
            this._upperDays =3D =
this._toUpperArray(this.dateTimeFormat.DayNames);
        }
        return Array.indexOf(this._upperDays, this._toUpper(value));
    }
    function Sys$CultureInfo$_getAbbrDayIndex(value) {
        if (!this._upperAbbrDays) {
            this._upperAbbrDays =3D =
this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);
        }
        return Array.indexOf(this._upperAbbrDays, this._toUpper(value));
    }
    function Sys$CultureInfo$_toUpperArray(arr) {
        var result =3D [];
        for (var i =3D 0, il =3D arr.length; i < il; i++) {
            result[i] =3D this._toUpper(arr[i]);
        }
        return result;
    }
    function Sys$CultureInfo$_toUpper(value) {
                        return value.split("\u00A0").join(' =
').toUpperCase();
    }
Sys.CultureInfo.prototype =3D {
    _getDateTimeFormats: Sys$CultureInfo$_getDateTimeFormats,
    _getMonthIndex: Sys$CultureInfo$_getMonthIndex,
    _getAbbrMonthIndex: Sys$CultureInfo$_getAbbrMonthIndex,
    _getDayIndex: Sys$CultureInfo$_getDayIndex,
    _getAbbrDayIndex: Sys$CultureInfo$_getAbbrDayIndex,
    _toUpperArray: Sys$CultureInfo$_toUpperArray,
    _toUpper: Sys$CultureInfo$_toUpper
}
Sys.CultureInfo._parse =3D function Sys$CultureInfo$_parse(value) {
    var cultureInfo =3D =
Sys.Serialization.JavaScriptSerializer.deserialize(value);
    return new Sys.CultureInfo(cultureInfo.name, =
cultureInfo.numberFormat, cultureInfo.dateTimeFormat);
}
Sys.CultureInfo.registerClass('Sys.CultureInfo');

Sys.CultureInfo.InvariantCulture =3D =
Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits=
":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes"=
:[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparat=
or":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePatt=
ern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegat=
ivePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","Nu=
mberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":=
",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","Posi=
tiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","Per=
centGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","Na=
tiveDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution"=
:1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTi=
me":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","Algor=
ithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnl=
y":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"Ful=
lDateTimePattern":"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","Sort=
ableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSepar=
ator":":","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":["Sunda=
y","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"Abbrev=
iatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","=
Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","=
May","June","July","August","September","October","November","December","=
"],"IsReadOnly":true,"NativeCalendarName":"Gregorian =
Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May",=
"Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["Janu=
ary","February","March","April","May","June","July","August","September",=
"October","November","December",""]}}');

if (typeof(__cultureInfo) =3D=3D=3D 'undefined') {
    var __cultureInfo =3D =
'{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecim=
alSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroup=
Sizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","Currency=
Symbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegative=
Pattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"Negativ=
eInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"=
NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositiveP=
attern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","Percent=
DecimalDigits":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,"CalendarT=
ype":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparat=
or":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dd=
dd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, =
yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM =
dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy =
HH\':\'mm\':\'ss =
\'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm =
tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","=
TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd=
 HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, =
yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"=
ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunda=
y","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"Abbrev=
iatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","=
Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","=
May","June","July","August","September","October","November","December","=
"],"IsReadOnly":false,"NativeCalendarName":"Gregorian =
Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May",=
"Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["Janu=
ary","February","March","April","May","June","July","August","September",=
"October","November","December",""]}}';
}
Sys.CultureInfo.CurrentCulture =3D =
Sys.CultureInfo._parse(__cultureInfo);
delete __cultureInfo;

Sys.UI.Point =3D function Sys$UI$Point(x, y) {
    /// <param name=3D"x" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"y" type=3D"Number" integer=3D"true"></param>
    /// <field name=3D"x" type=3D"Number" integer=3D"true"></field>
    /// <field name=3D"y" type=3D"Number" integer=3D"true"></field>
    var e =3D Function._validateParams(arguments, [
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true}
    ]);
    if (e) throw e;

    this.x =3D x;
    this.y =3D y;
}
Sys.UI.Point.registerClass('Sys.UI.Point');
Sys.UI.Bounds =3D function Sys$UI$Bounds(x, y, width, height) {
    /// <param name=3D"x" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"y" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"height" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"width" type=3D"Number" integer=3D"true"></param>
    /// <field name=3D"x" type=3D"Number" integer=3D"true"></field>
    /// <field name=3D"y" type=3D"Number" integer=3D"true"></field>
    /// <field name=3D"height" type=3D"Number" integer=3D"true"></field>
    /// <field name=3D"width" type=3D"Number" integer=3D"true"></field>
    var e =3D Function._validateParams(arguments, [
        {name: "x", type: Number, integer: true},
        {name: "y", type: Number, integer: true},
        {name: "height", type: Number, integer: true},
        {name: "width", type: Number, integer: true}
    ]);
    if (e) throw e;

    this.x =3D x;
    this.y =3D y;
    this.height =3D height;
    this.width =3D width;
}
Sys.UI.Bounds.registerClass('Sys.UI.Bounds');
Sys.UI.DomElement =3D function Sys$UI$DomElement() {
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}
Sys.UI.DomElement.registerClass('Sys.UI.DomElement');

Sys.UI.DomElement.addCssClass =3D function =
Sys$UI$DomElement$addCssClass(element, className) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"className" type=3D"String"></param>
    var e =3D 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 =3D=3D=3D '') {
            element.className =3D className;
        }
        else {
            element.className +=3D ' ' + className;
        }
    }
}

Sys.UI.DomElement.containsCssClass =3D function =
Sys$UI$DomElement$containsCssClass(element, className) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"className" type=3D"String"></param>
    /// <returns type=3D"Boolean"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;

    return Array.contains(element.className.split(' '), className);
}

Sys.UI.DomElement.getBounds =3D function =
Sys$UI$DomElement$getBounds(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <returns type=3D"Sys.UI.Bounds"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    var offset =3D Sys.UI.DomElement.getLocation(element);

    return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || =
0, element.offsetHeight || 0);
}

var $get =3D Sys.UI.DomElement.getElementById =3D function =
Sys$UI$DomElement$getElementById(id, element) {
    /// <param name=3D"id" type=3D"String"></param>
    /// <param name=3D"element" domElement=3D"true" optional=3D"true" =
mayBeNull=3D"true"></param>
    /// <returns domElement=3D"true" mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "id", type: String},
        {name: "element", mayBeNull: true, domElement: true, optional: =
true}
    ]);
    if (e) throw e;

    if (!element) return document.getElementById(id);
    if (element.getElementById) return element.getElementById(id);

        var nodeQueue =3D [];
    var childNodes =3D element.childNodes;
    for (var i =3D 0; i < childNodes.length; i++) {
        var node =3D childNodes[i];
        if (node.nodeType =3D=3D 1) {
            nodeQueue[nodeQueue.length] =3D node;
        }
    }

    while (nodeQueue.length) {
        node =3D nodeQueue.shift();
        if (node.id =3D=3D id) {
            return node;
        }
        childNodes =3D node.childNodes;
        for (i =3D 0; i < childNodes.length; i++) {
            node =3D childNodes[i];
            if (node.nodeType =3D=3D 1) {
                nodeQueue[nodeQueue.length] =3D node;
            }
        }
    }

    return null;
}



switch(Sys.Browser.agent) {
    case Sys.Browser.InternetExplorer:
        Sys.UI.DomElement.getLocation =3D function =
Sys$UI$DomElement$getLocation(element) {
            /// <param name=3D"element" domElement=3D"true"></param>
            /// <returns type=3D"Sys.UI.Point"></returns>
            var e =3D Function._validateParams(arguments, [
                {name: "element", domElement: true}
            ]);
            if (e) throw e;

                        if (element.self || element.nodeType =3D=3D=3D =
9) return new Sys.UI.Point(0,0);

                                                var clientRects =3D =
element.getClientRects();
            if (!clientRects || !clientRects.length) {
                return new Sys.UI.Point(0,0);
            }

            var w =3D element.ownerDocument.parentWindow;
                                                var offsetL =3D =
w.screenLeft - top.screenLeft - top.document.documentElement.scrollLeft =
+ 2;
            var offsetT =3D w.screenTop - top.screenTop - =
top.document.documentElement.scrollTop + 2;

                                                                        =
var f =3D w.frameElement || null;
            if (f) {
                                                                         =
       var fstyle =3D f.currentStyle;
                offsetL +=3D (f.frameBorder || 1) * 2 +
                    (parseInt(fstyle.paddingLeft) || 0) +
                    (parseInt(fstyle.borderLeftWidth) || 0) -
                    element.ownerDocument.documentElement.scrollLeft;
                offsetT +=3D (f.frameBorder || 1) * 2 +
                    (parseInt(fstyle.paddingTop) || 0) +
                    (parseInt(fstyle.borderTopWidth) || 0) -
                    element.ownerDocument.documentElement.scrollTop;
            }

            var clientRect =3D clientRects[0];

            return new Sys.UI.Point(
                clientRect.left - offsetL,
                clientRect.top - offsetT);
        }
        break;
    case Sys.Browser.Safari:
        Sys.UI.DomElement.getLocation =3D function =
Sys$UI$DomElement$getLocation(element) {
            /// <param name=3D"element" domElement=3D"true"></param>
            /// <returns type=3D"Sys.UI.Point"></returns>
            var e =3D Function._validateParams(arguments, [
                {name: "element", domElement: true}
            ]);
            if (e) throw e;

                        if ((element.window && (element.window =3D=3D=3D =
element)) || element.nodeType =3D=3D=3D 9) return new Sys.UI.Point(0,0);

                                                var offsetX =3D 0;
            var offsetY =3D 0;

            var previous =3D null;
            var previousStyle =3D null;
            var currentStyle;
            for (var parent =3D element; parent; previous =3D parent, =
previousStyle =3D currentStyle, parent =3D parent.offsetParent) {
                currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(parent);
                var tagName =3D parent.tagName;

                                                                         =
       if ((parent.offsetLeft || parent.offsetTop) &&
                    ((tagName !=3D=3D "BODY") || (!previousStyle || =
previousStyle.position !=3D=3D "absolute"))) {

                    offsetX +=3D parent.offsetLeft;
                    offsetY +=3D parent.offsetTop;
                }
            }

            currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(element);
            var elementPosition =3D currentStyle ? currentStyle.position =
: null;
            var elementPositioned =3D elementPosition && =
(elementPosition !=3D=3D "static");
                        if (!elementPosition || (elementPosition !=3D=3D =
"absolute")) {
                                for (var parent =3D element.parentNode; =
parent; parent =3D parent.parentNode) {
                    tagName =3D parent.tagName;

                    if ((tagName !=3D=3D "BODY") && (tagName !=3D=3D =
"HTML") && (parent.scrollLeft || parent.scrollTop)) {
                        offsetX -=3D (parent.scrollLeft || 0);
                        offsetY -=3D (parent.scrollTop || 0);
                    }
                    currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(parent);
                    var parentPosition =3D currentStyle ? =
currentStyle.position : null;

                                        if (parentPosition && =
(parentPosition =3D=3D=3D "absolute")) break;
                }
            }

            return new Sys.UI.Point(offsetX, offsetY);
        }
        break;
    case Sys.Browser.Opera:
        Sys.UI.DomElement.getLocation =3D function =
Sys$UI$DomElement$getLocation(element) {
            /// <param name=3D"element" domElement=3D"true"></param>
            /// <returns type=3D"Sys.UI.Point"></returns>
            var e =3D Function._validateParams(arguments, [
                {name: "element", domElement: true}
            ]);
            if (e) throw e;

                        if ((element.window && (element.window =3D=3D=3D =
element)) || element.nodeType =3D=3D=3D 9) return new Sys.UI.Point(0,0);

                                                var offsetX =3D 0;
            var offsetY =3D 0;

            var previous =3D null;
            for (var parent =3D element; parent; previous =3D parent, =
parent =3D parent.offsetParent) {

                var tagName =3D parent.tagName;

                offsetX +=3D parent.offsetLeft || 0;
                offsetY +=3D parent.offsetTop || 0;
            }

                        var elementPosition =3D element.style.position;
            var elementPositioned =3D elementPosition && =
(elementPosition !=3D=3D "static");

                        for (var parent =3D element.parentNode; parent; =
parent =3D parent.parentNode) {
                tagName =3D parent.tagName;

                if ((tagName !=3D=3D "BODY") && (tagName !=3D=3D "HTML") =
&& (parent.scrollLeft || parent.scrollTop) &&
                    ((elementPositioned &&
                    ((parent.style.overflow =3D=3D=3D "scroll") || =
(parent.style.overflow =3D=3D=3D "auto"))))) {
                                       =20
                    offsetX -=3D (parent.scrollLeft || 0);
                    offsetY -=3D (parent.scrollTop || 0);
                }
                var parentPosition =3D (parent && parent.style) ? =
parent.style.position : null;

                                elementPositioned =3D elementPositioned =
|| (parentPosition && (parentPosition !=3D=3D "static"));
            }


            return new Sys.UI.Point(offsetX, offsetY);
        }
        break;
    default:
        Sys.UI.DomElement.getLocation =3D function =
Sys$UI$DomElement$getLocation(element) {
            /// <param name=3D"element" domElement=3D"true"></param>
            /// <returns type=3D"Sys.UI.Point"></returns>
            var e =3D Function._validateParams(arguments, [
                {name: "element", domElement: true}
            ]);
            if (e) throw e;

                        if ((element.window && (element.window =3D=3D=3D =
element)) || element.nodeType =3D=3D=3D 9) return new Sys.UI.Point(0,0);

            var offsetX =3D 0;
            var offsetY =3D 0;
            var previous =3D null;
            var previousStyle =3D null;
            var currentStyle =3D null;
            for (var parent =3D element; parent; previous =3D parent, =
previousStyle =3D currentStyle, parent =3D parent.offsetParent) {
                var tagName =3D parent.tagName;
                currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(parent);

                                                if ((parent.offsetLeft =
|| parent.offsetTop) &&
                    !((tagName =3D=3D=3D "BODY") &&
                    (!previousStyle || previousStyle.position !=3D=3D =
"absolute"))) {

                    offsetX +=3D parent.offsetLeft;
                    offsetY +=3D parent.offsetTop;
                }

                                                if (previous !=3D=3D =
null && currentStyle) {
                                                                         =
                                                                   if =
((tagName !=3D=3D "TABLE") && (tagName !=3D=3D "TD") && (tagName !=3D=3D =
"HTML")) {
                        offsetX +=3D =
parseInt(currentStyle.borderLeftWidth) || 0;
                        offsetY +=3D =
parseInt(currentStyle.borderTopWidth) || 0;
                    }
                    if (tagName =3D=3D=3D "TABLE" &&
                        (currentStyle.position =3D=3D=3D "relative" || =
currentStyle.position =3D=3D=3D "absolute")) {
                        offsetX +=3D parseInt(currentStyle.marginLeft) =
|| 0;
                        offsetY +=3D parseInt(currentStyle.marginTop) || =
0;
                    }
                }
            }

            currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(element);
            var elementPosition =3D currentStyle ? currentStyle.position =
: null;
            var elementPositioned =3D elementPosition && =
(elementPosition !=3D=3D "static");
                        if (!elementPosition || (elementPosition !=3D=3D =
"absolute")) {
                                                                         =
       for (var parent =3D element.parentNode; parent; parent =3D =
parent.parentNode) {
                                                                         =
       tagName =3D parent.tagName;

                    if ((tagName !=3D=3D "BODY") && (tagName !=3D=3D =
"HTML") && (parent.scrollLeft || parent.scrollTop)) {

                        offsetX -=3D (parent.scrollLeft || 0);
                        offsetY -=3D (parent.scrollTop || 0);

                        currentStyle =3D =
Sys.UI.DomElement._getCurrentStyle(parent);
                        offsetX +=3D =
parseInt(currentStyle.borderLeftWidth) || 0;
                        offsetY +=3D =
parseInt(currentStyle.borderTopWidth) || 0;
                    }
                }
            }

            return new Sys.UI.Point(offsetX, offsetY);
        }
        break;

}


Sys.UI.DomElement.removeCssClass =3D function =
Sys$UI$DomElement$removeCssClass(element, className) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"className" type=3D"String"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "className", type: String}
    ]);
    if (e) throw e;

    var currentClassName =3D ' ' + element.className + ' ';
    var index =3D currentClassName.indexOf(' ' + className + ' ');
    if (index >=3D 0) {
        element.className =3D (currentClassName.substr(0, index) + ' ' +
            currentClassName.substring(index + className.length + 1, =
currentClassName.length)).trim();
    }
}

Sys.UI.DomElement.setLocation =3D function =
Sys$UI$DomElement$setLocation(element, x, y) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"x" type=3D"Number" integer=3D"true"></param>
    /// <param name=3D"y" type=3D"Number" integer=3D"true"></param>
    var e =3D 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 =3D element.style;
    style.position =3D 'absolute';
    style.left =3D x + "px";
    style.top =3D y + "px";
}

Sys.UI.DomElement.toggleCssClass =3D function =
Sys$UI$DomElement$toggleCssClass(element, className) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"className" type=3D"String"></param>
    var e =3D 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);
    }
}

Sys.UI.DomElement._getCurrentStyle =3D function =
Sys$UI$DomElement$_getCurrentStyle(element) {
    var w =3D (element.ownerDocument ? element.ownerDocument : =
element.documentElement).defaultView;
    return ((w && (element !=3D=3D w) && w.getComputedStyle) ? =
w.getComputedStyle(element, null) : element.style);
}
Sys.UI.Behavior =3D function Sys$UI$Behavior(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    Sys.UI.Behavior.initializeBase(this);

    this._element =3D element;

    var behaviors =3D element._behaviors;
    if (!behaviors) {
        element._behaviors =3D [this];
    }
    else {
        behaviors[behaviors.length] =3D this;
    }
}


    function Sys$UI$Behavior$get_element() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._element;
    }
    function Sys$UI$Behavior$get_id() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        var baseId =3D Sys.UI.Behavior.callBaseMethod(this, 'get_id');
        if (baseId) return baseId;
        if (!this._element || !this._element.id) return '';
        return this._element.id + '$' + this.get_name();
    }
    function Sys$UI$Behavior$get_name() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._name) return this._name;
        var name =3D Object.getTypeName(this);
        var i =3D name.lastIndexOf('.');
        if (i !=3D -1) name =3D name.substr(i + 1);
        if (!this.get_isInitialized()) this._name =3D name;
        return name;
    }
    function Sys$UI$Behavior$set_name(value) {
        if ((value =3D=3D=3D '') || (value.charAt(0) =3D=3D=3D ' ') || =
(value.charAt(value.length - 1) =3D=3D=3D ' '))
            throw Error.argument('value', Sys.Res.invalidId);
        if (typeof(this._element[value]) !=3D=3D 'undefined')
            throw =
Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, =
value));
        if (this.get_isInitialized()) throw =
Error.invalidOperation(Sys.Res.cantSetNameAfterInit);
        this._name =3D value;
    }
    function Sys$UI$Behavior$initialize() {
        Sys.UI.Behavior.callBaseMethod(this, 'initialize');
        var name =3D this.get_name();
        if (name) this._element[name] =3D this;
    }
    function Sys$UI$Behavior$dispose() {
        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
        if (this._element) {
            var name =3D this.get_name();
            if (name) {
                this._element[name] =3D null;
            }
            Array.remove(this._element._behaviors, this);
            delete this._element;
        }
    }
Sys.UI.Behavior.prototype =3D {
    _name: null,
    get_element: Sys$UI$Behavior$get_element,
    get_id: Sys$UI$Behavior$get_id,
    get_name: Sys$UI$Behavior$get_name,
    set_name: Sys$UI$Behavior$set_name,
    initialize: Sys$UI$Behavior$initialize,
    dispose: Sys$UI$Behavior$dispose
}
Sys.UI.Behavior.registerClass('Sys.UI.Behavior', Sys.Component);

Sys.UI.Behavior.getBehaviorByName =3D function =
Sys$UI$Behavior$getBehaviorByName(element, name) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"name" type=3D"String"></param>
    /// <returns type=3D"Sys.UI.Behavior" mayBeNull=3D"true"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "name", type: String}
    ]);
    if (e) throw e;

    var b =3D element[name];
    return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null;
}

Sys.UI.Behavior.getBehaviors =3D function =
Sys$UI$Behavior$getBehaviors(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <returns type=3D"Array" =
elementType=3D"Sys.UI.Behavior"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    if (!element._behaviors) return [];
    return Array.clone(element._behaviors);
}

Sys.UI.Behavior.getBehaviorsByType =3D function =
Sys$UI$Behavior$getBehaviorsByType(element, type) {
    /// <param name=3D"element" domElement=3D"true"></param>
    /// <param name=3D"type" type=3D"Type"></param>
    /// <returns type=3D"Array" =
elementType=3D"Sys.UI.Behavior"></returns>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true},
        {name: "type", type: Type}
    ]);
    if (e) throw e;

    var behaviors =3D element._behaviors;
    var results =3D [];
    if (behaviors) {
        for (var i =3D 0, l =3D behaviors.length; i < l; i++) {
            if (type.isInstanceOfType(behaviors[i])) {
                results[results.length] =3D behaviors[i];
            }
        }
    }
    return results;
}
Sys.UI.VisibilityMode =3D function Sys$UI$VisibilityMode() {
    /// <field name=3D"hide" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    /// <field name=3D"collapse" type=3D"Number" integer=3D"true" =
static=3D"true"></field>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    throw Error.notImplemented();
}



Sys.UI.VisibilityMode.prototype =3D {
    hide: 0,
    collapse: 1
}
Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");

Sys.UI.Control =3D function Sys$UI$Control(element) {
    /// <param name=3D"element" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "element", domElement: true}
    ]);
    if (e) throw e;

    if (typeof(element.control) !=3D 'undefined') throw =
Error.invalidOperation(Sys.Res.controlAlreadyDefined);
    Sys.UI.Control.initializeBase(this);

    this._element =3D element;
    element.control =3D this;

    this._oldDisplayMode =3D this._element.style.display;
    if (!this._oldDisplayMode || (this._oldDisplayMode =3D=3D 'none')) {
        this._oldDisplayMode =3D '';
    }
}




    function Sys$UI$Control$get_element() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._element;
    }
    function Sys$UI$Control$get_id() {
        /// <value type=3D"String"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (!this._element) return '';
        return this._element.id;
    }
    function Sys$UI$Control$set_id(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String}]);
        if (e) throw e;

        throw Error.invalidOperation(Sys.Res.cantSetId);
    }
    function Sys$UI$Control$get_parent() {
        /// <value type=3D"Sys.UI.Control"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        if (this._parent) {
            return this._parent;
        }
        else {
            var parentElement =3D this._element.parentNode;
            while (parentElement) {
                if (parentElement.control) {
                    return parentElement.control;
                }
                parentElement =3D parentElement.parentNode;
            }
            return null;
        }
    }
    function Sys$UI$Control$set_parent(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Sys.UI.Control}]);
        if (e) throw e;

        var parents =3D [this];
        var current =3D value;
        while (current) {
            if (Array.contains(parents, current)) throw =
Error.invalidOperation(Sys.Res.circularParentChain);
            parents[parents.length] =3D current;
            current =3D current.get_parent();
        }
        this._parent =3D value;
    }
    function Sys$UI$Control$get_visibilityMode() {
        /// <value type=3D"Sys.UI.VisibilityMode"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._visibilityMode;
    }
    function Sys$UI$Control$set_visibilityMode(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Sys.UI.VisibilityMode}]);
        if (e) throw e;

        if (this._visibilityMode !=3D=3D value) {
            this._visibilityMode =3D value;
            if (this.get_visible() =3D=3D=3D false) {
                if (this._visibilityMode =3D=3D=3D =
Sys.UI.VisibilityMode.hide) {
                    this._element.style.display =3D =
this._oldDisplayMode;
                }
                else {
                    this._element.style.display =3D 'none';
                }
            }
        }
        this._visibilityMode =3D value;
    }
    function Sys$UI$Control$get_visible() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return (this._element.style.visibility !=3D 'hidden');
    }
    function Sys$UI$Control$set_visible(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Boolean}]);
        if (e) throw e;

        if (value !=3D this.get_visible()) {
            this._element.style.visibility =3D value ? 'visible' : =
'hidden';
            if (value || (this._visibilityMode =3D=3D=3D =
Sys.UI.VisibilityMode.hide)) {
                this._element.style.display =3D this._oldDisplayMode;
            }
            else {
                this._element.style.display =3D 'none';
            }
        }
    }
    function Sys$UI$Control$addCssClass(className) {
        /// <param name=3D"className" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;

        Sys.UI.DomElement.addCssClass(this._element, className);
    }
    function Sys$UI$Control$dispose() {
        Sys.UI.Control.callBaseMethod(this, 'dispose');
        if (this._element) {
            this._element.control =3D undefined;
            delete this._element;
        }
    }
    function Sys$UI$Control$initialize() {
        Sys.UI.Control.callBaseMethod(this, 'initialize');
        var elt =3D this._element;
    }
    function Sys$UI$Control$onBubbleEvent(source, args) {
        /// <param name=3D"source"></param>
        /// <param name=3D"args" type=3D"Sys.EventArgs"></param>
        /// <returns type=3D"Boolean"></returns>
        var e =3D Function._validateParams(arguments, [
            {name: "source"},
            {name: "args", type: Sys.EventArgs}
        ]);
        if (e) throw e;

        return false;
    }
    function Sys$UI$Control$raiseBubbleEvent(source, args) {
        /// <param name=3D"source"></param>
        /// <param name=3D"args" type=3D"Sys.EventArgs"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "source"},
            {name: "args", type: Sys.EventArgs}
        ]);
        if (e) throw e;

        var currentTarget =3D this.get_parent();
        while (currentTarget) {
            if (currentTarget.onBubbleEvent(source, args)) {
                return;
            }
            currentTarget =3D currentTarget.get_parent();
        }
    }
    function Sys$UI$Control$removeCssClass(className) {
        /// <param name=3D"className" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;

        Sys.UI.DomElement.removeCssClass(this._element, className);
    }
    function Sys$UI$Control$toggleCssClass(className) {
        /// <param name=3D"className" type=3D"String"></param>
        var e =3D Function._validateParams(arguments, [
            {name: "className", type: String}
        ]);
        if (e) throw e;

        Sys.UI.DomElement.toggleCssClass(this._element, className);
    }
Sys.UI.Control.prototype =3D {
    _parent: null,
    _visibilityMode: Sys.UI.VisibilityMode.hide,

    get_element: Sys$UI$Control$get_element,
    get_id: Sys$UI$Control$get_id,
    set_id: Sys$UI$Control$set_id,
    get_parent: Sys$UI$Control$get_parent,
    set_parent: Sys$UI$Control$set_parent,
    get_visibilityMode: Sys$UI$Control$get_visibilityMode,
    set_visibilityMode: Sys$UI$Control$set_visibilityMode,
    get_visible: Sys$UI$Control$get_visible,
    set_visible: Sys$UI$Control$set_visible,
    addCssClass: Sys$UI$Control$addCssClass,
    dispose: Sys$UI$Control$dispose,
    initialize: Sys$UI$Control$initialize,
    onBubbleEvent: Sys$UI$Control$onBubbleEvent,
    raiseBubbleEvent: Sys$UI$Control$raiseBubbleEvent,
    removeCssClass: Sys$UI$Control$removeCssClass,
    toggleCssClass: Sys$UI$Control$toggleCssClass
}
Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component);

Type.registerNamespace('Sys');
Sys.Res=3D{
"argumentTypeName":"Value is not the name of an existing type.",
"methodRegisteredTwice":"Method {0} has already been registered.",
"cantSetIdAfterInit":"The id property can\u0027t be set on this object =
after initialization.",
"componentCantSetIdAfterAddedToApp":"The id property of a component =
can\u0027t be set after it\u0027s been added to the Application =
object.",
"behaviorDuplicateName":"A behavior with name \u0027{0}\u0027 already =
exists or it is the name of an existing property on the target =
element.",
"notATypeName":"Value is not a valid type name.",
"typeShouldBeTypeOrString":"Value is not a valid type or a valid type =
name.",
"boolTrueOrFalse":"Value must be \u0027true\u0027 or =
\u0027false\u0027.",
"stringFormatInvalid":"The format string is invalid.",
"referenceNotFound":"Component \u0027{0}\u0027 was not found.",
"enumReservedName":"\u0027{0}\u0027 is a reserved name that can\u0027t =
be used as an enum value name.",
"eventHandlerNotFound":"Handler not found.",
"circularParentChain":"The chain of control parents can\u0027t have =
circular references.",
"undefinedEvent":"\u0027{0}\u0027 is not an event.",
"notAMethod":"{0} is not a method.",
"propertyUndefined":"\u0027{0}\u0027 is not a property or an existing =
field.",
"eventHandlerInvalid":"Handler was not added through the =
Sys.UI.DomEvent.addHandler method.",
"scriptLoadFailedDebug":"The script \u0027{0}\u0027 failed to load. =
Check for:\r\n Inaccessible path.\r\n Script errors. (IE) Enable =
\u0027Display a notification about every script error\u0027 under =
advanced settings.\r\n Missing call to =
Sys.Application.notifyScriptLoaded().",
"propertyNotWritable":"\u0027{0}\u0027 is not a writable property.",
"enumInvalidValueName":"\u0027{0}\u0027 is not a valid name for an enum =
value.",
"controlAlreadyDefined":"A control is already associated with the =
element.",
"namespaceContainsObject":"Object {0} already exists and is not a =
namespace.",
"cantAddNonFunctionhandler":"Can\u0027t add a handler that is not a =
function.",
"scriptLoaderAlreadyLoading":"ScriptLoader.loadScripts cannot be called =
while the ScriptLoader is already loading scripts.",
"invalidNameSpace":"Value is not a valid namespace identifier.",
"notAnInterface":"Value is not a valid interface.",
"eventHandlerNotFunction":"Handler must be a function.",
"propertyNotAnArray":"\u0027{0}\u0027 is not an Array property.",
"typeRegisteredTwice":"Type {0} has already been registered.",
"cantSetNameAfterInit":"The name property can\u0027t be set on this =
object after initialization.",
"appDuplicateComponent":"Two components with the same id \u0027{0}\u0027 =
can\u0027t be added to the application.",
"appComponentMustBeInitialized":"Components must be initialized before =
they are added to the Application object.",
"baseNotAClass":"Value is not a class.",
"methodNotFound":"No method found with name \u0027{0}\u0027.",
"arrayParseBadFormat":"Value must be a valid string representation for =
an array. It must start with a \u0027[\u0027 and end with a =
\u0027]\u0027.",
"cantSetId":"The id property can\u0027t be set on this object.",
"stringFormatBraceMismatch":"The format string contains an unmatched =
opening or closing brace.",
"enumValueNotInteger":"An enumeration definition can only contain =
integer values.",
"propertyNullOrUndefined":"Cannot set the properties of \u0027{0}\u0027 =
because it returned a null value.",
"componentCantSetIdTwice":"The id property of a component can\u0027t be =
set more than once.",
"createComponentOnDom":"Value must be null for Components that are not =
Controls or Behaviors.",
"createNotComponent":"{0} does not derive from Sys.Component.",
"createNoDom":"Value must not be null for Controls and Behaviors.",
"cantAddWithoutId":"Can\u0027t add a component that doesn\u0027t have an =
id.",
"badTypeName":"Value is not the name of the type being registered or the =
name is a reserved word.",
"argumentInteger":"Value must be an integer.",
"scriptLoadMultipleCallbacks":"The script \u0027{0}\u0027 contains =
multiple calls to Sys.Application.notifyScriptLoaded(). Only one is =
allowed.",
"invokeCalledTwice":"Cannot call invoke more than once.",
"webServiceFailed":"The server method \u0027{0}\u0027 failed with the =
following error: {1}",
"argumentType":"Object cannot be converted to the required type.",
"argumentNull":"Value cannot be null.",
"controlCantSetId":"The id property can\u0027t be set on a control.",
"formatBadFormatSpecifier":"Format specifier was invalid.",
"webServiceFailedNoMsg":"The server method \u0027{0}\u0027 failed.",
"argumentDomElement":"Value must be a DOM element.",
"invalidExecutorType":"Could not create a valid =
Sys.Net.WebRequestExecutor from: {0}.",
"cannotCallBeforeResponse":"Cannot call {0} when responseAvailable is =
false.",
"actualValue":"Actual value was {0}.",
"enumInvalidValue":"\u0027{0}\u0027 is not a valid value for enum {1}.",
"scriptLoadFailed":"The script \u0027{0}\u0027 could not be loaded.",
"parameterCount":"Parameter count mismatch.",
"cannotDeserializeEmptyString":"Cannot deserialize empty string.",
"formatInvalidString":"Input string was not in a correct format.",
"invalidTimeout":"Value must be greater than or equal to zero.",
"cannotAbortBeforeStart":"Cannot abort when executor has not started.",
"argument":"Value does not fall within the expected range.",
"cannotDeserializeInvalidJson":"Cannot deserialize. The data does not =
correspond to valid JSON.",
"invalidHttpVerb":"httpVerb cannot be set to an empty or null string.",
"nullWebRequest":"Cannot call executeRequest with a null webRequest.",
"eventHandlerInvalid":"Handler was not added through the =
Sys.UI.DomEvent.addHandler method.",
"cannotSerializeNonFiniteNumbers":"Cannot serialize non finite =
numbers.",
"argumentUndefined":"Value cannot be undefined.",
"webServiceInvalidReturnType":"The server method \u0027{0}\u0027 =
returned an invalid type. Expected type: {1}",
"servicePathNotSet":"The path to the web service has not been set.",
"argumentTypeWithTypes":"Object of type \u0027{0}\u0027 cannot be =
converted to type \u0027{1}\u0027.",
"cannotCallOnceStarted":"Cannot call {0} once started.",
"badBaseUrl1":"Base URL does not contain ://.",
"badBaseUrl2":"Base URL does not contain another /.",
"badBaseUrl3":"Cannot find last / in base URL.",
"setExecutorAfterActive":"Cannot set executor after it has become =
active.",
"paramName":"Parameter name: {0}",
"cannotCallOutsideHandler":"Cannot call {0} outside of a completed event =
handler.",
"format":"One of the identified items was in an invalid format.",
"assertFailedCaller":"Assertion Failed: {0}\r\nat {1}",
"argumentOutOfRange":"Specified argument was out of the range of valid =
values.",
"webServiceTimedOut":"The server method \u0027{0}\u0027 timed out.",
"notImplemented":"The method or operation is not implemented.",
"assertFailed":"Assertion Failed: {0}",
"invalidOperation":"Operation is not valid due to the current state of =
the object.",
"breakIntoDebugger":"{0}\r\n\r\nBreak into debugger?"
};

if(typeof(Sys)!=3D=3D'undefined')Sys.Application.notifyScriptLoaded();
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/ScriptResource.axd?d=rysaw5isGn_qBUQ_yY87Cq0eim1BPYPSkloLDnlBsZhHuvW2Pd2jnRrp8npkpNmOMi93z04MSOksT-foii7M0A2&t=633718480760000000

=EF=BB=BF//--------------------------------------------------------------=
---------
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------=

// MicrosoftAjaxWebForms.js
// Microsoft AJAX ASP.NET WebForms Framework.


Type.registerNamespace('Sys.WebForms');


Sys.WebForms.BeginRequestEventArgs =3D function =
Sys$WebForms$BeginRequestEventArgs(request, postBackElement) {
    /// <param name=3D"request" type=3D"Sys.Net.WebRequest"></param>
    /// <param name=3D"postBackElement" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "request", type: Sys.Net.WebRequest},
        {name: "postBackElement", domElement: true}
    ]);
    if (e) throw e;


    Sys.WebForms.BeginRequestEventArgs.initializeBase(this);
    this._request =3D request;
    this._postBackElement =3D postBackElement;
}


    function Sys$WebForms$BeginRequestEventArgs$get_postBackElement() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._postBackElement;
    }

    function Sys$WebForms$BeginRequestEventArgs$get_request() {
        /// <value type=3D"Sys.Net.WebRequest"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._request;
    }
Sys.WebForms.BeginRequestEventArgs.prototype =3D {
    get_postBackElement: =
Sys$WebForms$BeginRequestEventArgs$get_postBackElement,

    get_request: Sys$WebForms$BeginRequestEventArgs$get_request
}

Sys.WebForms.BeginRequestEventArgs.registerClass('Sys.WebForms.BeginReque=
stEventArgs', Sys.EventArgs);

Sys.WebForms.EndRequestEventArgs =3D function =
Sys$WebForms$EndRequestEventArgs(error, dataItems, response) {
    /// <param name=3D"error" type=3D"Error" mayBeNull=3D"true"></param>
    /// <param name=3D"dataItems" type=3D"Object" =
mayBeNull=3D"true"></param>
    /// <param name=3D"response" =
type=3D"Sys.Net.WebRequestExecutor"></param>
    var e =3D 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 =3D false;
    this._error =3D error;
        this._dataItems =3D dataItems || new Object();
    this._response =3D response;
}


    function Sys$WebForms$EndRequestEventArgs$get_dataItems() {
        /// <value type=3D"Object"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._dataItems;
    }

    function Sys$WebForms$EndRequestEventArgs$get_error() {
        /// <value type=3D"Error"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._error;
    }

    function Sys$WebForms$EndRequestEventArgs$get_errorHandled() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._errorHandled;
    }
    function Sys$WebForms$EndRequestEventArgs$set_errorHandled(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Boolean}]);
        if (e) throw e;

        this._errorHandled =3D value;
    }

    function Sys$WebForms$EndRequestEventArgs$get_response() {
        /// <value type=3D"Sys.Net.WebRequestExecutor"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._response;
    }
Sys.WebForms.EndRequestEventArgs.prototype =3D {
    get_dataItems: Sys$WebForms$EndRequestEventArgs$get_dataItems,

    get_error: Sys$WebForms$EndRequestEventArgs$get_error,

    get_errorHandled: Sys$WebForms$EndRequestEventArgs$get_errorHandled,
    set_errorHandled: Sys$WebForms$EndRequestEventArgs$set_errorHandled,

    get_response: Sys$WebForms$EndRequestEventArgs$get_response
}

Sys.WebForms.EndRequestEventArgs.registerClass('Sys.WebForms.EndRequestEv=
entArgs', Sys.EventArgs);

Sys.WebForms.InitializeRequestEventArgs =3D function =
Sys$WebForms$InitializeRequestEventArgs(request, postBackElement) {
    /// <param name=3D"request" type=3D"Sys.Net.WebRequest"></param>
    /// <param name=3D"postBackElement" domElement=3D"true"></param>
    var e =3D Function._validateParams(arguments, [
        {name: "request", type: Sys.Net.WebRequest},
        {name: "postBackElement", domElement: true}
    ]);
    if (e) throw e;


    Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);
    this._request =3D request;
    this._postBackElement =3D postBackElement;
}


    function =
Sys$WebForms$InitializeRequestEventArgs$get_postBackElement() {
        /// <value domElement=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._postBackElement;
    }

    function Sys$WebForms$InitializeRequestEventArgs$get_request() {
        /// <value type=3D"Sys.Net.WebRequest"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._request;
    }
Sys.WebForms.InitializeRequestEventArgs.prototype =3D {
    get_postBackElement: =
Sys$WebForms$InitializeRequestEventArgs$get_postBackElement,

    get_request: Sys$WebForms$InitializeRequestEventArgs$get_request
}

Sys.WebForms.InitializeRequestEventArgs.registerClass('Sys.WebForms.Initi=
alizeRequestEventArgs', Sys.CancelEventArgs);

Sys.WebForms.PageLoadedEventArgs =3D function =
Sys$WebForms$PageLoadedEventArgs(panelsUpdated, panelsCreated, =
dataItems) {
    /// <param name=3D"panelsUpdated" type=3D"Array"></param>
    /// <param name=3D"panelsCreated" type=3D"Array"></param>
    /// <param name=3D"dataItems" type=3D"Object" =
mayBeNull=3D"true"></param>
    var e =3D 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 =3D panelsUpdated;
    this._panelsCreated =3D panelsCreated;
        this._dataItems =3D dataItems || new Object();
}


    function Sys$WebForms$PageLoadedEventArgs$get_dataItems() {
        /// <value type=3D"Object"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._dataItems;
    }

    function Sys$WebForms$PageLoadedEventArgs$get_panelsCreated() {
        /// <value type=3D"Array"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._panelsCreated;
    }

    function Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated() {
        /// <value type=3D"Array"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._panelsUpdated;
    }
Sys.WebForms.PageLoadedEventArgs.prototype =3D {
    get_dataItems: Sys$WebForms$PageLoadedEventArgs$get_dataItems,

    get_panelsCreated: =
Sys$WebForms$PageLoadedEventArgs$get_panelsCreated,

    get_panelsUpdated: =
Sys$WebForms$PageLoadedEventArgs$get_panelsUpdated
}

Sys.WebForms.PageLoadedEventArgs.registerClass('Sys.WebForms.PageLoadedEv=
entArgs', Sys.EventArgs);

Sys.WebForms.PageLoadingEventArgs =3D function =
Sys$WebForms$PageLoadingEventArgs(panelsUpdating, panelsDeleting, =
dataItems) {
    /// <param name=3D"panelsUpdating" type=3D"Array"></param>
    /// <param name=3D"panelsDeleting" type=3D"Array"></param>
    /// <param name=3D"dataItems" type=3D"Object" =
mayBeNull=3D"true"></param>
    var e =3D 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 =3D panelsUpdating;
    this._panelsDeleting =3D panelsDeleting;
        this._dataItems =3D dataItems || new Object();
}


    function Sys$WebForms$PageLoadingEventArgs$get_dataItems() {
        /// <value type=3D"Object"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._dataItems;
    }

    function Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting() {
        /// <value type=3D"Array"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._panelsDeleting;
    }

    function Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating() {
        /// <value type=3D"Array"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._panelsUpdating;
    }
Sys.WebForms.PageLoadingEventArgs.prototype =3D {
    get_dataItems: Sys$WebForms$PageLoadingEventArgs$get_dataItems,

    get_panelsDeleting: =
Sys$WebForms$PageLoadingEventArgs$get_panelsDeleting,

    get_panelsUpdating: =
Sys$WebForms$PageLoadingEventArgs$get_panelsUpdating
}

Sys.WebForms.PageLoadingEventArgs.registerClass('Sys.WebForms.PageLoading=
EventArgs', Sys.EventArgs);
Sys.WebForms.PageRequestManager =3D function =
Sys$WebForms$PageRequestManager() {
    this._form =3D null;
    this._updatePanelIDs =3D null;
    this._updatePanelClientIDs =3D null;
    this._oldUpdatePanelIDs =3D null;
    this._childUpdatePanelIDs =3D null;
    this._panelsToRefreshIDs =3D null;
    this._updatePanelHasChildrenAsTriggers =3D null;
    this._asyncPostBackControlIDs =3D null;
    this._asyncPostBackControlClientIDs =3D null;
    this._postBackControlIDs =3D null;
    this._postBackControlClientIDs =3D null;
    this._scriptManagerID =3D null;
    this._pageLoadedHandler =3D null;

    this._additionalInput =3D null;
    this._onsubmit =3D null;
    this._onSubmitStatements =3D [];
    this._originalDoPostBack =3D null;
    this._postBackSettings =3D null;
    this._request =3D null;
    this._onFormSubmitHandler =3D null;
    this._onFormElementClickHandler =3D null;
    this._onWindowUnloadHandler =3D null;
    this._asyncPostBackTimeout =3D null;

    this._controlIDToFocus =3D null;
    this._scrollPosition =3D null;
    this._dataItems =3D null;
    this._response =3D null;
    this._processingRequest =3D false;
    this._scriptDisposes =3D {};
}



    function Sys$WebForms$PageRequestManager$_get_eventHandlerList() {
        if (!this._events) {
            this._events =3D new Sys.EventHandlerList();
        }
        return this._events;
    }

    function Sys$WebForms$PageRequestManager$get_isInAsyncPostBack() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._request !=3D=3D null;
    }


    function Sys$WebForms$PageRequestManager$add_beginRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("beginRequest", =
handler);
    }
    function =
Sys$WebForms$PageRequestManager$remove_beginRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("beginRequest", =
handler);
    }

    function Sys$WebForms$PageRequestManager$add_endRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("endRequest", handler);
    }
    function Sys$WebForms$PageRequestManager$remove_endRequest(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("endRequest", =
handler);
    }

    function =
Sys$WebForms$PageRequestManager$add_initializeRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("initializeRequest", =
handler);
    }
    function =
Sys$WebForms$PageRequestManager$remove_initializeRequest(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("initializeRequest", =
handler);
    }

    function Sys$WebForms$PageRequestManager$add_pageLoaded(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("pageLoaded", handler);
    }
    function Sys$WebForms$PageRequestManager$remove_pageLoaded(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("pageLoaded", =
handler);
    }

    function Sys$WebForms$PageRequestManager$add_pageLoading(handler) {
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().addHandler("pageLoading", handler);
    }
    function Sys$WebForms$PageRequestManager$remove_pageLoading(handler) =
{
        var e =3D Function._validateParams(arguments, [{name: "handler", =
type: Function}]);
        if (e) throw e;

        this._get_eventHandlerList().removeHandler("pageLoading", =
handler);
    }

    function Sys$WebForms$PageRequestManager$abortPostBack() {
        if (!this._processingRequest && this._request) {
            this._request.get_executor().abort();
            this._request =3D null;
        }
    }

    function =
Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError() =
{
                var displayMessage =3D =
"Sys.WebForms.PageRequestManagerTimeoutException: " + =
Sys.WebForms.Res.PRM_TimeoutError;
        var e =3D Error.create(displayMessage, {name: =
'Sys.WebForms.PageRequestManagerTimeoutException'});
        e.popStackFrame();
        return e;
    }

    function =
Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError(http=
StatusCode, message) {
                var displayMessage =3D message || =
("Sys.WebForms.PageRequestManagerServerErrorException: " + =
String.format(Sys.WebForms.Res.PRM_ServerError, httpStatusCode));
        var e =3D Error.create(displayMessage, {
            name: 'Sys.WebForms.PageRequestManagerServerErrorException',
            httpStatusCode: httpStatusCode
        });
        e.popStackFrame();
        return e;
    }

    function =
Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError(pars=
erErrorMessage) {
                var displayMessage =3D =
"Sys.WebForms.PageRequestManagerParserErrorException: " + =
String.format(Sys.WebForms.Res.PRM_ParserError, parserErrorMessage);
        var e =3D Error.create(displayMessage, {name: =
'Sys.WebForms.PageRequestManagerParserErrorException'});
        e.popStackFrame();
        return e;
    }

    function =
Sys$WebForms$PageRequestManager$_createPostBackSettings(async, panelID, =
sourceElement) {

        return { async:async, panelID:panelID, =
sourceElement:sourceElement };
    }

    function Sys$WebForms$PageRequestManager$_convertToClientIDs(source, =
destinationIDs, destinationClientIDs) {
        if (source) {
            for (var i =3D 0; i < source.length; i++) {
                Array.add(destinationIDs, source[i]);
                Array.add(destinationClientIDs, =
this._uniqueIDToClientID(source[i]));
            }
        }
    }

    function Sys$WebForms$PageRequestManager$_decodeString(encodedValue) =
{
        return encodedValue.replace(/\\\u00FF\\/g, =
"\u0000").replace(/\u00FF\u00FF/g, "\u00FF");
    }

    function Sys$WebForms$PageRequestManager$_destroyTree(element) {
                if (element.nodeType =3D=3D=3D 1) {
                                    var childNodes =3D =
element.childNodes;
            for (var i =3D childNodes.length - 1; i >=3D 0; i--) {
                var node =3D childNodes[i];
                if (node.nodeType =3D=3D=3D 1) {
                    if (node.dispose && typeof(node.dispose) =3D=3D=3D =
"function") {
                        node.dispose();
                    }
                    else if (node.control && =
typeof(node.control.dispose) =3D=3D=3D "function") {
                        node.control.dispose();
                    }
                    var behaviors =3D =
Sys.UI.Behavior.getBehaviors(node);
                    for (var j =3D behaviors.length - 1; j >=3D 0; j--) =
{
                        behaviors[j].dispose();
                    }
                    this._destroyTree(node);
                }
            }
        }
    }

    function Sys$WebForms$PageRequestManager$dispose() {
        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 =3D this._originalDoPostBack;
            this._originalDoPostBack =3D null;
        }

        this._form =3D null;
        this._updatePanelIDs =3D null;
        this._oldUpdatePanelIDs =3D null;
        this._childUpdatePanelIDs =3D null;
        this._updatePanelClientIDs =3D null;
        this._asyncPostBackControlIDs =3D null;
        this._asyncPostBackControlClientIDs =3D null;
        this._postBackControlIDs =3D null;
        this._postBackControlClientIDs =3D null;
        this._asyncPostBackTimeout =3D null;
        this._scrollPosition =3D null;
        this._dataItems =3D null;
    }


    function Sys$WebForms$PageRequestManager$_doPostBack(eventTarget, =
eventArgument) {
        this._additionalInput =3D null;

        var form =3D this._form;
        if (form.action !=3D=3D form._initialAction) {
                                    this._postBackSettings =3D =
this._createPostBackSettings(false, null, null);
        }
        else {
                        var clientID =3D =
this._uniqueIDToClientID(eventTarget);
            var postBackElement =3D document.getElementById(clientID);
            if (!postBackElement) {
                                                                         =
       if (Array.contains(this._asyncPostBackControlIDs, eventTarget)) {
                                        this._postBackSettings =3D =
this._createPostBackSettings(true, this._scriptManagerID + '|' + =
eventTarget, null);
                }
                else {
                    if (Array.contains(this._postBackControlIDs, =
eventTarget)) {
                                                this._postBackSettings =
=3D this._createPostBackSettings(false, null, null);
                    }
                    else {
                                                                         =
                       var nearestUniqueIDMatch =3D =
this._findNearestElement(eventTarget);
                        if (nearestUniqueIDMatch) {
                                                                         =
           this._postBackSettings =3D =
this._getPostBackSettings(nearestUniqueIDMatch, eventTarget);
                        }
                        else {
                                                                         =
           this._postBackSettings =3D =
this._createPostBackSettings(false, null, null);
                        }
                    }
                }
            }
            else {
                                                this._postBackSettings =
=3D this._getPostBackSettings(postBackElement, eventTarget);
            }
        }

        if (!this._postBackSettings.async) {
                                    form.onsubmit =3D this._onsubmit;
            this._originalDoPostBack(eventTarget, eventArgument);
            form.onsubmit =3D null;
            return;
        }

        form.__EVENTTARGET.value =3D eventTarget;
        form.__EVENTARGUMENT.value =3D eventArgument;
        this._onFormSubmit();
    }

    function Sys$WebForms$PageRequestManager$_elementContains(container, =
element) {
        while (element) {
            if (element =3D=3D=3D container) {
                return true;
            }
            element =3D element.parentNode;
        }
        return false;
    }

    function Sys$WebForms$PageRequestManager$_endPostBack(error, =
response) {
        this._processingRequest =3D false;

        this._request =3D null;
        this._additionalInput =3D null;

        var handler =3D =
this._get_eventHandlerList().getHandler("endRequest");
        var errorHandled =3D false;
        if (handler) {
            var eventArgs =3D new =
Sys.WebForms.EndRequestEventArgs(error, this._dataItems, response);
            handler(this, eventArgs);
            errorHandled =3D eventArgs.get_errorHandled();
        }
        this._dataItems =3D null;
        if (error && !errorHandled) {
            alert(error.message);
        }
    }



    function =
Sys$WebForms$PageRequestManager$_findNearestElement(uniqueID) {
        while (uniqueID.length > 0) {
            var clientID =3D this._uniqueIDToClientID(uniqueID);
            var element =3D document.getElementById(clientID);
            if (element) {
                return element;
            }
            var indexOfLastDollar =3D uniqueID.lastIndexOf('$');
            if (indexOfLastDollar =3D=3D=3D -1) {
                return null;
            }
            uniqueID =3D uniqueID.substring(0, indexOfLastDollar);
        }
        return null;
    }

    function Sys$WebForms$PageRequestManager$_findText(text, location) {
        var startIndex =3D Math.max(0, location - 20);
        var endIndex =3D Math.min(text.length, location + 20);
        return text.substring(startIndex, endIndex);
    }

    function =
Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs(initialLoad) {
                                                                         =
                                                              =20
        var updated =3D [];
        var created =3D [];

                var oldIDs =3D this._oldUpdatePanelIDs || [];         =
var newIDs =3D this._updatePanelIDs;         var childIDs =3D =
this._childUpdatePanelIDs || [];         var refreshedIDs =3D =
this._panelsToRefreshIDs || [];=20
                for (var i =3D 0; i < refreshedIDs.length; i++) {
            Array.add(updated, =
document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
        }

                        for (var i =3D 0; i < newIDs.length; i++) {
            if (initialLoad || Array.indexOf(childIDs, newIDs[i]) =
!=3D=3D -1) {
                Array.add(created, =
document.getElementById(this._uniqueIDToClientID(newIDs[i])));
            }
        }

        return new Sys.WebForms.PageLoadedEventArgs(updated, created, =
this._dataItems);
    }

    function Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs() =
{
                                                                         =
                                                              =20
        var updated =3D [];
        var deleted =3D [];

        var oldIDs =3D this._oldUpdatePanelIDs;
        var newIDs =3D this._updatePanelIDs;
        var childIDs =3D this._childUpdatePanelIDs;
        var refreshedIDs =3D this._panelsToRefreshIDs;

                for (var i =3D 0; i < refreshedIDs.length; i++) {
            Array.add(updated, =
document.getElementById(this._uniqueIDToClientID(refreshedIDs[i])));
        }

                for (var i =3D 0; i < oldIDs.length; i++) {
            if (Array.indexOf(refreshedIDs, oldIDs[i]) =3D=3D=3D -1 &&
                (Array.indexOf(newIDs, oldIDs[i]) =3D=3D=3D -1 || =
Array.indexOf(childIDs, oldIDs[i]) > -1)) {
                Array.add(deleted, =
document.getElementById(this._uniqueIDToClientID(oldIDs[i])));
            }
        }

        return new Sys.WebForms.PageLoadingEventArgs(updated, deleted, =
this._dataItems);
    }

    function =
Sys$WebForms$PageRequestManager$_getPostBackSettings(element, =
elementUniqueID) {


        var originalElement =3D element;

                        var proposedSettings =3D null;

                        while (element) {
            if (element.id) {
                                if (!proposedSettings && =
Array.contains(this._asyncPostBackControlClientIDs, element.id)) {
                                        proposedSettings =3D =
this._createPostBackSettings(true, this._scriptManagerID + '|' + =
elementUniqueID, originalElement);
                }
                else {
                    if (!proposedSettings && =
Array.contains(this._postBackControlClientIDs, element.id)) {
                                                return =
this._createPostBackSettings(false, null, null);
                    }
                    else {
                        var indexOfPanel =3D =
Array.indexOf(this._updatePanelClientIDs, element.id);
                        if (indexOfPanel !=3D=3D -1) {
                                                        if =
(this._updatePanelHasChildrenAsTriggers[indexOfPanel]) {
                                                               =20
                                                                         =
                                                       return =
this._createPostBackSettings(true, this._updatePanelIDs[indexOfPanel] + =
'|' + elementUniqueID, originalElement);
                            }
                            else {
                                                                         =
                       return this._createPostBackSettings(true, =
this._scriptManagerID + '|' + elementUniqueID, originalElement);
                            }
                        }
                    }
                }

                                if (!proposedSettings && =
this._matchesParentIDInList(element.id, =
this._asyncPostBackControlClientIDs)) {
                                        proposedSettings =3D =
this._createPostBackSettings(true, this._scriptManagerID + '|' + =
elementUniqueID, originalElement);
                }
                else {
                    if (!proposedSettings && =
this._matchesParentIDInList(element.id, this._postBackControlClientIDs)) =
{
                                                return =
this._createPostBackSettings(false, null, null);
                    }
                }
            }

            element =3D element.parentNode;
        }

                                                if (!proposedSettings) {
                        return this._createPostBackSettings(false, null, =
null);
        }
        else {
            return proposedSettings;
        }
    }

    function Sys$WebForms$PageRequestManager$_getScrollPosition() {
        var d =3D document.documentElement;
        if (d && (this._validPosition(d.scrollLeft) || =
this._validPosition(d.scrollTop))) {
            return {
                x: d.scrollLeft,
                y: d.scrollTop
            };
        }
        else {
            d =3D 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
                    };
                }
            }
        }
    }

    function =
Sys$WebForms$PageRequestManager$_initializeInternal(scriptManagerID, =
formElement) {
        this._scriptManagerID =3D scriptManagerID;

        this._form =3D formElement;

       =20
                this._form._initialAction =3D this._form.action;

        this._onsubmit =3D this._form.onsubmit;
        this._form.onsubmit =3D null;
        this._onFormSubmitHandler =3D Function.createDelegate(this, =
this._onFormSubmit);
        this._onFormElementClickHandler =3D =
Function.createDelegate(this, this._onFormElementClick);
        this._onWindowUnloadHandler =3D 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 =3D window.__doPostBack;
                if (this._originalDoPostBack) {
            window.__doPostBack =3D Function.createDelegate(this, =
this._doPostBack);
        }

        this._pageLoadedHandler =3D Function.createDelegate(this, =
this._pageLoadedInitialLoad);
        Sys.UI.DomEvent.addHandler(window, 'load', =
this._pageLoadedHandler);
    }

    function =
Sys$WebForms$PageRequestManager$_matchesParentIDInList(clientID, =
parentIDList) {
        for (var i =3D 0; i < parentIDList.length; i++) {
            if (clientID.startsWith(parentIDList[i] + "_")) {
                return true;
            }
        }
        return false;
    }

    function Sys$WebForms$PageRequestManager$_onFormElementClick(evt) {
        var element =3D evt.target;
        if (element.disabled) {
            return;
        }

                this._postBackSettings =3D =
this._getPostBackSettings(element, element.name);


        if (element.name) {
            if (element.tagName =3D=3D=3D 'INPUT') {
                var type =3D element.type;
                if (type =3D=3D=3D 'submit') {
                    this._additionalInput =3D element.name + '=3D' + =
encodeURIComponent(element.value);
                }
                else if (type =3D=3D=3D 'image') {
                    var x =3D evt.offsetX;
                    var y =3D evt.offsetY;
                    this._additionalInput =3D element.name + '.x=3D' + x =
+ '&' + element.name + '.y=3D' + y;
                }
            }
            else if ((element.tagName =3D=3D=3D 'BUTTON') && =
(element.name.length !=3D=3D 0) && (element.type =3D=3D=3D 'submit')) {
                this._additionalInput =3D element.name + '=3D' + =
encodeURIComponent(element.value);
            }
        }
    }

    function Sys$WebForms$PageRequestManager$_onFormSubmit(evt) {
        var continueSubmit =3D true;

                if (this._onsubmit) {
            continueSubmit =3D this._onsubmit();
        }

                if (continueSubmit) {
            for (var i =3D 0; i < this._onSubmitStatements.length; i++) =
{
                if (!this._onSubmitStatements[i]()) {
                    continueSubmit =3D false;
                    break;
                }
            }
        }

        if (!continueSubmit) {
            if (evt) {
                evt.preventDefault();
            }
            return;
        }

        var form =3D this._form;
        if (form.action !=3D=3D form._initialAction) {
                                    return;
        }

                        if (!this._postBackSettings.async) {
            return;
        }

                var formBody =3D new Sys.StringBuilder();
        formBody.append(this._scriptManagerID + '=3D' + =
this._postBackSettings.panelID + '&');

        var count =3D form.elements.length;
        for (var i =3D 0; i < count; i++) {
            var element =3D form.elements[i];
            var name =3D element.name;
            if (typeof(name) =3D=3D=3D "undefined" || (name =3D=3D=3D =
null) || (name.length =3D=3D=3D 0)) {
                continue;
            }

            var tagName =3D element.tagName;

            if (tagName =3D=3D=3D 'INPUT') {
                var type =3D element.type;
                if ((type =3D=3D=3D 'text') ||
                    (type =3D=3D=3D 'password') ||
                    (type =3D=3D=3D 'hidden') ||
                    (((type =3D=3D=3D 'checkbox') || (type =3D=3D=3D =
'radio')) && element.checked)) {
                    formBody.append(name);
                    formBody.append('=3D');
                    formBody.append(encodeURIComponent(element.value));
                    formBody.append('&');
                }
            }
            else if (tagName =3D=3D=3D 'SELECT') {
                var optionCount =3D element.options.length;
                for (var j =3D 0; j < optionCount; j++) {
                    var option =3D element.options[j];
                    if (option.selected) {
                        formBody.append(name);
                        formBody.append('=3D');
                        =
formBody.append(encodeURIComponent(option.value));
                        formBody.append('&');
                    }
                }
            }
            else if (tagName =3D=3D=3D 'TEXTAREA') {
                formBody.append(name);
                formBody.append('=3D');
                formBody.append(encodeURIComponent(element.value));
                formBody.append('&');
            }
        }

        if (this._additionalInput) {
            formBody.append(this._additionalInput);
            this._additionalInput =3D null;
        }

        var request =3D new Sys.Net.WebRequest();
        request.set_url(form.action);
        request.get_headers()['X-MicrosoftAjax'] =3D 'Delta=3Dtrue';
        request.get_headers()['Cache-Control'] =3D 'no-cache';
        request.set_timeout(this._asyncPostBackTimeout);
        request.add_completed(Function.createDelegate(this, =
this._onFormSubmitCompleted));
        request.set_body(formBody.toString());

        var handler =3D =
this._get_eventHandlerList().getHandler("initializeRequest");
        if (handler) {
            var eventArgs =3D new =
Sys.WebForms.InitializeRequestEventArgs(request, =
this._postBackSettings.sourceElement);
            handler(this, eventArgs);
            continueSubmit =3D !eventArgs.get_cancel();
        }

        if (!continueSubmit) {
            if (evt) {
                evt.preventDefault();
            }
            return;
        }

                this._scrollPosition =3D this._getScrollPosition();


                                this.abortPostBack();

        handler =3D =
this._get_eventHandlerList().getHandler("beginRequest");
        if (handler) {
            var eventArgs =3D new =
Sys.WebForms.BeginRequestEventArgs(request, =
this._postBackSettings.sourceElement);
            handler(this, eventArgs);
        }

        this._request =3D request;
        request.invoke();

                if (evt) {
            evt.preventDefault();
        }
    }

    function =
Sys$WebForms$PageRequestManager$_onFormSubmitCompleted(sender, =
eventArgs) {
        this._processingRequest =3D true;

        var delimitByLengthDelimiter =3D '|';
       =20
        if (sender.get_timedOut()) {
            =
this._endPostBack(this._createPageRequestManagerTimeoutError(), sender);
            return;
        }

        if (sender.get_aborted()) {
            this._endPostBack(null, sender);
            return;
        }

                if (!this._request || sender.get_webRequest() !=3D=3D =
this._request) {
            return;
        }

        var errorMessage;
        var delta =3D [];

                if (sender.get_statusCode() !=3D=3D 200) {
            =
this._endPostBack(this._createPageRequestManagerServerError(sender.get_st=
atusCode()), sender);
            return;
        }

                        var reply =3D sender.get_responseData();
        var delimiterIndex, len, type, id, content;
        var replyIndex =3D 0;
        var parserErrorDetails =3D null;

        while (replyIndex < reply.length) {
                        delimiterIndex =3D =
reply.indexOf(delimitByLengthDelimiter, replyIndex);
            if (delimiterIndex =3D=3D=3D -1) {
                parserErrorDetails =3D this._findText(reply, =
replyIndex);
                break;
            }
            len =3D parseInt(reply.substring(replyIndex, =
delimiterIndex), 10);
            if ((len % 1) !=3D=3D 0) {
                parserErrorDetails =3D this._findText(reply, =
replyIndex);
                break;
            }
            replyIndex =3D delimiterIndex + 1;

                        delimiterIndex =3D =
reply.indexOf(delimitByLengthDelimiter, replyIndex);
            if (delimiterIndex =3D=3D=3D -1) {
                parserErrorDetails =3D this._findText(reply, =
replyIndex);
                break;
            }
            type =3D reply.substring(replyIndex, delimiterIndex);
            replyIndex =3D delimiterIndex + 1;

                        delimiterIndex =3D =
reply.indexOf(delimitByLengthDelimiter, replyIndex);
            if (delimiterIndex =3D=3D=3D -1) {
                parserErrorDetails =3D this._findText(reply, =
replyIndex);
                break;
            }
            id =3D reply.substring(replyIndex, delimiterIndex);
            replyIndex =3D delimiterIndex + 1;

                        if ((replyIndex + len) >=3D reply.length) {
                parserErrorDetails =3D this._findText(reply, =
reply.length);
                break;
            }
            content =3D this._decodeString(reply.substr(replyIndex, =
len));
            replyIndex +=3D len;

                        if (reply.charAt(replyIndex) !=3D=3D =
delimitByLengthDelimiter) {
                parserErrorDetails =3D 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)), sender);
            return;
        }


        var updatePanelNodes =3D [];
        var hiddenFieldNodes =3D [];
        var arrayDeclarationNodes =3D [];
        var scriptBlockNodes =3D [];
        var expandoNodes =3D [];
        var onSubmitNodes =3D [];
        var dataItemNodes =3D [];
        var dataItemJsonNodes =3D [];
        var scriptDisposeNodes =3D [];
        var asyncPostBackControlIDsNode, postBackControlIDsNode,
            updatePanelIDsNode, asyncPostBackTimeoutNode,
            childUpdatePanelIDsNode, panelsToRefreshNode, =
formActionNode;

                for (var i =3D 0; i < delta.length; i++) {
            var deltaNode =3D delta[i];
            switch (deltaNode.type) {
                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 "expando":
                    Array.add(expandoNodes, deltaNode);
                    break;
                case "onSubmit":
                    Array.add(onSubmitNodes, deltaNode);
                    break;
                case "asyncPostBackControlIDs":
                    asyncPostBackControlIDsNode =3D deltaNode;
                    break;
                case "postBackControlIDs":
                    postBackControlIDsNode =3D deltaNode;
                    break;
                case "updatePanelIDs":
                    updatePanelIDsNode =3D deltaNode;
                    break;
                case "asyncPostBackTimeout":
                    asyncPostBackTimeoutNode =3D deltaNode;
                    break;
                case "childUpdatePanelIDs":
                    childUpdatePanelIDsNode =3D deltaNode;
                    break;
                case "panelsToRefreshIDs":
                    panelsToRefreshNode =3D deltaNode;
                    break;
                case "formAction":
                    formActionNode =3D 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":
                    window.location.href =3D deltaNode.content;
                    return;
                case "error":
                                        =
this._endPostBack(this._createPageRequestManagerServerError(Number.parseI=
nvariant(deltaNode.id), deltaNode.content), sender);
                    return;
                case "pageTitle":
                    document.title =3D deltaNode.content;
                    break;
                case "focus":
                    this._controlIDToFocus =3D deltaNode.content;
                    break;
                default:
                                        =
this._endPostBack(this._createPageRequestManagerParserError(String.format=
(Sys.WebForms.Res.PRM_UnknownToken, deltaNode.type)), sender);
                    return;
            }
        }

        var i;

                if (asyncPostBackControlIDsNode && =
postBackControlIDsNode &&
            updatePanelIDsNode && panelsToRefreshNode &&
            asyncPostBackTimeoutNode && childUpdatePanelIDsNode) {

            this._oldUpdatePanelIDs =3D this._updatePanelIDs;
            var childUpdatePanelIDsString =3D =
childUpdatePanelIDsNode.content;
            this._childUpdatePanelIDs =3D =
childUpdatePanelIDsString.length ? childUpdatePanelIDsString.split(',') =
: [];

            var asyncPostBackControlIDsArray =3D =
this._splitNodeIntoArray(asyncPostBackControlIDsNode);
            var postBackControlIDsArray =3D =
this._splitNodeIntoArray(postBackControlIDsNode);
            var updatePanelIDsArray =3D =
this._splitNodeIntoArray(updatePanelIDsNode);
            this._panelsToRefreshIDs =3D =
this._splitNodeIntoArray(panelsToRefreshNode);

                                                for (i =3D 0; i < =
this._panelsToRefreshIDs.length; i++) {
                var panelClientID =3D =
this._uniqueIDToClientID(this._panelsToRefreshIDs[i]);
                if (!document.getElementById(panelClientID)) {
                    =
this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.P=
RM_MissingPanel, panelClientID)), sender);
                    return;
                }
            }

            var asyncPostBackTimeout =3D =
asyncPostBackTimeoutNode.content;
            this._updateControls(updatePanelIDsArray, =
asyncPostBackControlIDsArray, postBackControlIDsArray, =
asyncPostBackTimeout);
        }

                this._dataItems =3D {};
        for (i =3D 0; i < dataItemNodes.length; i++) {
            var dataItemNode =3D dataItemNodes[i];
            this._dataItems[dataItemNode.id] =3D dataItemNode.content;
        }
        for (i =3D 0; i < dataItemJsonNodes.length; i++) {
            var dataItemJsonNode =3D dataItemJsonNodes[i];
            this._dataItems[dataItemJsonNode.id] =3D =
eval(dataItemJsonNode.content);
        }


        var handler =3D =
this._get_eventHandlerList().getHandler("pageLoading");
        if (handler) {
            handler(this, this._getPageLoadingEventArgs());
        }


                if (formActionNode) {
            this._form.action =3D formActionNode.content;
                                                =
this._form._initialAction =3D this._form.action;
        }

                                for (i =3D 0; i < =
updatePanelNodes.length; i++) {
            var deltaUpdatePanel =3D updatePanelNodes[i];

            var deltaPanelID =3D deltaUpdatePanel.id;
            var deltaPanelRendering =3D deltaUpdatePanel.content;

            var updatePanelElement =3D =
document.getElementById(deltaPanelID);

            if (!updatePanelElement) {
                =
this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.P=
RM_MissingPanel, deltaPanelID)), sender);
                return;
            }

            this._updatePanel(updatePanelElement, deltaPanelRendering);
        }

                                for (i =3D 0; i < =
scriptDisposeNodes.length; i++) {
            var disposePanelId =3D scriptDisposeNodes[i].id;
            var disposeScript =3D scriptDisposeNodes[i].content;
            this._registerDisposeScript(disposePanelId, disposeScript);
        }

                for (i =3D 0; i < hiddenFieldNodes.length; i++) {
            var id =3D hiddenFieldNodes[i].id;
            var value =3D hiddenFieldNodes[i].content;

            var hiddenFieldElement =3D document.getElementById(id);
            if (!hiddenFieldElement) {
                                hiddenFieldElement =3D =
document.createElement('input');
                hiddenFieldElement.id =3D id;
                hiddenFieldElement.name =3D id;
                hiddenFieldElement.type =3D 'hidden';
                this._form.appendChild(hiddenFieldElement);
            }
            hiddenFieldElement.value =3D value;
        }

                var arrayScript =3D '';
        for (i =3D 0; i < arrayDeclarationNodes.length; i++) {
            arrayScript +=3D =
"Sys.WebForms.PageRequestManager._addArrayElement('" + =
arrayDeclarationNodes[i].id + "', " + arrayDeclarationNodes[i].content + =
");\r\n";
        }

                var expandoScript =3D '';
        for (i =3D 0; i < expandoNodes.length; i++) {
            var propertyReference =3D expandoNodes[i].id;
            var propertyValue =3D expandoNodes[i].content;
            expandoScript +=3D propertyReference + " =3D " + =
propertyValue + "\r\n";
        }

                        Sys._ScriptLoader.readLoadedScripts();

                                Sys.Application.beginCreateComponents();

        var scriptLoader =3D Sys._ScriptLoader.getInstance();

                                        if (arrayScript.length) {
            scriptLoader.queueScriptBlock(arrayScript);
        }
        if (expandoScript.length) {
            scriptLoader.queueScriptBlock(expandoScript);
        }

        for (i =3D 0; i < scriptBlockNodes.length; i++) {
            var scriptBlockType =3D scriptBlockNodes[i].id;
            switch (scriptBlockType) {
                case "ScriptContentNoTags":
                                        =
scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);
                    break;
                case "ScriptContentWithTags":
                                        var scriptTagAttributes;
                    eval("scriptTagAttributes =3D " + =
scriptBlockNodes[i].content);

                                        if (scriptTagAttributes.src && =
Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src)) {
                        continue;
                    }

                    =
scriptLoader.queueCustomScriptTag(scriptTagAttributes);
                    break;
                case "ScriptPath":
                                        if =
(Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content)) {
                        continue;
                    }

                                        =
scriptLoader.queueScriptReference(scriptBlockNodes[i].content);
                    break;
            }
        }

                        var onSubmitStatementScript =3D '';
        for (var i =3D 0; i < onSubmitNodes.length; i++) {
            if (i =3D=3D=3D 0) {
                onSubmitStatementScript =3D =
'Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStateme=
nts, function() {\r\n';
            }

            onSubmitStatementScript +=3D onSubmitNodes[i].content + =
"\r\n";
        }
        if (onSubmitStatementScript.length) {
            onSubmitStatementScript +=3D "\r\nreturn true;\r\n});\r\n";
            scriptLoader.queueScriptBlock(onSubmitStatementScript);
        }

                this._response =3D sender;

                        scriptLoader.loadScripts(0, =
Function.createDelegate(this, this._scriptsLoadComplete), null, null);

                    }

    function Sys$WebForms$PageRequestManager$_onWindowUnload(evt) {
        this.dispose();
    }

    function Sys$WebForms$PageRequestManager$_pageLoaded(initialLoad) {
        var handler =3D =
this._get_eventHandlerList().getHandler("pageLoaded");
        if (handler) {
            handler(this, this._getPageLoadedEventArgs(initialLoad));
        }
        if (!initialLoad) {
                                    Sys.Application.raiseLoad();
        }
    }

    function Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad(evt) =
{
        this._pageLoaded(true);
    }

    function =
Sys$WebForms$PageRequestManager$_registerDisposeScript(panelID, =
disposeScript) {
        if (!this._scriptDisposes[panelID]) {
            this._scriptDisposes[panelID] =3D [disposeScript];
        }
        else {
            Array.add(this._scriptDisposes[panelID], disposeScript);
        }
    }

    function Sys$WebForms$PageRequestManager$_scriptsLoadComplete() {
                       =20
                                                if =
(window.__theFormPostData) {
            window.__theFormPostData =3D "";
        }
        if (window.__theFormPostCollection) {
            window.__theFormPostCollection =3D [];
        }
        if (window.WebForm_InitCallback) {
            window.WebForm_InitCallback();
        }

                if (this._scrollPosition) {
                        if (window.scrollTo) {
                window.scrollTo(this._scrollPosition.x, =
this._scrollPosition.y);
            }
            this._scrollPosition =3D null;
        }

        Sys.Application.endCreateComponents();

                this._pageLoaded(false);

        this._endPostBack(null, this._response);
        this._response =3D null;

                if (this._controlIDToFocus) {
            var focusTarget;
            var oldContentEditableSetting;
            if (Sys.Browser.agent =3D=3D=3D =
Sys.Browser.InternetExplorer) {
                                                                         =
       var targetControl =3D $get(this._controlIDToFocus);

                var focusTarget =3D targetControl;
                                if (targetControl && =
(!WebForm_CanFocus(targetControl))) {
                    focusTarget =3D =
WebForm_FindFirstFocusableChild(targetControl);
                }
                                                if (focusTarget && =
(typeof(focusTarget.contentEditable) !=3D=3D "undefined")) {
                    oldContentEditableSetting =3D =
focusTarget.contentEditable;
                    focusTarget.contentEditable =3D false;
                }
                else {
                    focusTarget =3D null;
                }
            }
            WebForm_AutoFocus(this._controlIDToFocus);
            if (focusTarget) {
                                focusTarget.contentEditable =3D =
oldContentEditableSetting;
            }
            this._controlIDToFocus =3D null;
        }
    }

    function Sys$WebForms$PageRequestManager$_splitNodeIntoArray(node) {
        var str =3D node.content;
        var arr =3D str.length ? str.split(',') : [];
        return arr;
    }

    function =
Sys$WebForms$PageRequestManager$_uniqueIDToClientID(uniqueID) {
                return uniqueID.replace(/\$/g, '_');
    }

    function =
Sys$WebForms$PageRequestManager$_updateControls(updatePanelIDs, =
asyncPostBackControlIDs, postBackControlIDs, asyncPostBackTimeout) {
        if (updatePanelIDs) {
                                                this._updatePanelIDs =3D =
new Array(updatePanelIDs.length);
            this._updatePanelClientIDs =3D new =
Array(updatePanelIDs.length);
            this._updatePanelHasChildrenAsTriggers =3D new =
Array(updatePanelIDs.length);
            for (var i =3D 0; i < updatePanelIDs.length; i++) {
                var realPanelID =3D updatePanelIDs[i].substr(1);
                var childrenAsTriggers =3D (updatePanelIDs[i].charAt(0) =
=3D=3D=3D 't');

                                =
this._updatePanelHasChildrenAsTriggers[i] =3D childrenAsTriggers;
                this._updatePanelIDs[i] =3D realPanelID;
                this._updatePanelClientIDs[i] =3D =
this._uniqueIDToClientID(realPanelID);
            }
            this._asyncPostBackTimeout =3D asyncPostBackTimeout * 1000;
        }
        else {
            this._updatePanelIDs =3D [];
            this._updatePanelClientIDs =3D [];
            this._updatePanelHasChildrenAsTriggers =3D [];
            this._asyncPostBackTimeout =3D 0;
        }

        this._asyncPostBackControlIDs =3D [];
        this._asyncPostBackControlClientIDs =3D [];
        this._convertToClientIDs(asyncPostBackControlIDs, =
this._asyncPostBackControlIDs, this._asyncPostBackControlClientIDs);

        this._postBackControlIDs =3D [];
        this._postBackControlClientIDs =3D [];
        this._convertToClientIDs(postBackControlIDs, =
this._postBackControlIDs, this._postBackControlClientIDs);
    }

    function =
Sys$WebForms$PageRequestManager$_updatePanel(updatePanelElement, =
rendering) {

        for (var updatePanelID in this._scriptDisposes) {
            if (this._elementContains(updatePanelElement, =
document.getElementById(updatePanelID))) {
                                var disposeScripts =3D =
this._scriptDisposes[updatePanelID];
                for (var i =3D 0; i < disposeScripts.length; i++) {
                    eval(disposeScripts[i]);
                }

                                delete =
this._scriptDisposes[updatePanelID];
            }
        }

        this._destroyTree(updatePanelElement);

                updatePanelElement.innerHTML =3D rendering;
    }

    function Sys$WebForms$PageRequestManager$_validPosition(position) {
        return (typeof(position) !=3D=3D "undefined") && (position =
!=3D=3D null) && (position !=3D=3D 0);
    }
Sys.WebForms.PageRequestManager.prototype =3D {

    _get_eventHandlerList: =
Sys$WebForms$PageRequestManager$_get_eventHandlerList,

    get_isInAsyncPostBack: =
Sys$WebForms$PageRequestManager$get_isInAsyncPostBack,

        add_beginRequest: =
Sys$WebForms$PageRequestManager$add_beginRequest,
    remove_beginRequest: =
Sys$WebForms$PageRequestManager$remove_beginRequest,

    add_endRequest: Sys$WebForms$PageRequestManager$add_endRequest,
    remove_endRequest: =
Sys$WebForms$PageRequestManager$remove_endRequest,

    add_initializeRequest: =
Sys$WebForms$PageRequestManager$add_initializeRequest,
    remove_initializeRequest: =
Sys$WebForms$PageRequestManager$remove_initializeRequest,

    add_pageLoaded: Sys$WebForms$PageRequestManager$add_pageLoaded,
    remove_pageLoaded: =
Sys$WebForms$PageRequestManager$remove_pageLoaded,

    add_pageLoading: Sys$WebForms$PageRequestManager$add_pageLoading,
    remove_pageLoading: =
Sys$WebForms$PageRequestManager$remove_pageLoading,

    abortPostBack: Sys$WebForms$PageRequestManager$abortPostBack,

    _createPageRequestManagerTimeoutError: =
Sys$WebForms$PageRequestManager$_createPageRequestManagerTimeoutError,

    _createPageRequestManagerServerError: =
Sys$WebForms$PageRequestManager$_createPageRequestManagerServerError,

    _createPageRequestManagerParserError: =
Sys$WebForms$PageRequestManager$_createPageRequestManagerParserError,

    _createPostBackSettings: =
Sys$WebForms$PageRequestManager$_createPostBackSettings,

    _convertToClientIDs: =
Sys$WebForms$PageRequestManager$_convertToClientIDs,

    _decodeString: Sys$WebForms$PageRequestManager$_decodeString,

    _destroyTree: Sys$WebForms$PageRequestManager$_destroyTree,

    dispose: Sys$WebForms$PageRequestManager$dispose,

        _doPostBack: Sys$WebForms$PageRequestManager$_doPostBack,

    _elementContains: Sys$WebForms$PageRequestManager$_elementContains,

    _endPostBack: Sys$WebForms$PageRequestManager$_endPostBack,

            _findNearestElement: =
Sys$WebForms$PageRequestManager$_findNearestElement,

    _findText: Sys$WebForms$PageRequestManager$_findText,

    _getPageLoadedEventArgs: =
Sys$WebForms$PageRequestManager$_getPageLoadedEventArgs,

    _getPageLoadingEventArgs: =
Sys$WebForms$PageRequestManager$_getPageLoadingEventArgs,

    _getPostBackSettings: =
Sys$WebForms$PageRequestManager$_getPostBackSettings,

    _getScrollPosition: =
Sys$WebForms$PageRequestManager$_getScrollPosition,

    _initializeInternal: =
Sys$WebForms$PageRequestManager$_initializeInternal,

    _matchesParentIDInList: =
Sys$WebForms$PageRequestManager$_matchesParentIDInList,

    _onFormElementClick: =
Sys$WebForms$PageRequestManager$_onFormElementClick,

    _onFormSubmit: Sys$WebForms$PageRequestManager$_onFormSubmit,

    _onFormSubmitCompleted: =
Sys$WebForms$PageRequestManager$_onFormSubmitCompleted,

    _onWindowUnload: Sys$WebForms$PageRequestManager$_onWindowUnload,

    _pageLoaded: Sys$WebForms$PageRequestManager$_pageLoaded,

    _pageLoadedInitialLoad: =
Sys$WebForms$PageRequestManager$_pageLoadedInitialLoad,

    _registerDisposeScript: =
Sys$WebForms$PageRequestManager$_registerDisposeScript,

    _scriptsLoadComplete: =
Sys$WebForms$PageRequestManager$_scriptsLoadComplete,

    _splitNodeIntoArray: =
Sys$WebForms$PageRequestManager$_splitNodeIntoArray,

    _uniqueIDToClientID: =
Sys$WebForms$PageRequestManager$_uniqueIDToClientID,

    _updateControls: Sys$WebForms$PageRequestManager$_updateControls,

    _updatePanel: Sys$WebForms$PageRequestManager$_updatePanel,

    _validPosition: Sys$WebForms$PageRequestManager$_validPosition
}

Sys.WebForms.PageRequestManager.getInstance =3D function =
Sys$WebForms$PageRequestManager$getInstance() {
    /// <returns type=3D"Sys.WebForms.PageRequestManager"></returns>
    if (arguments.length !=3D=3D 0) throw Error.parameterCount();
    return Sys.WebForms.PageRequestManager._instance || null;
}

Sys.WebForms.PageRequestManager._addArrayElement =3D function =
Sys$WebForms$PageRequestManager$_addArrayElement(arrayName, arrayValue) =
{
    if (typeof(window[arrayName]) =3D=3D=3D "undefined") {
                window[arrayName] =3D [ arrayValue ];
    }
    else {
                Array.add(window[arrayName], arrayValue);
    }
}

Sys.WebForms.PageRequestManager._initialize =3D function =
Sys$WebForms$PageRequestManager$_initialize(scriptManagerID, =
formElement) {
    if (Sys.WebForms.PageRequestManager.getInstance()) {
        throw =
Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);
    }
    Sys.WebForms.PageRequestManager._instance =3D new =
Sys.WebForms.PageRequestManager();
    =
Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(scriptM=
anagerID, formElement);
}

Sys.WebForms.PageRequestManager.registerClass('Sys.WebForms.PageRequestMa=
nager');
Sys.UI._UpdateProgress =3D function Sys$UI$_UpdateProgress(element) {
    Sys.UI._UpdateProgress.initializeBase(this,[element]);
    this._displayAfter =3D 500;
    this._dynamicLayout =3D true;
    this._associatedUpdatePanelId =3D null;
    this._beginRequestHandlerDelegate =3D null;
    this._startDelegate =3D null;
    this._endRequestHandlerDelegate =3D null;
    this._pageRequestManager =3D null;
    this._timerCookie =3D null;
}

    function Sys$UI$_UpdateProgress$get_displayAfter() {
        /// <value type=3D"Number"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._displayAfter;
    }
    function Sys$UI$_UpdateProgress$set_displayAfter(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Number}]);
        if (e) throw e;

        this._displayAfter =3D value;
    }
    function Sys$UI$_UpdateProgress$get_dynamicLayout() {
        /// <value type=3D"Boolean"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._dynamicLayout;
    }
    function Sys$UI$_UpdateProgress$set_dynamicLayout(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: Boolean}]);
        if (e) throw e;

        this._dynamicLayout =3D value;
    }
    function Sys$UI$_UpdateProgress$get_associatedUpdatePanelId() {
        /// <value type=3D"String" mayBeNull=3D"true"></value>
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        return this._associatedUpdatePanelId;
    }
    function Sys$UI$_UpdateProgress$set_associatedUpdatePanelId(value) {
        var e =3D Function._validateParams(arguments, [{name: "value", =
type: String, mayBeNull: true}]);
        if (e) throw e;

        this._associatedUpdatePanelId =3D value;
    }
    function Sys$UI$_UpdateProgress$_handleBeginRequest(sender, arg) {
        var curElem =3D arg.get_postBackElement();
        var showProgress =3D !this._associatedUpdatePanelId;=20
        while (!showProgress && curElem) {
            if (curElem.id && this._associatedUpdatePanelId =3D=3D=3D =
curElem.id) {
                showProgress =3D true;=20
            }
            curElem =3D curElem.parentNode;=20
        }=20
        if (showProgress) {
            this._timerCookie =3D window.setTimeout(this._startDelegate, =
this._displayAfter);
        }
    }
    function Sys$UI$_UpdateProgress$_startRequest() {
        if (this._pageRequestManager.get_isInAsyncPostBack()) {
            if (this._dynamicLayout) this.get_element().style.display =
=3D 'block';
            else this.get_element().style.visibility =3D 'visible';
        }
        this._timerCookie =3D null;
    }
    function Sys$UI$_UpdateProgress$_handleEndRequest(sender, arg) {
        if (this._dynamicLayout) this.get_element().style.display =3D =
'none';
        else this.get_element().style.visibility =3D 'hidden';
        if (this._timerCookie) {
            window.clearTimeout(this._timerCookie);
            this._timerCookie =3D null;
        }
    }
    function Sys$UI$_UpdateProgress$dispose() {
       if (this._pageRequestManager !=3D=3D null) {
           =
this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDel=
egate);
           =
this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegat=
e);
       }
       Sys.UI._UpdateProgress.callBaseMethod(this,"dispose");
    }
    function Sys$UI$_UpdateProgress$initialize() {
        Sys.UI._UpdateProgress.callBaseMethod(this, 'initialize');
    	this._beginRequestHandlerDelegate =3D Function.createDelegate(this, =
this._handleBeginRequest);
    	this._endRequestHandlerDelegate =3D Function.createDelegate(this, =
this._handleEndRequest);
    	this._startDelegate =3D Function.createDelegate(this, =
this._startRequest);
    	if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
           this._pageRequestManager =3D =
Sys.WebForms.PageRequestManager.getInstance();
    	}
    	if (this._pageRequestManager !=3D=3D null ) {
               	    =
this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelega=
te);
    	    =
this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);=

    	}
    }
Sys.UI._UpdateProgress.prototype =3D {
    get_displayAfter: Sys$UI$_UpdateProgress$get_displayAfter,
    set_displayAfter: Sys$UI$_UpdateProgress$set_displayAfter,
    get_dynamicLayout: Sys$UI$_UpdateProgress$get_dynamicLayout,
    set_dynamicLayout: Sys$UI$_UpdateProgress$set_dynamicLayout,
    get_associatedUpdatePanelId: =
Sys$UI$_UpdateProgress$get_associatedUpdatePanelId,
    set_associatedUpdatePanelId: =
Sys$UI$_UpdateProgress$set_associatedUpdatePanelId,
    _handleBeginRequest: Sys$UI$_UpdateProgress$_handleBeginRequest,
    _startRequest: Sys$UI$_UpdateProgress$_startRequest,
    _handleEndRequest: Sys$UI$_UpdateProgress$_handleEndRequest,
    dispose: Sys$UI$_UpdateProgress$dispose,
    initialize: Sys$UI$_UpdateProgress$initialize
}
Sys.UI._UpdateProgress.registerClass('Sys.UI._UpdateProgress', =
Sys.UI.Control);

Type.registerNamespace('Sys.WebForms');
Sys.WebForms.Res=3D{
"PRM_MissingPanel":"Could not find UpdatePanel with ID \u0027{0}\u0027. =
If it is being updated dynamically then it must be inside another =
UpdatePanel.",
"PRM_ServerError":"An unknown error occurred while processing the =
request on the server. The status code returned from the server was: =
{0}",
"PRM_ParserError":"The message received from the server could not be =
parsed.",
"PRM_TimeoutError":"The server request timed out.",
"PRM_CannotRegisterTwice":"The PageRequestManager cannot be initialized =
more than once.",
"PRM_UnknownToken":"Unknown token: \u0027{0}\u0027.",
"PRM_MissingPanel":"Could not find UpdatePanel with ID \u0027{0}\u0027. =
If it is being updated dynamically then it must be inside another =
UpdatePanel.",
"PRM_ServerError":"An unknown error occurred while processing the =
request on the server. The status code returned from the server was: =
{0}",
"PRM_ParserError":"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.\r\nDetails: {0}",
"PRM_TimeoutError":"The server request timed out.",
"PRM_ParserErrorDetails":"Error parsing near \u0027{0}\u0027.",
"PRM_CannotRegisterTwice":"The PageRequestManager cannot be initialized =
more than once."
};

if(typeof(Sys)!=3D=3D'undefined')Sys.Application.notifyScriptLoaded();
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/omniture/s_code.js

/* SiteCatalyst code version: H.17.=0A=
Copyright 1997-2008 Omniture, Inc. More info available at=0A=
http://www.omniture.com */=0A=
/************************ ADDITIONAL FEATURES ************************=0A=
     Plugins=0A=
*/=0A=
=0A=
var s_account=3D"torontodurhamregion"=0A=
var s=3Ds_gi(s_account)=0A=
/************************** CONFIG SECTION **************************/=0A=
/* You may add or alter any code config here. */=0A=
/* Link Tracking Config */=0A=
s.trackDownloadLinks=3Dtrue=0A=
s.trackExternalLinks=3Dtrue=0A=
s.trackInlineStats=3Dtrue=0A=
s.linkDownloadFileTypes=3D"exe,zip,wav,mp3,mov,mpg,avi,wmv,pdf,doc,docx,x=
ls,xlsx,ppt,pptx"=0A=
s.linkInternalFilters=3D"javascript:,northumberlandnews,freedateconnectio=
n,eventsdurhamregion,milestonesdurhamregion,durhamregion,newsdurhamregion=
,mediamash,photosdurhamregion,videodurhamregion,411durhamregion,menusdurh=
amregion,movienow,marketplacedurhamregion,featuresdurhamregion,gtaathlete=
s,eventnow,communitynotices,durhamnow,metrolandeast,beautifulbeginningsbr=
idal,bodyandcosmetics,contestdurhamregion,durhamtradeandcommerce,eastofth=
ecity,passporttosavings,readerschoicedurhamregion,searchdurhamregion"=0A=
s.linkLeaveQueryString=3Dfalse=0A=
s.linkTrackVars=3D"None"=0A=
s.linkTrackEvents=3D"None"=0A=
/* Plugin Config */=0A=
s.usePlugins=3Dtrue=0A=
function s_doPlugins(s) {=0A=
	/* Add calls to plugins here */=0A=
}=0A=
s.doPlugins=3Ds_doPlugins=0A=
/************************** PLUGINS SECTION *************************/=0A=
/* You may insert any plugins you wish to use here.                 */=0A=
=0A=
=0A=
/* Configure Modules and Plugins */=0A=
=0A=
s.loadModule("Media")=0A=
s.Media.autoTrack=3Dfalse=0A=
s.Media.trackVars=3D"None"=0A=
s.Media.trackEvents=3D"None"=0A=
=0A=
/* WARNING: Changing any of the below variables will cause drastic=0A=
changes to how your visitor data is collected.  Changes should only be=0A=
made when instructed to do so by your account manager.*/=0A=
s.visitorNamespace=3D"torstardigital"=0A=
s.dc=3D122=0A=
=0A=
=0A=
/****************************** MODULES *****************************/=0A=
/* Module: Media */=0A=
s.m_Media_c=3D"=3D's_media_'+m._in+'_~=3Dnew =
Function(~m.ae(mn,l,\"'+p+'\",~;`H~o.'+f~o.Get~=3Dfunction(~){var =
m=3Dthis~}^9 =
p');p=3Dtcf(o)~setTimeout(~x,x!=3D2?p:-1,o)}~=3DparseInt(~m.s.d.getElemen=
tsByTagName~ersion"=0A=
+"Info~'`z_c_il['+m._in+'],~'o','var =
e,p=3D~QuickTime~if(~}catch(e){p=3D~s.wd.addEventListener~m.s.rep(~=3Dnew=
 Object~layState~||^D~m.s.wd[f1]~Media~.name~Player =
'+~s.wd.attachEvent~'a','b',c~;o[f1]~tm.get"=0A=
+"Time()/1~m.s.isie~.current~,tm=3Dnew =
Date,~p<p2||p-p2>5)~m.e(n,1,o^F~m.close~i.lx~=3Dv+',n,~){this.e(n,~MovieN=
ame()~);o[f~i.lo~m.ol~o.controls~load',m.as~=3D=3D3)~script';x.~,t;try{t=3D=
~Version()~else~o.id~)"=0A=
+"{mn=3D~1;o[f7]=3D~Position~);m.~(x=3D=3D~)};m.~&&m.l~l[n])~var =
m=3Ds~!p){tcf~xc=3Dm.s.~Title()~();~7+'~)}};m.a~\"'+v+';~3,p,o);~5000~ret=
urn~i.lt~';c2=3D'~Change~n=3D=3D~',f~);i.~=3D=3D1)~{p=3D'~4+'=3Dn;~()/t;p=
~.'+n)}~~`z.m_"=0A=
+"i('`P'`uopen`6n,l,p,b`7,i`L`Ya=3D'',x;l`Bl)`3!l)l=3D1`3n&&p){`H!m.l)m.l=
`L;n=3D`Km.s.rep(`Kn,\"\\n\",''),\"\\r\",''),'--**--','')`3m.`y`b(n)`3b&&=
b.id)a=3Db.id;for (x in m.l)`Hm.l[x]`x[x].a=3D=3Da)`b(m.l[x].n^Fn"=0A=
+"=3Dn;i.l=3Dl;i.p=3Dp;i.a=3Da;i.t=3D0;i.s`B`V000);`c=3D0;^A=3D0;`h=3D0;i=
.e=3D'';m.l[n]=3Di}};`b`6n`e0,-1`wplay`6n,o`7,i;i=3D`am`1`Ei`3m.l){i=3Dm.=
l[\"'+`Ki.n,'\"','\\\\\"')+'\"]`3i){`H`c^Gm.e(i.n,3,-1^Fmt=3D`9i.m,^8)}}'=
^Fm(`w"=0A=
+"stop`6n,o`e2,o`we`6n,x,o`7,i=3Dn`x&&m.l[n]?m.l[n]:0`Yts`B`V000),d=3D'--=
**--'`3i){if `v3||(x!=3D`c&&(x!=3D2||`c^G)) =
{`Hx){`Ho<0&&^A>0){o=3D(ts-^A)+`h;o=3Do<i.l?o:i.l-1}o`Bo)`3`v2||x`l&&`h<o=
)i.t+=3Do-`h`3x!=3D3){i.e"=0A=
+"+=3D`v1?'S':'E')+o;`c=3Dx;}`p =
`H`c!=3D1)`alt=3Dts;`h=3Do;m.s.pe=3D'media';m.s.pev3=3Di.n+d+i.l+d+i.p+d+=
i.t+d+i.s+d+i.e+`v3?'E'+o:''`us.t(0,'`P^K`p{m.e(n,2,-1`ul[n]=3D0;m.s.fbr(=
'`P^K}}^9 i};m.ae`6n,l,p,x,o,b){`Hn&&"=0A=
+"p`7`3!m.l||!m.`ym.open(n,l,p,b`ue(n,x,o^5`6o,t`7,i=3D`q?`q:o`Q,n=3Do`Q,=
p=3D0,v,c,c1,c2,^1h,x,e,f1,f2`0oc^E3`0t^E4`0s^E5`0l^E6`0m^E7`0c',tcf,w`3!=
i){`H!m.c)m.c=3D0;i`0'+m.c;m.c++}`H!`q)`q=3Di`3!o`Q)o`Q=3Dn=3Di`3!`"=0A=
+"i)`i`L`3`i[i])^9;`i[i]=3Do`3!xc)^1b;tcf`1`F0;try{`Ho.v`D&&o`X`P&&`j)p=3D=
1`I0`8`3^0`1`F0`n`5`G`o`3t)p=3D2`I0`8`3^0`1`F0`n`5V`D()`3t)p=3D3`I0`8}}v=3D=
\"`z_c_il[\"+m._in+\"],o=3D`i['\"+i+\"']\"`3p^G^HWindows `P `R"=0A=
+"o.v`D;c1`dp,l,x=3D-1,cm,c,mn`3o){cm=3Do`X`P;c=3D`j`3cm&&c`rcm`Q?cm`Q:c.=
URL;l=3Dcm.duration;p=3Dc`X`t;n=3Do.p`M`3n){`H^D8)x=3D0`3n`lx=3D1`3^D1`N2=
`N4`N5`N6)x=3D2;}^B`Hx>=3D0)`2`A}';c=3Dc1+c2`3`W&&xc){x=3Dm.s.d.createEle=
ment"=0A=
+"('script');x.language=3D'j`mtype=3D'text/java`mhtmlFor=3Di;x.event=3D'P=
`M^C(NewState)';x.defer=3Dtrue;x.text=3Dc;xc.appendChild(x`g6]`1c1+'`Hn`l=
{x=3D3;'+c2+'}`9`46+',^8)'`g6]()}}`Hp=3D=3D2)^H`G `R(`5Is`GRegistered()"=0A=
+"?'Pro =
':'')+`5`G`o;f1=3Df2;c`dx,t,l,p,p2,mn`3o`r`5`f?`5`f:`5URL^3n=3D`5Rate^3t=3D=
`5TimeScale^3l=3D`5Duration^J=3D`5Time^J2=3D`45+'`3n!=3D`44+'||`Z{x=3D2`3=
n!=3D0)x=3D1;`p `Hp>=3Dl)x=3D0`3`Z`22,p2,o);`2`A`Hn>0&&`4^4>=3D10){`2"=0A=
+"^7`4^4=3D0}`4^4++;`4^I`45+'=3Dp;`9^6`42+'(0,0)\",500)}'`U`1`T`g4]=3D-`s=
0`U(0,0)}`Hp`l^HReal`R`5V`D^3f1=3Dn+'_OnP`M^C';c1`dx=3D-1,l,p,mn`3o`r`5^2=
?`5^2:`5Source^3n=3D`5P`M^3l=3D`5Length()/1000;p=3D`5`t()/1000`3n!=3D`4"=0A=
+"4+'){`Hn`lx=3D1`3^D0`N2`N4`N5)x=3D2`3^D0&&(p>=3Dl||p=3D=3D0))x=3D0`3x>=3D=
0)`2`A`H^D3&&(`4^4>=3D10||!`43+')){`2^7`4^4=3D0}`4^4++;`4^I^B`H`42+')`42+=
'(o,n)}'`3`O)o[f2]=3D`O;`O`1`T1+c2)`U`1`T1+'`9^6`41+'(0,0)\",`43+'?500:"=0A=
+"^8);'+c2`g4]=3D-1`3`W)o[f3]=3D`s0`U(0,0^5s`1'e',`El,n`3m.autoTrack&&`C)=
{l=3D`C(`W?\"OBJECT\":\"EMBED\")`3l)for(n=3D0;n<l.length;n++)m.a(`y;}')`3=
`S)`S('on`k);`p `H`J)`J('`k,false)";=0A=
s.m_i("Media");=0A=
=0A=
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/=0A=
var s_code=3D'',s_objectID;function s_gi(un,pg,ss){var =
c=3D"=3Dfun@6(~){`Ks=3D^S~$h ~.substring(~.indexOf(~;@t~';`Bt`t~=3Dnew =
Fun@6(~.toLowerCase()~s_c_il['+s^sn+']~};s.~`m@t~.length~.toUpperCase~=3D=
new Object~s"=0A=
+".wd~','~){@t~')q=3D'~.location~var =
~s.pt(~dynamicAccount~link~s.apv~=3D'+@y(~)@tx^m!Object$eObject.prototype=
$eObject.prototype[x])~);s.~Element~.getTime()~=3Dnew =
Array~ookieDomainPeriods~s.m_~referrer~.p"=0A=
+"rotocol~=3Dnew =
Date~BufferedRequests~}c$s(e){~visitor~;@X^js[k],255)}~=3D''~javaEnabled~=
conne@6^M~@0c_i~Name~:'')~onclick~}@t~else =
~ternalFilters~javascript~s.dl~@Os.b.addBehavior(\"# default# ~=3DparseF"=0A=
+"loat(~'+tm.get~=3D=3D'~cookie~s.rep(~s.^T~track~o@0oid~browser~.parent~=
window~colorDepth~String~while(~.host~.lastIndexOf('~s.sq~s.maxDelay~s.vl=
_g~r=3Ds.m(f)?s[f](~for(~s.un~s.eo~&&s.~parseInt(~t=3Ds.ot(o)"=0A=
+"~j=3D'1.~#4URL~lugins~dynamicVariablePrefix~document~Type~Sampling~s.rc=
[un]~Download~Event~');~this~tfs~resolution~s.c_r(~s.c_w(~s.eh~s.isie~s.v=
l_l~s.vl_t~Height~t,h){t=3Dt?t~tcf~isopera~ismac~escape(~"=0A=
+".href~screen.~s.fl(~Version~harCode~&&(~_'+~variableProvider~s.pe~)?'Y'=
:'N'~:'';h=3Dh?h~._i~e&&l$HSESSION'~f',~onload~name~home#4~objectID~}else=
{~.s_~s.rl[u~Width~s.ssl~o.type~Timeout(~ction~Lifetime"=0A=
+"~.mrq(\"'+un+'\")~sEnabled~;i++)~'){q=3D'~&&l$HNONE'){~ExternalLinks~ch=
arSet~onerror~lnk~currencyCode~.src~s=3Ds_gi(~etYear(~&&!~Opera~'s_~;try{=
~Math.~s.fsg~s.ns6~s.oun~InlineStats~Track~'0123456789~&&"=0A=
+"t~s[k]=3D~s.epa(~m._d~n=3Ds.oid(o)~,'sqs',q);~LeaveQuery~')>=3D~'=3D')~=
)+'/~){n=3D~\",''),~vo)~s.sampled~=3Ds.oh(o);~+(y<1900?~s.disable~ingServ=
er~n]=3D~true~sess~campaign~lif~if(~'http~,100)~s.co(~x in ~s.ape~f"=0A=
+"fset~s.c_d~s.br~'&pe~s.gg(~s.gv(~s[mn]~s.qav~,'vo~s.pl~=3D(apn~Listener=
~\"s_gs(\")~vo._t~b.attach~d.create~=3Ds.n.app~(''+~!=3D'~'||t~'+n~s()+'~=
){p=3D~():''~a):f(~+1))~a['!'+t]~){v=3Ds.n.~channel~un)~.target"=0A=
+"~o.value~g+\"_c\"]~\".tl(\")~etscape~(ns?ns:~s_')t=3Dt~k',s.bc~omePage~=
s.d.get~')<~||!~[b](e);~m[t+1](~return~mobile~height~events~random~code~'=
MSIE ~rs,~un,~,pev~floor(~atch~s.num(~[\"s_\"+~s.c_gd~s"=0A=
+".dc~s.pg~,'lt~.inner~transa~;s.gl(~\"m_\"+n~idt=3D'+~page~Group,~.fromC=
~sByTag~?'&~+';'~t&&~1);~){s.~[t]=3D~>=3D5)~[t](~=3Dl[n];~!a[t])~~s._c=3D=
@Nc';`F=3D^1`5!`F`hn){`F`hl`U;`F`hn=3D0;}s^sl=3D`F`hl;s^sn=3D`F`hn;s^sl"=0A=
+"[s^s@os;`F`hn++;s.m`0m){`2$Gm)`4'{$d0`Afl`0x,l){`2x?$Gx)`30,l):x`Aco`0o=
`H!o)`2o;`Kn`E,x;^B@xo)@tx`4'select$d0&&x`4'filter$d0)n[x]=3Do[x];`2n`Anu=
m`0x){x`e+x;^B`Kp=3D0;p<x`C;p++)@t(@V')`4x`3p,p$O<0)`20;`"=0A=
+"21`Arep=3Ds_r;@y`0x`1,h=3D@VABCDEF',i,c=3Ds.@E,n,l,e,y`e;c=3Dc?c`D$M`5x=
){x`e+x`5c`tAUTO'^m'').c^lAt){^Bi=3D0;i<x`C@A{c=3Dx`3i,i+#Bn=3Dx.c^lAt(i)=
`5n>127){l=3D0;e`e;^4n||l<4){e=3Dh`3n%16,n%16+1)+e;n=3D(n-n%16)/16;l++}y+=
"=0A=
+"=3D'%u'+e}`Bc`t+')y+=3D'%2B';`my+=3D^gc)}x=3Dy^zx=3Dx?`v^g''+x),'+`G%2B=
'):x`5x&&c^Eem=3D=3D1&&x`4'%u$d0&&x`4'%U$d0){i=3Dx`4'%^R^4i>=3D0){i++`5h`=
38)`4x`3i,i+1)`D())>=3D0)`2x`30,i)+'u00'+x`3i);i=3Dx`4'%',i)}}}}`2x`Aepa`=
0x"=0A=
+"`1;`2x?un^g`v''+x,'+`G =
')):x`Apt`0x,d,f,a`1,t=3Dx,z=3D0,y,r;^4t){y=3Dt`4d);y=3Dy<0?t`C:y;t=3Dt`3=
0,y);^At,$Nt,a)`5r)`2r;z+=3Dy+d`C;t=3Dx`3z,x`C);t=3Dz<x`C?t:''}`2''`Aisf`=
0t,a){`Kc=3Da`4':')`5c>=3D0)a=3Da`30,c)`5t`30,2)`t"=0A=
+"$Z`32);`2(t!`e@W=3D=3Da)`Afsf`0t,a`1`5`La,`G,'is^ut))@Q+=3D(@Q!`e?`G`j+=
t;`20`Afs`0x,f`1;@Q`e;`Lx,`G,'fs^uf);`2@Q`Ac_d`e;$vf`0t,a`1`5!$tt))`21;`2=
0`Ac_gd`0`1,d=3D`F`J^5^w,n=3Ds.fpC`V,p`5!n)n=3Ds.c`V`5d@L$0@gn?^F"=0A=
+"n):2;n=3Dn>2?n:2;p=3Dd^6.')`5p>=3D0){^4p>=3D0&&n>1$Ld^6.',p-#Bn--}$0=3D=
p>0&&`Ld,'.`Gc_gd^u0)?d`3p):d}}`2$0`Ac_r`0k`1;k=3D@y(k);`Kc=3D' =
'+s.d.`u,i=3Dc`4' =
'+k+@e,e=3Di<0?i:c`4';',i),v=3Di<0?'':@Yc`3i+2+k`C,e<0?c`C:e));`"=0A=
+"2v$H[[B]]'?v:''`Ac_w`0k,v,e`1,d=3D$v(),l=3Ds.`u@7,t;v`e+v;l=3Dl?$Gl)`D$=
M`5^t@Ct=3D(v!`e?^Fl?l:0):-60)`5t){e`Z;e.setTime(e`T+(t*1000))}`lk@Cs.d.`=
u=3Dk+'`Pv!`e?v:'[[B]]')+'; path=3D/;'+(^t?' expires=3D'+e.toGMT^3("=0A=
+")#9`j+(d?' =
domain=3D'+d#9`j;`2^Vk)=3D=3Dv}`20`Aeh`0o,e,r,f`1,b=3D's^ne+'^ns^sn,n=3D-=
1,l,i,x`5!^Xl)^Xl`U;l=3D^Xl;^Bi=3D0;i<l`C&&n<0;i++`Hl[i].o=3D=3Do&&l[i].e=
=3D=3De)n=3Di`ln<0@gi;l[n]`E}x#Gx.o=3Do;x.e=3De;f=3Dr?x.b:f`5r||f){x.b"=0A=
+"=3Dr?0:o[e];x.o[e]=3Df`lx.b){x.o[b]=3Dx.b;`2b}`20`Acet`0f,a,t,o,b`1,r,^=
d`5`O>=3D5^m!s.^e||`O>=3D7)){^d`7's`Gf`Ga`Gt`G`Ke,r@O^A$Na)`br=3Ds.m(t)?s=
#Fe):t(e)}`2r^Rr=3D^d(s,f,a,t)^z@ts.^f^Eu`4$n4@d0)r=3Ds.m(b)?s[b](a):"=0A=
+"b(a);else{^X(`F,'@F',0,o);^A$Na`Reh(`F,'@F',1)}}`2r`Ag^Tet`0e`1;`2`w`Ag=
^Toe`7'e`G`Ks=3D`9,c;^X(^1,\"@F\",1`Re^T=3D1;c=3Ds.t()`5c)s.d.write(c`Re^=
T=3D0;`2@p'`Rg^Tfb`0a){`2^1`Ag^Tf`0w`1,p=3Dw^0,l=3Dw`J;`w=3Dw`5p&&p"=0A=
+"`J!=3Dl&&p`J^5=3D=3Dl^5){`w=3Dp;`2s.g^Tf(`w)}`2`w`Ag^T`0`1`5!`w){`w=3D`=
F`5!s.e^T)`w=3Ds.cet('g^T^u`w,'g^Tet',s.g^Toe,'g^Tfb')}`2`w`Amrq`0u`1,l=3D=
@1],n,r;@1]=3D0`5l)^Bn=3D0;n<l`C;n++){r#Gs.mr(0,0,r.r,0,r.t,r.u)}`Abr`"=0A=
+"0id,rs`1`5@m`a$e^W@Nbr',rs))$1l=3Drs`Aflush`a`0`1;s.fbr(0)`Afbr`0id`1,b=
r=3D^V@Nbr')`5!br)br=3D$1l`5br`H!@m`a)^W@Nbr`G'`Rmr(0,0,br)}$1l=3D0`Amr`0=
@q,q,$oid,ta,u`1,dc=3D$w,t1=3Ds.`x@n,t2=3Ds.`x@nSecure,ns=3Ds.`c`ispa"=0A=
+"ce,un=3Du?u:$Ys.f$S,unc=3D`v$p'_`G-'),r`E,l,imn=3D@Ni^n($S,im,b,e`5!rs)=
{rs=3D@u'+(@3?'s'`j+'://'+(t1?(@3@W2?t2:t1):($Y(@3?'102':unc))+'.'+($w?$w=
:112)+'.2o7.net')@fb/ss/'+^C+'/'+(s.$i?'5.1':'1'@fH.17/'+@q+'"=0A=
+"?AQB=3D1&ndh=3D1'+(q?q`j+'&AQE=3D1'`5^Y@Ls.^f`H`O>5.5)rs=3D^j$o4095);`m=
rs=3D^j$o2047)`lid){$1(id,rs);$h}`ls.d.images&&`O>=3D3^m!s.^e||`O>=3D7)^m=
@R<0||`O>=3D6.1)`H!s.rc)s.rc`E`5!^O){^O=3D1`5!s.rl)s.rl`E;@1n]`U;set@5'"=0A=
+"@t^1`hl)^1.`9@8',750)^zl=3D@1n]`5l){r.t=3Dta;r.u=3Dun;r.r=3Drs;l[l`C]=3D=
r;`2''}imn+=3D'^n^O;^O++}im=3D`F[imn]`5!im)im=3D`F[im@onew =
Image;im@0l=3D0;im.^v`7'e`G^S@0l=3D1`5^1`hl)^1.`9@8^Rim@I=3Drs`5rs`4$2=3D=
@d0^m!ta||ta`t_se"=0A=
+"lf$Ia`t_top'||(`F.^w@Wa=3D=3D`F.^w))){b=3De`Z;^4!im@0l&&e`T-b`T<500)e`Z=
}`2''}`2'<im'+'g sr'+'c=3D\"'+rs+'\" width=3D1 $j=3D1 border=3D0 =
alt=3D\"\">'`Agg`0v`1`5!`F['s^nv])`F['s^nv]`e;`2`F['s^nv]`Aglf`0t,a`Ht`30=
,2)`"=0A=
+"t$Z`32);`Ks=3D^S,v=3D$3t)`5v)s#Dv`Agl`0v`1`5$x)`Lv,`G,'gl^u0)`Agv`0v`1;=
`2s['vpm^nv]?s['vpv^nv]:(s[v]?s[v]`j`Ahavf`0t,a`1,b=3Dt`30,4),x=3Dt`34),n=
=3D^Fx),k=3D'g^nt,m=3D'vpm^nt,q=3Dt,v=3Ds.`N@UVa$oe=3Ds.`N@U^Qs,mn;@X$4t)=
"=0A=
+"`5s.@G||^D||^p`H^p^Epe`30,4)$H@G_'){mn=3D^p`30,1)`D()+^p`31)`5$5){v=3D$=
5.`xVars;e=3D$5.`x^Qs}}v=3Dv?v+`G+^Z+`G+^Z2:''`5v@L`Lv,`G,'is^ut))s[k]`e`=
5t`t$k'&&e)@Xs.fs(s[k],e)}s[m]=3D0`5t`t^K`ID`6`cID`Ivid`6^I@Bg'"=0A=
+"`d`Bt`t`X@Br'`d`Bt`tvmk`Ivmt`6@E@Bce'`5s[k]&&s[k]`D()`tAUTO')@X'ISO8859=
-1';`Bs[k]^Eem=3D=3D2)@X'UTF-8'}`Bt`t`c`ispace`Ins`6c`V`Icdp`6`u@7`Icl`6^=
o`Ivvp`6@H`Icc`6$R`Ich`6#0@6ID`Ixact`6@r`Iv0`6^U`Is`6^2`I"=0A=
+"c`6`o^k`Ij`6`f`Iv`6`u@9`Ik`6`z@2`Ibw`6`z^b`Ibh`6`g`Ict`6^x`Ihp`6p^J`Ip'=
;`B$tx)`Hb`tprop`Ic$J;`Bb`teVar`Iv$J;`Bb`thier@Bh$J`d`ls[k]@W$H`N`i'@W$H`=
N^M')$6+=3D'&'+q+'`Ps[k]);`2''`Ahav`0`1;$6`e;`L^a,`G,'h"=0A=
+"av^u0);`2$6`Alnf`0^c`8^r`8:'';`Kte=3Dt`4@e`5t@We>0&&h`4t`3te$O>=3D0)`2t=
`30,te);`2''`Aln`0h`1,n=3Ds.`N`is`5n)`2`Ln,`G,'ln^uh);`2''`Altdf`0^c`8^r`=
8:'';`Kqi=3Dh`4'?^Rh=3Dqi>=3D0?h`30,qi):h`5#Ah`3h`C-(t`C$O`t.'+t)"=0A=
+"`21;`20`Altef`0^c`8^r`8:''`5#Ah`4t)>=3D0)`21;`20`Alt`0h`1,lft=3Ds.`N^PF=
ile^Ms,lef=3Ds.`NEx`n,@s=3Ds.`NIn`n;@s=3D@s?@s:`F`J^5^w;h=3Dh`8`5s.`x^PLi=
nks&&lf#A`Llft,`G$yd^uh))`2'd'`5s.`x@D&&h`30,1)$H# '^mlef||@s)^m!"=0A=
+"lef||`Llef,`G$ye^uh))^m!@s$e`L@s,`G$ye^uh)))`2'e';`2''`Alc`7'e`G`Ks=3D`=
9,b=3D^X(^S,\"`k\"`R@G=3D@w^S`Rt(`R@G=3D0`5b)`2^S$f`2@p'`Rbc`7'e`G`Ks=3D`=
9,f,^d`5s.d^Ed.all^Ed.all.cppXYctnr)$h;^D=3De@I`S?e@I`S:e$T;^d`7"=0A=
+"\"s\",\"`Ke@O@t^D^m^D.tag`i||^D^0`S||^D^0Node))s.t()`b}\");^d(s`Reo=3D0=
'`Roh`0o`1,l=3D`F`J,h=3Do^h?o^h:'',i,j,k,p;i=3Dh`4':^Rj=3Dh`4'?^Rk=3Dh`4'=
/')`5h^mi<0||(j>=3D0&&i>j)||(k>=3D0&&i>k))$Lo`Y&&o`Y`C>1?o`Y:(l`Y?l`Y"=0A=
+"`j;i=3Dl.path^w^6/^Rh=3D(p?p+'//'`j+(o^5?o^5:(l^5?l^5`j)+(h`30,1)$H/'?l=
.path^w`30,i<0?0:i@f'`j+h}`2h`Aot`0o){`Kt=3Do.tag`i;t=3Dt@W`D?t`D$M`5t`tS=
HAPE')t`e`5t`Ht`tINPUT'&&@4&&@4`D)t=3D@4`D();`B!#Ao^h)t=3D'A';}`2"=0A=
+"t`Aoid`0o`1,^G,p,c,n`e,x=3D0`5t@L`y$Lo`Y;c=3Do.`k`5o^h^mt`tA$I`tAREA')^=
m!c$ep||p`8`4'`o$d0))n@k`Bc@g`vs.rep(`vs.rep$Gc,\"\\r@h\"\\n@h\"\\t@h' =
`G^Rx=3D2}`B$U^mt`tINPUT$I`tSUBMIT')@g$U;x=3D3}`Bo@I@W`tIMAGE')"=0A=
+"n=3Do@I`5n){`y=3D^jn@v;`yt=3Dx}}`2`y`Arqf`0t,un`1,e=3Dt`4@e,u=3De>=3D0?=
`G+t`30,e)+`G:'';`2u&&u`4`G+un+`G)>=3D0?@Yt`3e$O:''`Arq`0un`1,c=3Dun`4`G)=
,v=3D^V@Nsq'),q`e`5c<0)`2`Lv,'&`Grq^u$S;`2`L$p`G,'rq',0)`Asqp`0t,a`1,e=3D=
"=0A=
+"t`4@e,q=3De<0?'':@Yt`3e+1)`Rsqq[q]`e`5e>=3D0)`Lt`30,e),`G@b`20`Asqs`0$p=
q`1;^7u[u@oq;`20`Asq`0q`1,k=3D@Nsq',v=3D^Vk),x,c=3D0;^7q`E;^7u`E;^7q[q]`e=
;`Lv,'&`Gsqp',0);`L^C,`G@bv`e;^B@x^7u`Q)^7q[^7u[x]]+=3D(^7q[^7u[x"=0A=
+"]]?`G`j+x;^B@x^7q`Q&&^7q[x]^mx=3D=3Dq||c<2)){v+=3D(v#8'`j+^7q[x]+'`Px);=
c++}`2^Wk,v,0)`Awdl`7'e`G`Ks=3D`9,r=3D@p,b=3D^X(`F,\"^v\"),i,o,oc`5b)r=3D=
^S$f^Bi=3D0;i<s.d.`Ns`C@A{o=3Ds.d.`Ns[i];oc=3Do.`k?\"\"+o.`k:\"\"`5(oc`4$=
"=0A=
+"B<0||oc`4\"@0oc(\")>=3D0)&&oc`4$W<0)^X(o,\"`k\",0,s.lc);}`2r^R`Fs`0`1`5=
`O>3^m!^Y$es.^f||`O#E`Hs.b^E$D^Q)s.$D^Q('`k',s.bc);`Bs.b^Eb.add^Q$A)s.b.a=
dd^Q$A('clic$a,false);`m^X(`F,'^v',0,`Fl)}`Avs`0x`1,v=3Ds"=0A=
+".`c^N,g=3Ds.`c^N#5k=3D@Nvsn^n^C+(g?'^ng`j,n=3D^Vk),e`Z,y=3De.g@K);e.s@K=
y+10@l1900:0))`5v){v*=3D100`5!n`H!^Wk,x,e))`20;n=3Dx`ln%10000>v)`20}`21`A=
dyasmf`0t,m`H#Am&&m`4t)>=3D0)`21;`20`Adyasf`0t,m`1,i=3Dt?t`4@e:-1,n,x"=0A=
+"`5i>=3D0&&m){`Kn=3Dt`30,i),x=3Dt`3i+1)`5`Lx,`G,'dyasm^um))`2n}`20`Auns`=
0`1,x=3Ds.`MSele@6,l=3Ds.`MList,m=3Ds.`MM$s,n,i;^C=3D^C`8`5x&&l`H!m)m=3D`=
F`J^5`5!m.toLowerCase)m`e+m;l=3Dl`8;m=3Dm`8;n=3D`Ll,';`Gdyas^um)`5n)^C=3D=
n}i=3D"=0A=
+"^C`4`G`Rfun=3Di<0?^C:^C`30,i)`Asa`0un`1;^C=3Dun`5!@S)@S=3Dun;`B(`G+@S+`=
G)`4$S<0)@S+=3D`G+un;^Cs()`Am_i`0n,a`1,m,f=3Dn`30,1),r,l,i`5!`Wl)`Wl`E`5!=
`Wnl)`Wnl`U;m=3D`Wl[n]`5!a&&m&&m._e@Lm^s)`Wa(n)`5!m){m`E,m._c=3D@Nm"=0A=
+"';m^sn=3D`F`hn;m^sl=3Ds^sl;m^sl[m^s@om;`F`hn++;m.s=3Ds;m._n=3Dn;m._l`U(=
'_c`G_in`G_il`G_i`G_e`G_d`G_dl`Gs`Gn`G_r`G_g`G_g1`G_t`G_t1`G_x`G_x1`G_l'`=
Rm_l[@om;`Wnl[`Wnl`C]=3Dn}`Bm._r@Lm._m){r=3Dm._r;r._m=3Dm;l=3Dm._l;^B"=0A=
+"i=3D0;i<l`C@A@tm[l[i]])r[l[i]]=3Dm[l[i]];r^sl[r^s@or;m=3D`Wl[@or`lf=3D=3D=
f`D())s[@om;`2m`Am_a`7'n`Gg`G@t!g)g=3D#2;`Ks=3D`9,c=3Ds[$V,m,x,f=3D0`5!c)=
c=3D`F$u$V`5c&&s_d)s[g]`7\"s\",s_ft(s_d(c)));x=3Ds[g]`5!x)x=3D`F$ug];m=3D=
`Wi("=0A=
+"n,1)`5x){m^s=3Df=3D1`5(\"\"+x)`4\"fun@6\")>=3D0)x(s);`m`Wm(\"x\",n,x)}m=
=3D`Wi(n,1)`5@Zl)@Zl=3D@Z=3D0;`pt();`2f'`Rm_m`0t,n,d){t=3D'^nt;`Ks=3D^S,i=
,x,m,f=3D'^nt`5`Wl&&`Wnl)^Bi=3D0;i<`Wnl`C@A{x=3D`Wnl[i]`5!n||x=3D=3Dn){m=3D=
`Wi(x)"=0A=
+"`5m[t]`Ht`t_d')`21`5d)m#Fd);`mm#F)`lm[t+1]@Lm[f]`Hd)$gd);`m$g)}m[f]=3D1=
}}`20`AloadModule`0n,u,d,l`1,m,i=3Dn`4':'),g=3Di<0?#2:n`3i+1),o=3D0,f,c=3D=
s.h?s.h:s.b,^d`5i>=3D0)n=3Dn`30,i);m=3D`Wi(n)`5(l$e`Wa(n,g))&&u^Ed&&"=0A=
+"c^E$E`S`Hd){@Z=3D1;@Zl=3D1`l@3)u=3D`vu,@u:`Ghttps:^Rf`7'e`G`9.m_a(\"$J+=
'\",\"'+g+'\")^R^d`7's`Gf`Gu`Gc`G`Ke,o=3D0@Oo=3Ds.$E`S(\"script\")`5o){@4=
=3D\"text/`o\"`5f)o.^v=3Df;o@I=3Du;c.appendChild(o)}`bo=3D0}`2o^Ro=3D^d(s=
"=0A=
+",f,u,c)}`mm=3D`Wi(n);m._e=3D1;`2m`Avo1`0t,a`Ha[t]||$P)^S#Da[t]`Avo2`0t,=
a`H#H{a#D^S[t]`5#H$P=3D1}`Adlt`7'`Ks=3D`9,d`Z,i,vo,f=3D0`5`pl)^Bi=3D0;i<`=
pl`C@A{vo=3D`pl[i]`5vo`H!`Wm(\"d\")||d`T-$C>=3D^8){`pl[i]=3D0;s.t(@i}`m"=0A=
+"f=3D1}`l`pi)clear@5`pi`Rdli=3D0`5f`H!`pi)`pi=3Dset@5`pt,^8)}`m`pl=3D0'`=
Rdl`0vo`1,d`Z`5!@ivo`E;`L^9,`G$72',@i;$C=3Dd`T`5!`pl)`pl`U;`pl[`pl`C]=3Dv=
o`5!^8)^8=3D250;`pt()`At`0vo,id`1,trk=3D1,tm`Z,sed=3DMath&&@P$l?@P$r@P$"=0A=
+"l()*10000000000000):tm`T,@q=3D's'+@P$rtm`T/10800000)%10+sed,y=3Dtm.g@K)=
,vt=3Dtm.getDate(@f`sMonth(@f'@ly+1900:y)+' =
`sHour$K:`sMinute$K:`sSecond$K `sDay()+' =
`sTimezoneO@z(),^d,^T=3Ds.g^T(),ta`e,q`e,qs`e,$m`"=0A=
+"e,vb`E#1^9`Runs()`5!s.td){`Ktl=3D^T`J,a,o,i,x`e,c`e,v`e,p`e,bw`e,bh`e,^=
H0',k=3D^W@Ncc`G@p',0^q,hp`e,ct`e,pn=3D0,ps`5^3&&^3.prototype){^H1'`5j.m$=
s){^H2'`5tm.setUTCDate){^H3'`5^Y^E^f&&`O#E^H4'`5pn.toPrecis"=0A=
+"ion){^H5';a`U`5a.forEach){^H6';i=3D0;o`E;^d`7'o`G`Ke,i=3D0@Oi=3Dnew =
Iterator(o)`b}`2i^Ri=3D^d(o)`5i&&i.next)^H7'}}}}`l`O>=3D4)x=3D^iwidth+'x'=
+^i$j`5s.isns||s.^e`H`O>=3D3$Q`f(^q`5`O>=3D4){c=3D^ipixelDepth;bw=3D`F$z@=
2;b"=0A=
+"h=3D`F$z^b}}$8=3Ds.n.p^J}`B^Y`H`O>=3D4$Q`f(^q;c=3D^i^2`5`O#E{bw=3Ds.d.^=
L`S.o@z@2;bh=3Ds.d.^L`S.o@z^b`5!s.^f^Eb){^d`7's`Gtl`G`Ke,hp=3D0`qh$b\");h=
p=3Ds.b.isH$b(tl)?\"Y\":\"N\"`b}`2hp^Rhp=3D^d(s,tl);^d`7's`G`Ke,ct=3D0`qc=
"=0A=
+"lientCaps\");ct=3Ds.b.`g`b}`2ct^Rct=3D^d(s)}}}`mr`e`l$8)^4pn<$8`C&&pn<3=
0){ps=3D^j$8[pn].^w@v#9`5p`4ps)<0)p+=3Dps;pn++}s.^U=3Dx;s.^2=3Dc;s.`o^k=3D=
j;s.`f=3Dv;s.`u@9=3Dk;s.`z@2=3Dbw;s.`z^b=3Dbh;s.`g=3Dct;s.^x=3Dhp;s.p^J=3D=
p;s.td"=0A=
+"=3D1`l@i{`L^9,`G$72',vb);`L^9,`G$71',@i`ls.useP^J)s.doP^J(s);`Kl=3D`F`J=
,r=3D^T.^L.`X`5!s.^I)s.^I=3Dl^h?l^h:l`5!s.`X@Ls._1_`X#C`X=3Dr;s._1_`X=3D1=
}`Wm('g')`5(vo&&$C)$e`Wm('d')`Hs.@G||^D){`Ko=3D^D?^D:s.@G`5!o)`2'';"=0A=
+"`Kp=3D$4'#4`i'),w=3D1,^G,@a,x=3D`yt,h,l,i,oc`5^D&&o=3D=3D^D){^4o@Ln@W$H=
BODY'){o=3Do^0`S?o^0`S:o^0Node`5!o)`2'';^G;@a;x=3D`yt}oc=3Do.`k?''+o.`k:'=
'`5(oc`4$B>=3D0&&oc`4\"@0oc(\")<0)||oc`4$W>=3D0)`2''}ta=3Dn?o$T:1;h@ki=3D=
h`4'"=0A=
+"?^Rh=3Ds.`N@c^3||i<0?h:h`30,i);l=3Ds.`N`i?s.`N`i:s.ln(h);t=3Ds.`N^M?s.`=
N^M`8:s.lt(h)`5t^mh||l))q+=3D$2=3D@G^n(t`td$I`te'?@y(t):'o')+(h?$2v1`Ph)`=
j+(l?$2v2`Pl)`j;`mtrk=3D0`5s.`x@T`H!p$L$4'^I^Rw=3D0}^G;i=3Do.sourceIn"=0A=
+"dex`5$3'^y')@g$3'^y^Rx=3D1;i=3D1`lp&&n@W)qs=3D'&pid`P^jp,255))+(w#8p#3w=
`j+'&oid`P^jn@v)+(x#8o#3x`j+'&ot`Pt)+(i#8oi=3D'+i`j}`l!trk@Lqs)`2'';@j=3D=
s.vs(sed)`5trk`H@j)$m=3Ds.mr(@q,(vt#8t`Pvt)`j+s.hav()+q+(qs?qs:s."=0A=
+"rq(^C)),0,id,ta);qs`e;`Wm('t')`5s.p_r)s.p_r(`R`X`e}^7(qs);^z`p(@i;`l@i`=
L^9,`G$71',vb`R@G=3D^D=3Ds.`N`i=3Ds.`N^M=3D`F@0^y=3Ds.ppu=3D^p=3D^pv1=3D^=
pv2=3D^pv3`e`5$x)`F@0@G=3D`F@0eo=3D`F@0`N`i=3D`F@0`N^M`e`5!id@Ls.tc#Ctc=3D=
1;s.f"=0A=
+"lush`a()}`2$m`Atl`0o,t,n,vo`1;s.@G=3D@wo`R`N^M=3Dt;s.`N`i=3Dn;s.t(@i}`5=
pg){`F@0co`0o){`K@J\"_\",1,#B`2@wo)`Awd@0gs`0$S{`K@J$p1,#B`2s.t()`Awd@0dc=
`0$S{`K@J$p#B`2s.t()}}@3=3D(`F`J`Y`8`4@us@d0`Rd=3D^L;s.b=3Ds.d.bo"=0A=
+"dy`5$c`S#7`i#Ch=3D$c`S#7`i('HEAD')`5s.h)s.h=3Ds.h[0]}s.n=3Dnavigator;s.=
u=3Ds.n.userAgent;@R=3Ds.u`4'N$X6/^R`Kapn$F`i,v$F^k,ie=3Dv`4$n'),o=3Ds.u`=
4'@M '),i`5v`4'@M@d0||o>0)apn=3D'@M';^Y$9`tMicrosoft Internet Explore"=0A=
+"r'`Risns$9`tN$X'`R^e$9`t@M'`R^f=3D(s.u`4'Mac@d0)`5o>0)`O`rs.u`3o+6));`B=
ie>0){`O=3D^Fi=3Dv`3ie+5))`5`O>3)`O`ri)}`B@R>0)`O`rs.u`3@R+10));`m`O`rv`R=
em=3D0`5^3#6^l){i=3D^g^3#6^l(256))`D(`Rem=3D(i`t%C4%80'?2:(i`t%U0"=0A=
+"100'?1:0))}s.sa(un`Rvl_l=3D'^K,`cID,vmk,ppu,@E,`c`ispace,c`V,`u@7,#4`i,=
^I,`X,@H';^a=3D^Z+',^o,$R,server,#4^M,#0@6ID,purchaseID,@r,state,zip,$k,p=
roducts,`N`i,`N^M';^B`Kn=3D1;n<51;n++)^a+=3D',prop$J+',eVar$J"=0A=
+"+',hier$J;^Z2=3D',^U,^2,`o^k,`f,`u@9,`z@2,`z^b,`g,^x,pe$q1$q2$q3,p^J';^=
a+=3D^Z2;^9=3D^a+',$i,`c^N,`c^N#5`MSele@6,`MList,`MM$s,`x^PLinks,`x@D,`x@=
T,`N@c^3,`N^PFile^Ms,`NEx`n,`NIn`n,`N@UVa$o`N@U^Qs,`N`is,@G"=0A=
+",eo';$x=3Dpg#1^9)`5!ss)`Fs()",=0A=
w=3Dwindow,l=3Dw.s_c_il,n=3Dnavigator,u=3Dn.userAgent,v=3Dn.appVersion,e=3D=
v.indexOf('MSIE =
'),m=3Du.indexOf('Netscape6/'),a,i,s;if(un){un=3Dun.toLowerCase();if(l)fo=
r(i=3D0;i<l.length;i++){s=3Dl[i];if(s._c=3D=3D's_c'){if(s.oun=3D=3Dun)ret=
urn s;else if(s.fs&&s.sa&&s.fs(s.oun,un)){s.sa(un);return s}}}}=0A=
w.s_r=3Dnew Function("x","o","n","var =
i=3Dx.indexOf(o);if(i>=3D0&&x.split)x=3D(x.split(o)).join(n);else =
while(i>=3D0){x=3Dx.substring(0,i)+n+x.substring(i+o.length);i=3Dx.indexO=
f(o)}return x");=0A=
w.s_d=3Dnew Function("x","var =
t=3D'`^@$#',l=3D'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst=
uvwxyz',d,n=3D0,b,k,w,i=3Dx.lastIndexOf('~~');if(i>0){d=3Dx.substring(0,i=
);x=3Dx.substring(i+2);while(d){w=3Dd;i"=0A=
+"=3Dd.indexOf('~');if(i>0){w=3Dd.substring(0,i);d=3Dd.substring(i+1)}els=
e =
d=3D'';b=3D(n-n%62)/62;k=3Dn-b*62;k=3Dt.substring(b,b+1)+l.substring(k,k+=
1);x=3Ds_r(x,k,w);n++}for(i=3D0;i<5;i++){w=3Dt.substring(i,i+1);x=3Ds_r(x=
"=0A=
+",w+' ',w)}}return x");=0A=
w.s_fe=3Dnew Function("c","return =
s_r(s_r(s_r(c,'\\\\','\\\\\\\\'),'\"','\\\\\"'),\"\\n\",\"\\\\n\")");=0A=
w.s_fa=3Dnew Function("f","var =
s=3Df.indexOf('(')+1,e=3Df.indexOf(')'),a=3D'',c;while(s>=3D0&&s<e){c=3Df=
.substring(s,s+1);if(c=3D=3D',')a+=3D'\",\"';else if((\"\\n\\r\\t =
\").indexOf(c)<0)a+=3Dc;s++}return a?'\"'+a+'\"':"=0A=
+"a");=0A=
w.s_ft=3Dnew Function("c","c+=3D'';var =
s,e,o,a,d,q,f,h,x;s=3Dc.indexOf('=3Dfunction(');while(s>=3D0){s++;d=3D1;q=
=3D'';x=3D0;f=3Dc.substring(s);a=3Ds_fa(f);e=3Do=3Dc.indexOf('{',s);e++;w=
hile(d>0){h=3Dc.substring(e,e+1);if(q){i"=0A=
+"f(h=3D=3Dq&&!x)q=3D'';if(h=3D=3D'\\\\')x=3Dx?0:1;else =
x=3D0}else{if(h=3D=3D'\"'||h=3D=3D\"'\")q=3Dh;if(h=3D=3D'{')d++;if(h=3D=3D=
'}')d--}if(d>0)e++}c=3Dc.substring(0,s)+'new =
Function('+(a?a+',':'')+'\"'+s_fe(c.substring(o+1,e))+'\")"=0A=
+"'+c.substring(e+1);s=3Dc.indexOf('=3Dfunction(')}return c;");=0A=
c=3Ds_d(c);if(e>0){a=3DparseInt(i=3Dv.substring(e+5));if(a>3)a=3DparseFlo=
at(i)}else if(m>0)a=3DparseFloat(u.substring(m+10));else =
a=3DparseFloat(v);if(a>=3D5&&v.indexOf('Opera')<0&&u.indexOf('Opera')<0){=
w.s_c=3Dnew Function("un","pg","ss","var s=3Dthis;"+c);return new =
s_c(un,pg,ss)}else s=3Dnew Function("un","pg","ss","var s=3Dnew =
Object;"+s_ft(c)+";return s");return s(un,pg,ss)}=0A=
=0A=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/WebResource.axd?d=xLkG52jqiZXD_yK3smY5byuUdip35PIhurOOk37bdbtklSTy1o6-xslZR0QobNIUZT2plI6dyMLJms3nOBiSuEA2sel0hV6nReHiVG8rsDHqs4gOzZFESMkTDOvivF7H0&t=633796383350000000

=EF=BB=BF//version 2.0 - 10/31/08

function createHttpRequest2() {
    var result =3D null;
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
        try {
            result =3D new XMLHttpRequest();
        } catch(e) {
            result =3D null;
        }
        // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
        try {
            result =3D new ActiveXObject("Msxml2.XMLHTTP");
        }=20
        catch(e) {
            try {
                result =3D new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                result =3D false;
            }
        }
    }
    return result;
}

function sendHttpRequest2(url, params, callback) {
    var request =3D createHttpRequest2();
    var isAsync =3D callback !=3D null;
    if (isAsync)
        request.onreadystatechange =3D=20
            function () {
                if(request.readyState =3D=3D 4 && request.status =3D=3D =
200)
                    callback(request);  =20
            }       =20
    try {
      if (params) {
        request.open('POST', url, isAsync);
        request.setRequestHeader("Content-type", =
"application/x-www-form-urlencoded");
        request.setRequestHeader("Content-length", params.length);
      } else { =20
        request.open('GET', url, isAsync);=20
      }
      request.send(params);=20
      if (!isAsync)=09
	      return request.responseText;
    }=20
    catch (e) {=20
      return "";=20
    }
}

function evalScripts2(scripts)
{	try
	{	if(scripts)=09
		{	var script =3D "";
			scripts =3D scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, =
function(){
	       	                         if (scripts !=3D=3D null) script +=3D =
arguments[1] + '\n';
 	        	                        return '';});
			if(script) (window.execScript) ? window.execScript(script) : =
window.setTimeout(script, 0);
		}
		return false;
	}
	catch(e)
	{=09
	}
}

function updateControlContent2(id, uri, postParams, queryParams, =
callback) {
    var e =3D document.getElementById(id);
    if (e)
    {
        if (queryParams) {
            uri =3D uri.indexOf('?') > 0 ? uri.substring(0, =
uri.indexOf('?')) : uri;
            uri +=3D "?" + queryParams;
        }
       =20
//alert(uri + '+' + postParams);       =20
       =20
        sendHttpRequest2(uri, postParams
            , function(request) {
                    e.innerHTML =3D request.responseText;
                    evalScripts2(request.responseText);
                    if (callback)
                        callback(request.responseText);
            })
    }
}


------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://s7.addthis.com/js/152/addthis_widget.js

/* (c) 2008, 2009 Add This, LLC */=0A=
var addthis_conf=3D{ver:152};function =
addthis_onmouseover(_1,e,_3,_4,_5,_6,_7){if(_5){addthis_config.username=3D=
_5;}if(_6){addthis_language=3D_6;}addthis_content=3D_7||"";return =
addthis_open(_1,"share",_3,_4);}function =
addthis_onmouseout(){addthis_close();}function addthis_to(s){return =
addthis_sendto(s);}function =
addthis_invoke(s,u,t,p){addthis_config.username=3Dp||_ate.pub();addthis_s=
hare.url=3D(u||w.addthis_url);addthis_share.title=3D(t||w.addthis_title);=
var =
w=3Dwindow,lu=3Daddthis_share.url.toLowerCase(),lt=3Daddthis_share.title.=
toLowerCase();if(lu=3D=3D=3D""||lu=3D=3D=3D"[url]"){addthis_share.url=3Dl=
ocation.href;}if(lt=3D=3D=3D""||lt=3D=3D=3D"[title]"){addthis_share.title=
=3Ddocument.title;}_ate.as(s);return false;}if(!window._ate){var =
_atd=3D"www.addthis.com/",_atr=3D"//s7.addthis.com/",_euc=3DencodeURIComp=
onent,_duc=3DdecodeURIComponent,_atu=3D"undefined",_atc=3D{dr:0,ver:250,l=
oc:0,enote:"",cwait:500,tamp:1,samp:0.01,camp:0.5,vamp:1,addr:-1,addt:1,x=
fl:!!window.addthis_disable_flash,abf:!!window.addthis_do_ab};(function()=
{try{var =
l=3Dwindow.location;if(l.protocol.indexOf("file")=3D=3D=3D0){_atr=3D"http=
:"+_atr;}if(l.hostname.indexOf("localhost")!=3D-1){_atc.loc=3D1;}}catch(e=
){}var =
ua=3Dnavigator.userAgent.toLowerCase(),d=3Ddocument,w=3Dwindow,wa=3Dw.add=
EventListener,we=3Dw.attachEvent,dl=3Dd.location,b=3D{win:/windows/.test(=
ua),chr:/chrome/.test(ua),iph:/iphone/.test(ua),saf:(/webkit/.test(ua))&&=
!(/chrome/.test(ua)),opr:/opera/.test(ua),msi:(/msie/.test(ua))&&!(/opera=
/.test(ua)),ffx:/firefox/.test(ua),ie6:/msie =
6.0/.test(ua),mod:-1},_9=3D{isBound:false,isReady:false,readyList:window.=
addthis_onload||[],onReady:function(){if(!_9.isReady){_9.isReady=3Dtrue;v=
ar l=3D_9.readyList;for(var =
fn=3D0;fn<l.length;fn++){l[fn].call(window);}_9.readyList=3D[];}},addLoad=
:function(_c){var _d=3Dw.onload;if(typeof =
w.onload!=3D"function"){w.onload=3D_c;}else{w.onload=3Dfunction(){if(_d){=
_d();}_c();};}},bindReady:function(){if(r.isBound){return;}r.isBound=3Dtr=
ue;if(d.addEventListener&&!b.opr){d.addEventListener("DOMContentLoaded",r=
.onReady,false);}var =
_e=3Dwindow.addthis_product;if(_e&&_e.indexOf("f")>-1){r.onReady();return=
;}if(b.msi&&window=3D=3Dtop){(function(){if(r.isReady){return;}try{d.docu=
mentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0)=
;return;}r.onReady();})();}if(b.opr){d.addEventListener("DOMContentLoaded=
",function(){if(r.isReady){return;}for(var =
i=3D0;i<d.styleSheets.length;i++){if(d.styleSheets[i].disabled){setTimeou=
t(arguments.callee,0);return;}}r.onReady();},false);}if(b.saf){var =
_10;(function(){if(r.isReady){return;}if(d.readyState!=3D"loaded"&&d.read=
yState!=3D"complete"){setTimeout(arguments.callee,0);return;}if(_10=3D=3D=
=3Dundefined){var _12=3Dd.gn("link");for(var =
i=3D0;i<_12.length;i++){if(_12[i].getAttribute("rel")=3D=3D"stylesheet"){=
_10++;}}var =
_14=3Dd.gn("style");_10+=3D_14.length;}if(d.styleSheets.length!=3D_10){se=
tTimeout(arguments.callee,0);return;}r.onReady();})();}r.addLoad(r.onRead=
y);},append:function(fn,_16){r.bindReady();if(r.isReady){fn.call(window,[=
]);}else{r.readyList.push(function(){return =
fn.call(window,[]);});}}},r=3D_9,_17=3D{vst:[],rev:"$Rev: 65184 =
$",bro:b,clck:1,show:1,dl:dl,camp:_atc.camp-Math.random(),samp:_atc.samp-=
Math.random(),vamp:_atc.vamp-Math.random(),tamp:_atc.tamp-Math.random(),a=
b:"-",scnt:1,seq:1,inst:1,wait:500,tmo:null,cvt:[],svt:[],sttm:new =
Date().getTime(),max:268435455,pix:"tev",sid:0,sub:!!window.at_sub,uid:nu=
ll,oot:null,swf:"//bin.clearspring.com/at/v/1/button1.6.swf",evu:"//e1.cl=
earspring.com/at/",off:function(){return Math.floor((new =
Date().getTime()-_17.sttm)/100).toString(16);},ran:function(){return =
Math.floor(Math.random()*4294967295).toString(36);},srd:function(){if(_17=
.dr){return"&pre=3D"+_euc(_17.dr);}else{return"";}},cst:function(c){retur=
n"CXNID=3D2000001.521545608054043907"+(c||2)+"NXC";},img:function(i,c){if=
(!window.at_sub){var =
a=3D_17,dr=3Da.dr;if(dr){dr=3D(dr.split("?")).shift();dr=3D(dr.split("htt=
p://")).pop();if(dr.length>25){dr=3Ddr.substr(0,25);}}new =
Image().src=3D_atr+"live/t00/"+i+".gif?"+(a.uid!=3D=3Dnull?"uid=3D"+a.uid=
+"&":"")+a.ran()+"&"+a.cst(c)+(a.pub()?"&pub=3D"+a.pub():"")+(dr?"&dr=3D"=
+_euc(dr):"");}},cuid:function(){return(_17.sttm&_17.max).toString(16)+(M=
ath.floor(Math.random()*_17.max)).toString(16);},ssid:function(){if(_17.s=
id=3D=3D=3D0){_17.sid=3D_17.cuid();}return =
_17.sid;},sev:function(id,_1e){_17.pix=3D"sev-"+(typeof(id)!=3D=3D"number=
"?_euc(id):id);_17.svt.push(id+";"+_17.off());if(_1e=3D=3D=3D1){_17.xmi(t=
rue);}else{_17.sxm(true);}},cev:function(k,v){_17.pix=3D"cev-"+_euc(k);_1=
7.cvt.push(_euc(k)+"=3D"+_euc(v)+";"+_17.off());_17.sxm(true);},sxm:funct=
ion(b){if(_17.tmo!=3D=3Dnull){clearTimeout(_17.tmo);}if(b){_17.tmo=3D_17.=
sto("_ate.xmi(false)",_17.wait);}},sto:function(c,t){return =
setTimeout(c,t);},sta:function(){var =
a=3D_17;return"AT-"+(a.pub()?a.pub():"unknown")+"/-/"+a.ab+"/"+a.ssid()+"=
/"+(a.seq++)+(a.uid!=3D=3Dnull?"/"+a.uid:"");},xmi:function(_25){var =
a=3D_17,h=3Da.dl?a.dl.hostname:"";if(!a.uid){a.dck("X"+a.cuid());}else{a.=
coo();}if(a.cvt.length+a.svt.length>0){a.sxm(false);if(a.seq=3D=3D=3D1){a=
.cev("pin",a.inst);}if(_atc.xtr){return;}if(h.indexOf(".gov")>-1||h.index=
Of(".mil")>-1){_atc.xck=3D1;}var =
urp=3Da.pix+"-"+a.ran()+".png?ev=3D"+_17.sta()+"&se=3D"+a.svt.join(",")+"=
&ce=3D"+a.cvt.join(",")+(_atc.xck?"&xck=3D1":""),url=3Da.evu+urp;a.cvt=3D=
[];a.svt=3D[];if(_25){var =
d=3Ddocument,i=3Dd.ce("iframe");i.id=3D"_atf";i.src=3Durl;_17.opp(i.style=
);d.body.appendChild(i);i=3Dd.getElementById("_atf");}else{(new =
Image()).src=3Durl;}}},loc:function(){return =
_atc.loc;},opp:function(st){st.width=3D"1px";st.height=3D"1px";st.positio=
n=3D"absolute";st.zIndex=3D100000;},pub:function(){return =
window.addthis_config&&addthis_config.username?_euc(addthis_config.userna=
me):(window.addthis_pub||"");},plo:[],lad:function(x){_17.plo.push(x);},l=
ng:function(al){var =
d=3Ddocument;if(al&&(al.toLowerCase()).indexOf("en")!=3D=3D0&&!_17.pll){v=
ar =
o=3Dd.ce("script");o.src=3D_atr+"static/r07/lang00.js";d.gn("head")[0].ap=
pendChild(o);_17.pll=3Do;}},jlo:function(){try{var =
d=3Ddocument,al=3D(window.addthis_language||addthis_config.ui_language||(=
_17.bro.msi?navigator.userLanguage:navigator.language));_17.lng(al);if(!_=
17.pld){var =
m=3Dd.ce("script");m.src=3D_atr+"static/r07/menu22.js";d.gn("head")[0].ap=
pendChild(m);_17.pld=3Dm;}}catch(e){}},igv:function(){if(!w.addthis_share=
){w.addthis_share=3D{url:w.addthis_url,title:w.addthis_title};}if(!w.addt=
his_config){w.addthis_config=3D{username:w.addthis_pub};}else{if(addthis_=
config.data_use_flash=3D=3D=3Dfalse){_atc.xfl=3D1;}if(addthis_config.data=
_use_cookies=3D=3D=3Dfalse){_atc.xck=3D1;}}},lod:function(arg){try{var =
w=3Dwindow,a=3D_17,hp=3D0,f=3D((arg=3D=3D=3D1||w.addthis_load_flash)&&!_a=
tc.abf),dr=3Dd.referer||d.referrer||"",du=3Ddl?dl.href:null,si=3Ddu?du.in=
dexOf("sms_ss"):-1,al=3D(w.addthis_language||(w.addthis_config?w.addthis_=
config.ui_language:null)||(_17.bro.msi?navigator.userLanguage:navigator.l=
anguage)),_3d=3D"email,favorites,print,delicious,digg,google,myspace,live=
,facebook,stumbleupon,twitter,more";a.igv();_17.gov();a.dr=3Ddr;a.ab=3D(!=
window.addthis_options||addthis_options=3D=3D_3d)?w.addthis_ab||Math.roun=
d(a.tamp*100/4.55):0;if(a.ab>11){a.ab=3D"f"+(a.ab-11);}else{if(a.ab>0){a.=
ab=3D"t"+a.ab;}}if(!f){if(a.samp>=3D0&&!a.sub){a.sev("20");a.cev("plo",Ma=
th.round(1/_atc.samp));if(a.dr){a.cev("pre",a.dr);hp=3D1;}}if(a.camp>=3D0=
&&du&&dl&&dl.protocol&&(dr.indexOf("com/search")>-1)&&(dl.protocol.indexO=
f("https")=3D=3D-1)){dr=3Ddr.split("?").pop();var =
t=3Ddr.split("&"),fnd=3D0,quo=3D-1,ts=3D"";for(var =
i=3D0;i<t.length;i++){if(t[i].indexOf("q=3D")=3D=3D0||t[i].indexOf("p=3D"=
)=3D=3D0){t=3D_duc(t[i].substr(2)).replace(/\+/g," =
");fnd=3D1;break;}}if(fnd){for(var =
i=3D0;i<t.length;i++){switch(t[i]){case" ":if(i>0&&t[i-1]!=3D" =
"&&quo=3D=3D-1){ts+=3D",";}break;case"\"":if(quo>=3D0){ts+=3Dt.substr(quo=
+1,(i)-(quo+1));quo=3D-1;}else{quo=3Di;}break;default:if(quo=3D=3D-1){ts+=
=3Dt[i];}}}}if(!_atc.xtr&&!_atc.xck&&ts!=3D_atu&&ts.length&&ts!=3D=3D" =
"&&ts.indexOf(_atu)=3D=3D-1){new =
Image().src=3D"//cf.addthis.com/redirector?url=3D"+_euc(du)+"&ref=3D"+_eu=
c((d.referer||d.referrer));}}if(si>-1){var =
sm=3Ddu.substr(si),am=3Dsm.indexOf("&");if(am>-1){sm=3Dsm.substr(0,am);}s=
m=3D(sm.split("=3D"))[1];if(a.vamp>=3D0&&!a.sub&&sm.length){a.cev("plv",M=
ath.round(1/_atc.vamp));a.cev("rsc",sm);}}a.img(_atc.ver+"lo","2");}if(a.=
plo.length>0){a.jlo();}if(a.swf&&!_atc.xfl&&!(a.loc())&&!_atc.abf&&(f||a.=
uid=3D=3D=3Dnull||(a.uid!=3D=3D"anonymous"&&a.oot&&((new =
Date()).getTime()-a.oot>60480000)))){a.uoo();var =
_45=3Dfunction(o,n,v){var =
c=3Dd.createElement("param");c.name=3Dn;c.value=3Dv;o.appendChild(c);};va=
r =
o=3Dd.createElement("object");a.opp(o.style);o.id=3D"atff";if(b.msi){o.cl=
assid=3D"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";_45(o,"movie",a.swf)=
;}else{o.data=3Da.swf;o.quality=3D"high";o.type=3D"application/x-shockwav=
e-flash";}_45(o,"wmode","transparent");_45(o,"allowScriptAccess","always"=
);d.body.insertBefore(o,d.body.firstChild);if(b.msi){o.outerHTML+=3D" =
";}}}catch(e){}},unl:function(){var =
a=3D_17;if(a.samp>=3D0&&!a.sub&&!_atc.abf){a.sev("21",1);a.cev("pun",1/_a=
tc.samp);}return true;},kck:function(k){var =
d=3Ddocument;if(d.cookie){d.cookie=3Dk+"=3D ; expires=3DTue, 31 Mar 2009 =
05:47:11 UTC; path=3D/";}},rck:function(k){var =
d=3Ddocument;if(d.cookie){var ck=3Dd.cookie.split(";");for(var =
i=3D0;i<ck.length;i++){var =
c=3Dck[i],x=3Dc.indexOf(k+"=3D");if(x>=3D0){return =
c.substring(x+(k.length+1));}}}return;},uoo:function(){_17.sck("_csoot",(=
new =
Date().getTime()));},coo:function(f){if(_17.uid=3D=3D"anonymous"&&!_17.oo=
t){_17.xck=3D1;_17.uoo();}},dck:function(c){_17.uid=3Dc;_17.sck("_csuid",=
c);_17.coo();},gov:function(){var =
h=3D_17.dl?_17.dl.hostname:"";if(h.indexOf(".gov")>-1||h.indexOf(".mil")>=
-1){_atc.xck=3D1;_atc.xfl=3D1;}var =
p=3D_17.pub(),x=3D["usarmymedia","gobiernousa","govdelivery"];for(i in =
x){if(p=3D=3Dx[i]){_atc.xck=3D1;_atc.xfl=3D1;break;}}},sck:function(u,v,s=
){_17.gov();if(!_atc.xck){d.cookie=3Du+"=3D"+v+(!s?"; expires=3DWed, 04 =
Oct 2028 03:19:53 GMT":"")+"; =
path=3D/";}},fcl:null,asetup:function(x){var =
a=3D_17;try{if(x!=3D=3Dnull&&x!=3D=3D_atu){a.dck(x);}if(a.fcl){a.fcl();}}=
catch(e){}return =
x;},ao:function(elt,_60,_61,_62,_63,_64){_17.lad(["open",elt,_60,_61,_62,=
_63,_64]);_17.jlo();return =
false;},ac:function(){},as:function(s,cf,sh){_17.lad(["send",s,cf,sh]);_1=
7.jlo();}},a=3D_17;w._ate=3Da;w._adr=3Dr;d.ce=3Dd.createElement;d.gn=3Dd.=
getElementsByTagName;r.bindReady();if(wa){wa("unload",a.unl,false);}else{=
if(we){we("onunload",a.unl);}else{w.onunload=3Da.unl;}}if(!_atc.ost){if(!=
w.addthis_conf){w.addthis_conf=3D{};}for(var i in =
addthis_conf){_atc[i]=3Daddthis_conf[i];}_atc.ost=3D1;}r.append(a.lod);if=
(d.cookie){var ck=3Dd.cookie.split(";");for(var =
i=3D0;i<ck.length;i++){var =
c=3Dck[i],x=3Dc.indexOf("_csuid=3D"),y=3Dc.indexOf("_csoot=3D");if(x>=3D0=
){_17.uid=3Dc.substring(x+7);}else{if(y>=3D0){_17.oot=3Dc.substring(y+7);=
}}}}try{var =
l=3Dd.ce("link");l.rel=3D"stylesheet";l.type=3D"text/css";l.href=3D_atr+"=
static/r07/widget08.css";l.media=3D"all";d.gn("head")[0].appendChild(l);}=
catch(e){}var =
ss=3Dd.gn("script"),s=3Dss[ss.length-1],q=3Ds.src.replace(/^[^\?]+\??/,""=
),pq=3Dfunction(q){var p=3D{};if(!q){return p;}var =
ps=3Dq.split(/[;&]/);for(var i=3D0;i<ps.length;i++){var =
kv=3Dps[i].split("=3D");if(!kv||kv.length!=3D2){continue;}var =
k=3D_duc(kv[0]),v=3D_duc(kv[1]);v=3Dv.replace(/\+/g," =
");ps[k]=3Dv;}return =
ps;},p=3Dpq(q);if(p.pub){w.addthis_pub=3D_duc(p.pub);if(w.addthis_config)=
{w.addthis_config.username=3Dw.addthis_pub;}}else{if(p.username){w.addthi=
s_pub=3D_duc(p.username);if(w.addthis_config){w.addthis_config.username=3D=
w.addthis_pub;}}}if(p.domready){_atc.dr=3D1;}try{if(_atc.ver=3D=3D=3D120)=
{var rc=3D"atb"+w._ate.cuid();d.write("<span =
id=3D\""+rc+"\"></span>");w._ate.igv();w._ate.lad(["span",rc,addthis_shar=
e.url||"[url]",addthis_share.title||"[title]"]);}if(w.addthis_clickout){_=
17.lad(["cout"]);}}catch(e){}})();function =
addthis_open(elt,_7b,_7c,_7d,_7e,_7f){if(typeof =
_7e=3D=3D"string"){_7e=3Dnull;}return =
_ate.ao(elt,_7b,_7c,_7d,_7e,_7f);}function =
addthis_close(){_ate.ac();}function =
addthis_sendto(s,cf,sh){_ate.as(s,cf,sh);return =
false;}if(_atc.dr){_adr.onReady();}}else{_ate.inst++;}if(_atc.abf){addthi=
s_open(document.getElementById("ab"),"emailab",window.addthis_url||"[URL]=
",window.addthis_title||"[TITLE]");}
------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/TopletsResources/news/polling/js/Poll.js

=EF=BB=BF    function HttpRequest(url, write)
    {
    var req =3D false;
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
            try {
                            req =3D new XMLHttpRequest();
            } catch(e) {
                            req =3D false;
            }
        // branch for IE/Windows ActiveX version
        } else if(window.ActiveXObject) {
            try {
                    req =3D new ActiveXObject("Msxml2.XMLHTTP");
                  =20
            } catch(e) {
                    try {
                            req =3D new =
ActiveXObject("Microsoft.XMLHTTP");
                    } catch(e) {
                            req =3D false;
                    }
                    }
        }
       =20
        try {
          req.open('GET', url, false);=20
          req.send(null);=20
          if (write)
            document.write(req.responseText);=20
          return req.responseText;
        =20
        }=20
        catch (e) {=20
          return "";=20
         =20
        }
    }

    function PostPoll(location, domain, pollUid, answerCode, =
resultTemplate, returnTo, pollTemplate)
    {
        var radioObj;
        var pollingErrorDiv =3D document.getElementById('Pollingerror');
        if (document.forms["pollForm"]) {
          radioObj =3D =
document.forms["pollForm"].elements['pollRadiobtn'];
        } else {
          radioObj =3D =
document.forms["aspnetForm"].elements['pollRadiobtn'];
        }
        var radioLength =3D radioObj.length;
	    if(radioLength =3D=3D undefined)
	    {
		    if(radioObj.checked)
			   answerCode =3D radioObj.value;
    		else
    			return;
		}
	    for(var i =3D 0; i < radioLength; i++) {
		    if(radioObj[i].checked) {
			    answerCode =3D radioObj[i].value;
		    }
		}
		if (answerCode =3D=3D '')
		{
		    alert('You should select at least one option');
		    return;
		}
		var ord=3DMath.random()*10000000000000000;
        pollingErrorDiv.style.display =3D 'none';
        var str =3D location + '/PostUserPollSelection?domain=3D'+ =
domain + '&AssetUId=3D' + pollUid + '&Answerkey=3D' + answerCode + =
'&ord=3D' + ord;
        var result =3D HttpRequest(str, false);
        if (result.indexOf("Success") >=3D 0 )
        {
            ShowResults(resultTemplate, pollUid, returnTo, location, =
pollTemplate);
        }
        else
        {
            pollingErrorDiv.style.display =3D 'block';
        }
    }

     function ShowPoll(template, pollUid, resultTemplate, postLocation, =
returnTo)
    {
        var ord=3DMath.random()*10000000000000000;
        var str =3D template + '?assetId=3D'+pollUid + =
'&resultTemplate=3D' + resultTemplate + '&returnTo=3D' + returnTo + =
'&postLocation=3D' +postLocation  + '&pollTemplate=3D' + template + =
'&ord=3D' + ord;
        var result =3D HttpRequest(str, false);
        var pollingDiv =3D document.getElementById('Polling');
        pollingDiv.innerHTML =3D result;
        var pollingErrorDiv =3D document.getElementById('Pollingerror');
        pollingErrorDiv.style.display =3D 'none';
       =20
    }
   =20
     function ShowResults(template, pollUid, returnTo, postLocation , =
pollTemplate)
    {
        var ord=3DMath.random()*10000000000000000;
        var str =3D template + '?returnTo=3D' + returnTo + =
'&assetId=3D'+pollUid + '&resultTemplate=3D' + template + =
'&pollTemplate=3D' + pollTemplate +  '&postLocation=3D' + postLocation + =
'&ord=3D' + ord;;
        var result =3D HttpRequest(str, false);
        var pollingDiv =3D document.getElementById('Polling');
        pollingDiv.innerHTML =3D result;
    }


------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js

(function(){=0A=
var i=3Dtrue,l=3Dnull,m=3Dfalse,n=3D(new =
Date).getTime(),aa=3Dfunction(a){var b=3D(new =
Date).getTime()-n,c=3D"&dtd=3D"+(b<1000?b:"M");return a+c};var =
o=3Dthis,ba=3Dfunction(a,b,c){var d=3Da.split("."),e=3Dc||o;!(d[0]in =
e)&&e.execScript&&e.execScript("var "+d[0]);for(var =
f;d.length&&(f=3Dd.shift());)if(!d.length&&b!=3D=3Dundefined)e[f]=3Db;els=
e e=3De[f]?e[f]:(e[f]=3D{})},p=3Dfunction(a){var b=3Dtypeof =
a;if(b=3D=3D"object")if(a){if(a instanceof Array||!(a instanceof =
Object)&&Object.prototype.toString.call(a)=3D=3D"[object Array]"||typeof =
a.length=3D=3D"number"&&typeof a.splice!=3D"undefined"&&typeof =
a.propertyIsEnumerable!=3D"undefined"&&!a.propertyIsEnumerable("splice"))=
return"array";=0A=
if(!(a instanceof =
Object)&&(Object.prototype.toString.call(a)=3D=3D"[object =
Function]"||typeof a.call!=3D"undefined"&&typeof =
a.propertyIsEnumerable!=3D"undefined"&&!a.propertyIsEnumerable("call")))r=
eturn"function"}else return"null";else if(b=3D=3D"function"&&typeof =
a.call=3D=3D"undefined")return"object";return b},ca=3Dfunction(a){var =
b=3Dp(a);return b=3D=3D"array"||b=3D=3D"object"&&typeof =
a.length=3D=3D"number"},da=3Dfunction(a){return typeof =
a=3D=3D"string"},ea=3Dfunction(a){var b=3Dp(a);return =
b=3D=3D"object"||b=3D=3D"array"||b=3D=3D"function"};=0A=
Math.floor(Math.random()*2147483648).toString(36);=0A=
var fa=3Dfunction(a){var =
b=3Dp(a);if(b=3D=3D"object"||b=3D=3D"array"){if(a.clone)return =
a.clone.call(a);var c=3Db=3D=3D"array"?[]:{};for(var d in =
a)c[d]=3Dfa(a[d]);return c}return a},ga=3Dfunction(a,b){var =
c=3Da.u;if(arguments.length>2){var =
d=3DArray.prototype.slice.call(arguments,2);c&&d.unshift.apply(d,c);c=3Dd=
}b=3Da.w||b;a=3Da.v||a;var e,f=3Db||o;e=3Dc?function(){var =
h=3DArray.prototype.slice.call(arguments);h.unshift.apply(h,c);return =
a.apply(f,h)}:function(){return =
a.apply(f,arguments)};e.u=3Dc;e.w=3Db;e.v=3Da;return =
e},ha=3DDate.now||function(){return(new Date).getTime()},=0A=
q=3Dfunction(a,b,c){ba(a,b,c)};function r(a,b){var =
c=3DparseFloat(a);return isNaN(c)||c>1||c<0?b:c}function =
ia(a,b){if(a=3D=3D"true")return i;if(a=3D=3D"false")return m;return =
b}function t(a,b){var c=3D/^([\w-]+\.)+[\w-]{2,}(\:[0-9]+)?$/;return =
c.test(a)?a:b};var =
ja=3D"pagead2.googlesyndication.com",ka=3D"googleads.g.doubleclick.net",l=
a=3D"pubads.g.doubleclick.net",ma=3D"securepubads.g.doubleclick.net",na=3D=
"partner.googleadservices.com",v=3Dt("pagead2.googlesyndication.com",ja),=
oa=3Dt("googleads.g.doubleclick.net",ka),pa=3Dt("pagead2.googlesyndicatio=
n.com",ja);t("pubads.g.doubleclick.net",la);t("partner.googleadservices.c=
om",na);t("securepubads.g.doubleclick.net",ma);function y(a){return =
typeof =
encodeURIComponent=3D=3D"function"?encodeURIComponent(a):escape(a)}functi=
on qa(a,b,c){var =
d=3Ddocument.createElement("script");d.type=3D"text/javascript";if(b)d.on=
load=3Db;if(c)d.id=3Dc;d.src=3Da;var =
e=3Ddocument.getElementsByTagName("head")[0];if(!e)return =
m;window.setTimeout(function(){e.appendChild(d)},0);return i}function =
ra(a,b){a.google_image_requests||(a.google_image_requests=3D[]);var =
c=3Dnew Image;c.src=3Db;a.google_image_requests.push(c)}=0A=
function sa(a){if(a in ta)return ta[a];return =
ta[a]=3Dnavigator.userAgent.toLowerCase().indexOf(a)!=3D-1}var ta=3D{};=0A=
function ua(){if(navigator.plugins&&navigator.mimeTypes.length){var =
a=3Dnavigator.plugins["Shockwave Flash"];if(a&&a.description)return =
a.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")}else =
if(navigator.userAgent&&navigator.userAgent.indexOf("Windows =
CE")>=3D0){for(var b=3D3,c=3D1;c;)try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+(b+1));b++}catch(d){c=3Dl}=
return b.toString()}else if(sa("msie")&&!window.opera){c=3Dl;try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(e){b=3D=0A=
0;try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");b=3D6;c.AllowScriptAcces=
s=3D"always"}catch(f){if(b=3D=3D6)return b.toString()}try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(h){}}if(c){b=3Dc.Get=
Variable("$version").split(" ")[1];return =
b.replace(/,/g,".")}}return"0"}function va(a){var =
b=3Da.google_ad_format;if(b)return b.indexOf("_0ads")>0;return =
a.google_ad_output!=3D"html"&&a.google_num_radlinks>0}function =
z(a){return!!a&&a.indexOf("_sdo")!=3D-1}=0A=
function Aa(a){return va(a)||z(a.google_ad_format)}function A(a,b){var =
c=3DMath.random();if(c<b){var d=3DMath.floor(c/b*a.length);return =
a[d]}return""};var =
Ba=3D{google_ad_channel:"channel",google_ad_host:"host",google_ad_host_ch=
annel:"h_ch",google_ad_host_tier_id:"ht_id",google_ad_region:"region",goo=
gle_ad_section:"region",google_ad_type:"ad_type",google_adtest:"adtest",g=
oogle_allow_expandable_ads:"ea",google_alternate_ad_url:"alternate_ad_url=
",google_alternate_color:"alt_color",google_bid:"bid",google_city:"gcs",g=
oogle_color_bg:"color_bg",google_color_border:"color_border",google_color=
_line:"color_line",google_color_link:"color_link",google_color_text:"colo=
r_text",=0A=
google_color_url:"color_url",google_contents:"contents",google_country:"g=
l",google_cust_age:"cust_age",google_cust_ch:"cust_ch",google_cust_gender=
:"cust_gender",google_cust_id:"cust_id",google_cust_interests:"cust_inter=
ests",google_cust_job:"cust_job",google_cust_l:"cust_l",google_cust_lh:"c=
ust_lh",google_cust_u_url:"cust_u_url",google_disable_video_autoplay:"dis=
able_video_autoplay",google_ed:"ed",google_encoding:"oe",google_feedback:=
"feedback_link",google_flash_version:"flash",google_font_face:"f",=0A=
google_font_size:"fs",google_gl:"gl",google_hints:"hints",google_kw:"kw",=
google_kw_type:"kw_type",google_language:"hl",google_page_url:"url",googl=
e_referrer_url:"ref",google_region:"gr",google_reuse_colors:"reuse_colors=
",google_safe:"adsafe",google_tag_info:"gut",google_targeting:"targeting"=
,google_ui_features:"ui",google_ui_version:"uiv",google_video_doc_id:"vid=
eo_doc_id",google_video_product_type:"video_product_type"},Ca=3D{google_a=
d_format:"format",google_ad_output:"output",google_ad_callback:"callback"=
,=0A=
google_ad_height:"h",google_ad_override:"google_ad_override",google_ad_sl=
ot:"slotname",google_ad_width:"w",google_analytics_uacct:"ga_wpids",googl=
e_correlator:"correlator",google_cpa_choice:"cpa_choice",google_ctr_thres=
hold:"ctr_t",google_image_size:"image_size",google_last_modified_time:"lm=
t",google_max_num_ads:"num_ads",google_max_radlink_len:"max_radlink_len",=
google_num_radlinks:"num_radlinks",google_num_radlinks_per_unit:"num_radl=
inks_per_unit",google_only_ads_with_video:"only_ads_with_video",=0A=
google_page_location:"loc",google_rl_dest_url:"rl_dest_url",google_rl_fil=
tering:"rl_filtering",google_rl_mode:"rl_mode",google_rt:"rt",google_skip=
:"skip"},Da=3D{google_only_pyv_ads:"pyv",google_with_pyv_ads:"withpyv"};f=
unction Ea(a){return Ba[a]||Ca[a]||Da[a]||l};var =
C=3Ddocument,D=3Dnavigator,E=3Dwindow;=0A=
function Fa(){var a=3DC.cookie,b=3DMath.round((new =
Date).getTime()/1000),c=3DE.google_analytics_domain_name,d=3Dtypeof =
c=3D=3D"undefined"?Ga("auto"):Ga(c),e=3Da.indexOf("__utma=3D"+d+".")>-1,f=
=3Da.indexOf("__utmb=3D"+d)>-1,h=3Da.indexOf("__utmc=3D"+d)>-1,k,j=3D{},g=
=3D!!E&&!!E.gaGlobal;if(e){k=3Da.split("__utma=3D"+d+".")[1].split(";")[0=
].split(".");j.sid=3Df&&h?k[3]+"":g&&E.gaGlobal.sid?E.gaGlobal.sid:b+"";j=
.vid=3Dk[0]+"."+k[1];j.from_cookie=3Di}else{j.sid=3Dg&&E.gaGlobal.sid?E.g=
aGlobal.sid:b+"";j.vid=3Dg&&E.gaGlobal.vid?E.gaGlobal.vid:(Math.round(Mat=
h.random()*=0A=
2147483647)^Ha()&2147483647)+"."+b;j.from_cookie=3Dm}j.dh=3Dd;j.hid=3Dg&&=
E.gaGlobal.hid?E.gaGlobal.hid:Math.round(Math.random()*2147483647);return=
 E.gaGlobal=3Dj}=0A=
function Ha(){var =
a=3DC.cookie?C.cookie:"",b=3DE.history.length,c,d,e=3D[D.appName,D.versio=
n,D.language?D.language:D.browserLanguage,D.platform,D.userAgent,D.javaEn=
abled()?1:0].join("");if(E.screen)e+=3DE.screen.width+"x"+E.screen.height=
+E.screen.colorDepth;else =
if(E.java){d=3Djava.awt.Toolkit.getDefaultToolkit().getScreenSize();e+=3D=
d.screen.width+"x"+d.screen.height}e+=3Da;e+=3DC.referrer?C.referrer:"";f=
or(c=3De.length;b>0;)e+=3Db--^c++;return Ia(e)}=0A=
function Ia(a){var =
b=3D1,c=3D0,d,e;if(!(a=3D=3Dundefined||a=3D=3D"")){b=3D0;for(d=3Da.length=
-1;d>=3D0;d--){e=3Da.charCodeAt(d);b=3D(b<<6&268435455)+e+(e<<14);c=3Db&2=
66338304;b=3Dc!=3D0?b^c>>21:b}}return b}function =
Ga(a){if(!a||a=3D=3D""||a=3D=3D"none")return =
1;if("auto"=3D=3Da){a=3DC.domain;if("www."=3D=3Da.substring(0,4))a=3Da.su=
bstring(4,a.length)}return Ia(a.toLowerCase())};var =
Ja=3Ddocument,Ka=3Dia("false",m),La=3Dia("false",m),Ma=3Dia("false",m);ia=
("false",m);var =
F=3Dwindow;document.URL&&(document.URL.indexOf("?google_debug")>0||docume=
nt.URL.indexOf("&google_debug")>0);var Na=3Dfunction(a){return =
a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ta=3Dfunction(a,b){if(b)return =
a.replace(Oa,"&amp;").replace(Pa,"&lt;").replace(Qa,"&gt;").replace(Ra,"&=
quot;");else{if(!Sa.test(a))return =
a;if(a.indexOf("&")!=3D-1)a=3Da.replace(Oa,"&amp;");if(a.indexOf("<")!=3D=
-1)a=3Da.replace(Pa,"&lt;");if(a.indexOf(">")!=3D-1)a=3Da.replace(Qa,"&gt=
;");if(a.indexOf('"')!=3D-1)a=3Da.replace(Ra,"&quot;");return =
a}},Oa=3D/&/g,Pa=3D/</g,Qa=3D/>/g,Ra=3D/\"/g,Sa=3D/[&<>\"]/,Wa=3Dfunction=
(a){if(G(a,"&"))return"document"in o&&!G(a,"<")?=0A=
Ua(a):Va(a);return a},Ua=3Dfunction(a){var =
b=3Do.document.createElement("a");b.innerHTML=3Da;b.normalize&&b.normaliz=
e();a=3Db.firstChild.nodeValue;b.innerHTML=3D"";return =
a},Va=3Dfunction(a){return =
a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case =
"lt":return"<";case "gt":return">";case =
"quot":return'"';default:if(c.charAt(0)=3D=3D"#"){var =
d=3DNumber("0"+c.substr(1));if(!isNaN(d))return =
String.fromCharCode(d)}return b}})},Xa=3Dfunction(a,b){for(var =
c=3Db.length,d=3D0;d<c;d++){var e=3Dc=3D=3D1?b:b.charAt(d);=0A=
if(a.charAt(0)=3D=3De&&a.charAt(a.length-1)=3D=3De)return =
a.substring(1,a.length-1)}return a},G=3Dfunction(a,b){return =
a.indexOf(b)!=3D-1},Za=3Dfunction(a,b){for(var =
c=3D0,d=3DNa(String(a)).split("."),e=3DNa(String(b)).split("."),f=3DMath.=
max(d.length,e.length),h=3D0;c=3D=3D0&&h<f;h++){var =
k=3Dd[h]||"",j=3De[h]||"",g=3Dnew RegExp("(\\d*)(\\D*)","g"),u=3Dnew =
RegExp("(\\d*)(\\D*)","g");do{var =
w=3Dg.exec(k)||["","",""],x=3Du.exec(j)||["","",""];if(w[0].length=3D=3D0=
&&x[0].length=3D=3D0)break;var =
s=3Dw[1].length=3D=3D0?0:parseInt(w[1],10),S=3Dx[1].length=3D=3D=0A=
0?0:parseInt(x[1],10);c=3DYa(s,S)||Ya(w[2].length=3D=3D0,x[2].length=3D=3D=
0)||Ya(w[2],x[2])}while(c=3D=3D0)}return =
c},Ya=3Dfunction(a,b){if(a<b)return-1;else if(a>b)return 1;return =
0};ha();var =
H=3Dfunction(a){this.t=3Da;this.i=3D[];this.p=3Dthis.h=3D0;this.d=3D[];th=
is.n=3Dm};H.prototype.s=3Dfunction(a,b){var =
c=3Dthis.t[b],d=3Dthis.i;this.t[b]=3Dfunction(e){if(e&&e.length>0){var =
f=3De.length>1?e[1].url:l;d.push([a,Wa(e[0].url),f])}c(e)}};H.prototype.r=
=3Dfunction(){this.h++};H.prototype.o=3Dfunction(){if(!this.n){qa("http:/=
/"+v+"/pagead/osd.js");this.n=3Di}};H.prototype.j=3Dfunction(a){if(this.h=
>0)for(var =
b=3Ddocument.getElementsByTagName("iframe"),c=3D0;c<b.length;c++)b.item(c=
).name=3D=3D"google_ads_frame"&&a(b.item(c),b.item(c).src)};=0A=
H.prototype.k=3Dfunction(a){var b=3Dthis.i;if(b.length>0)for(var =
c=3Ddocument.getElementsByTagName("a"),d=3Dfunction(g,u){return =
g.innerHTML.indexOf(u)>0},e=3D0;e<c.length;e++)for(var =
f=3D0;f<b.length;f++)if(c.item(e).href=3D=3Db[f][1]){var =
h=3Dc.item(e).parentNode;if(b[f][2])for(var =
k=3Dh,j=3D0;j<4;j++){if(d(k,b[f][2])){h=3Dk;break}k=3Dk.parentNode}a(h,b[=
f][0]);b.splice(f,1);break}};H.prototype.e=3Dfunction(a){this.k(a);this.j=
(a)};H.prototype.a=3Dfunction(a){this.p=3Da};H.prototype.g=3Dfunction(){r=
eturn this.p};=0A=
H.prototype.f=3Dfunction(){return =
this.i.length+this.h};H.prototype.b=3Dfunction(a){this.d=3Da};H.prototype=
.q=3Dfunction(a,b){if(this.d.length>0){for(var =
c=3D0;c<this.d.length;c++)if(this.d[c]=3D=3Da)if(a=3D=3D"js")this.s(b,"go=
ogle_ad_request_done");else a=3D=3D"html"&&this.r();this.o()}};var =
$a=3Dfunction(){window.__google_ad_urls||(window.__google_ad_urls=3Dnew =
H(window));return =
window.__google_ad_urls};q("Goog_AdSense_getAdAdapterInstance",$a);q("Goo=
g_AdSense_OsdAdapter",H);=0A=
q("Goog_AdSense_OsdAdapter.prototype.numBlocks",H.prototype.f);q("Goog_Ad=
Sense_OsdAdapter.prototype.findBlocks",H.prototype.e);q("Goog_AdSense_Osd=
Adapter.prototype.getOsdMode",H.prototype.g);function ab(a,b){try{return =
a.top.document.URL=3D=3Db.URL}catch(c){}return m}function =
bb(a,b,c,d){var =
e=3Dc||a.google_ad_width,f=3Dd||a.google_ad_height;if(ab(a,b))return =
m;var h=3Db.documentElement;if(e&&f){var =
k=3D1,j=3D1;if(a.innerHeight){k=3Da.innerWidth;j=3Da.innerHeight}else =
if(h&&h.clientHeight){k=3Dh.clientWidth;j=3Dh.clientHeight}else =
if(b.body){k=3Db.body.clientWidth;j=3Db.body.clientHeight}if(j>2*f||k>2*e=
)return m}return i}function cb(a,b){for(var c in b)a["google_"+c]=3Db[c]}=0A=
function db(a,b){if(!b)return a.URL;return a.referrer}function =
eb(a,b){if(!b&&a.google_referrer_url=3D=3Dl)return"0";else =
if(b&&a.google_referrer_url=3D=3Dl)return"1";else =
if(!b&&a.google_referrer_url!=3Dl)return"2";else =
if(b&&a.google_referrer_url!=3Dl)return"3";return"4"}function =
fb(a,b,c,d){a.page_url=3Ddb(c,d);a.page_location=3Dl}function =
gb(a,b,c,d){a.page_url=3Db.google_page_url;a.page_location=3Ddb(c,d)||"EM=
PTY"}=0A=
function hb(a,b){var =
c=3D{},d=3Dbb(a,b,a.google_ad_width,a.google_ad_height);c.iframing=3Deb(a=
,d);a.google_page_url?gb(c,a,b,d):fb(c,a,b,d);c.last_modified_time=3Db.UR=
L=3D=3Dc.page_url?Date.parse(b.lastModified)/1000:l;c.referrer_url=3Dd?a.=
google_referrer_url:a.google_page_url&&a.google_referrer_url?a.google_ref=
errer_url:b.referrer;return c}function ib(a){var =
b=3D{},c=3Da.URL.substring(a.URL.lastIndexOf("http"));b.iframing=3Dl;b.pa=
ge_url=3Dc;b.page_location=3Da.URL;b.last_modified_time=3Dl;b.referrer_ur=
l=3Dc;return b}=0A=
function jb(a,b){var c=3Dkb(a,b);cb(a,c)}function kb(a,b){var c;return =
c=3Da.google_page_url=3D=3Dl&&lb[b.domain]?ib(b):hb(a,b)}var =
lb=3D{};lb["ad.yieldmanager.com"]=3Di;var mb=3Dfunction(a,b,c){var =
d=3Dga(b,o,a),e=3Dwindow.onerror;window.onerror=3Dd;try{c()}catch(f){var =
h=3Df.toString(),k=3D"";if(f.fileName)k=3Df.fileName;var =
j=3D-1;if(f.lineNumber)j=3Df.lineNumber;var g=3Dd(h,k,j);if(!g)throw =
f;}window.onerror=3De};q("google_protectAndRun",mb);=0A=
var ob=3Dfunction(a,b,c,d){if(Math.random()<0.01){var =
e=3DJa,f=3D["http://",v,"/pagead/gen_204","?id=3Djserror","&cb=3D",Ka?1:0=
,"&cd=3D",La?1:0,"&context=3D",y(a),"&msg=3D",y(b),"&file=3D",y(c),"&line=
=3D",y(d.toString()),"&url=3D",y(e.URL.substring(0,512)),"&ref=3D",y(e.re=
ferrer.substring(0,512))];f.push(nb());ra(F,f.join(""))}return!Ma};q("goo=
gle_handleError",ob);=0A=
var nb=3Dfunction(){var =
a=3D["&client=3D",y(F.google_ad_client),"&format=3D",y(F.google_ad_format=
),"&slotname=3D",y(F.google_ad_slot),"&output=3D",y(F.google_ad_output),"=
&ad_type=3D",y(F.google_ad_type)];return a.join("")};var =
pb=3Dfunction(a,b,c){if(a.forEach)a.forEach(b,c);else =
if(Array.forEach)Array.forEach(a,b,c);else for(var =
d=3Da.length,e=3Dda(a)?a.split(""):a,f=3D0;f<d;f++)f in =
e&&b.call(c,e[f],f,a)},qb=3Dfunction(a){if(p(a)=3D=3D"array")return =
a.concat();else{for(var =
b=3D[],c=3D0,d=3Da.length;c<d;c++)b[c]=3Da[c];return b}};var =
I=3Dfunction(a,b){this.x=3Da!=3D=3Dundefined?a:0;this.y=3Db!=3D=3Dundefin=
ed?b:0};I.prototype.clone=3Dfunction(){return new =
I(this.x,this.y)};I.prototype.toString=3Dfunction(){return"("+this.x+", =
"+this.y+")"};var =
J=3Dfunction(a,b){this.width=3Da;this.height=3Db};J.prototype.clone=3Dfun=
ction(){return new =
J(this.width,this.height)};J.prototype.toString=3Dfunction(){return"("+th=
is.width+" x =
"+this.height+")"};J.prototype.ceil=3Dfunction(){this.width=3DMath.ceil(t=
his.width);this.height=3DMath.ceil(this.height);return =
this};J.prototype.floor=3Dfunction(){this.width=3DMath.floor(this.width);=
this.height=3DMath.floor(this.height);return this};=0A=
J.prototype.round=3Dfunction(){this.width=3DMath.round(this.width);this.h=
eight=3DMath.round(this.height);return =
this};J.prototype.scale=3Dfunction(a){this.width*=3Da;this.height*=3Da;re=
turn this};var rb=3Dfunction(a,b,c){for(var d in =
a)b.call(c,a[d],d,a)};var =
K,tb,yb,zb,Ab,Bb,Cb,Db,Eb,Fb,Gb=3Dfunction(){return =
o.navigator?o.navigator.userAgent:l},Hb=3Dfunction(){return =
o.navigator},Ib=3Dfunction(){Bb=3DAb=3Dzb=3Dyb=3Dtb=3DK=3Dm;var =
a;if(a=3DGb()){var =
b=3DHb();K=3Da.indexOf("Opera")=3D=3D0;tb=3D!K&&a.indexOf("MSIE")!=3D-1;z=
b=3D(yb=3D!K&&a.indexOf("WebKit")!=3D-1)&&a.indexOf("Mobile")!=3D-1;Bb=3D=
(Ab=3D!K&&!yb&&b.product=3D=3D"Gecko")&&b.vendor=3D=3D"Camino"}};Ib();=0A=
var L=3DK,M=3Dtb,Jb=3DAb,N=3Dyb,Kb=3Dzb,Lb=3Dfunction(){var =
a=3DHb();return =
a&&a.platform||""},Mb=3DLb(),Nb=3Dfunction(){Cb=3DG(Mb,"Mac");Db=3DG(Mb,"=
Win");Eb=3DG(Mb,"Linux");Fb=3D!!Hb()&&G(Hb().appVersion||"","X11")};Nb();=0A=
var Ob=3DCb,Pb=3DDb,Qb=3DEb,Rb=3Dfunction(){var =
a=3D"",b;if(L&&o.opera){var c=3Do.opera.version;a=3Dtypeof =
c=3D=3D"function"?c():c}else{if(Jb)b=3D/rv\:([^\);]+)(\)|;)/;else =
if(M)b=3D/MSIE\s+([^\);]+)(\)|;)/;else =
if(N)b=3D/WebKit\/(\S+)/;if(b){var =
d=3Db.exec(Gb());a=3Dd?d[1]:""}}return =
a},Sb=3DRb(),Tb=3D{},O=3Dfunction(a){return =
Tb[a]||(Tb[a]=3DZa(Sb,a)>=3D0)};var Ub;var Vb=3Dfunction(a){return =
da(a)?document.getElementById(a):a},Wb=3DVb,Yb=3Dfunction(a,b){rb(b,funct=
ion(c,d){if(d=3D=3D"style")a.style.cssText=3Dc;else =
if(d=3D=3D"class")a.className=3Dc;else =
if(d=3D=3D"for")a.htmlFor=3Dc;else if(d in =
Xb)a.setAttribute(Xb[d],c);else =
a[d]=3Dc})},Xb=3D{cellpadding:"cellPadding",cellspacing:"cellSpacing",col=
span:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"w=
idth",usemap:"useMap",frameborder:"frameBorder",type:"type"},Zb=3Dfunctio=
n(a){var b=3Da.document;if(N&&!O("500")&&!Kb){if(typeof a.innerHeight=3D=3D=0A=
"undefined")a=3Dwindow;var =
c=3Da.innerHeight,d=3Da.document.documentElement.scrollHeight;if(a=3D=3Da=
.top)if(d<c)c-=3D15;return new J(a.innerWidth,c)}var =
e=3Db.compatMode=3D=3D"CSS1Compat"&&(!L||L&&O("9.50"))?b.documentElement:=
b.body;return new J(e.clientWidth,e.clientHeight)},$b=3Dfunction(a){var =
b=3D!N&&a.compatMode=3D=3D"CSS1Compat"?a.documentElement:a.body;return =
new I(b.scrollLeft,b.scrollTop)},bc=3Dfunction(){return =
ac(document,arguments)},ac=3Dfunction(a,b){var =
c=3Db[0],d=3Db[1];if(M&&d&&(d.name||d.type)){var e=3D["<",c];d.name&&=0A=
e.push(' name=3D"',Ta(d.name),'"');if(d.type){e.push(' =
type=3D"',Ta(d.type),'"');d=3Dfa(d);delete =
d.type}e.push(">");c=3De.join("")}var =
f=3Da.createElement(c);if(d)if(da(d))f.className=3Dd;else =
Yb(f,d);if(b.length>2){function =
h(g){if(g)f.appendChild(da(g)?a.createTextNode(g):g)}for(var =
k=3D2;k<b.length;k++){var =
j=3Db[k];ca(j)&&!(ea(j)&&j.nodeType>0)?pb(cc(j)?qb(j):j,h):h(j)}}return =
f},dc=3Dfunction(a,b){a.appendChild(b)},ec=3Dfunction(a){return =
a&&a.parentNode?a.parentNode.removeChild(a):l},fc=3Dfunction(a,b){var =
c=3Db.parentNode;=0A=
c&&c.replaceChild(a,b)},gc=3DN&&O("522"),hc=3Dfunction(a,b){if(typeof =
a.contains!=3D"undefined"&&!gc&&b.nodeType=3D=3D1)return =
a=3D=3Db||a.contains(b);if(typeof =
a.compareDocumentPosition!=3D"undefined")return =
a=3D=3Db||Boolean(a.compareDocumentPosition(b)&16);for(;b&&a!=3Db;)b=3Db.=
parentNode;return b=3D=3Da},P=3Dfunction(a){return =
a.nodeType=3D=3D9?a:a.ownerDocument||a.document},cc=3Dfunction(a){if(a&&t=
ypeof a.length=3D=3D"number")if(ea(a))return typeof =
a.item=3D=3D"function"||typeof a.item=3D=3D"string";else =
if(p(a)=3D=3D"function")return typeof a.item=3D=3D=0A=
"function";return =
m},Q=3Dfunction(a){this.c=3Da||o.document||document};Q.prototype.createEl=
ement=3Dfunction(a){return =
this.c.createElement(a)};Q.prototype.createTextNode=3Dfunction(a){return =
this.c.createTextNode(a)};Q.prototype.m=3Dfunction(){return =
this.c.compatMode=3D=3D"CSS1Compat"};Q.prototype.l=3Dfunction(){return =
$b(this.c)};Q.prototype.appendChild=3Ddc;Q.prototype.removeNode=3Dec;Q.pr=
ototype.replaceNode=3Dfc;Q.prototype.contains=3Dhc;var =
ic,jc,kc,lc,mc,nc,oc=3Dfunction(){nc=3Dmc=3Dlc=3Dkc=3Djc=3Dic=3Dm;var =
a=3DGb();if(a)if(a.indexOf("Firefox")!=3D-1)ic=3Di;else =
if(a.indexOf("Camino")!=3D-1)jc=3Di;else =
if(a.indexOf("iPhone")!=3D-1||a.indexOf("iPod")!=3D-1)kc=3Di;else =
if(a.indexOf("Android")!=3D-1)lc=3Di;else =
if(a.indexOf("Chrome")!=3D-1)mc=3Di;else =
if(a.indexOf("Safari")!=3D-1)nc=3Di};oc();var pc=3Dfunction(a,b){var =
c=3DP(a);if(c.defaultView&&c.defaultView.getComputedStyle){var =
d=3Dc.defaultView.getComputedStyle(a,"");if(d)return d[b]}return =
l},R=3Dfunction(a,b){return =
pc(a,b)||(a.currentStyle?a.currentStyle[b]:l)||a.style[b]},qc=3Dfunction(=
a){var b;b=3Da?a.nodeType=3D=3D9?a:P(a):document;if(M&&!(b?new =
Q(P(b)):Ub||(Ub=3Dnew Q)).m())return b.body;return =
b.documentElement},rc=3Dfunction(a){var =
b=3Da.getBoundingClientRect();if(M){var =
c=3Da.ownerDocument;b.left-=3Dc.documentElement.clientLeft+c.body.clientL=
eft;=0A=
b.top-=3Dc.documentElement.clientTop+c.body.clientTop}return =
b},sc=3Dfunction(a){if(M)return a.offsetParent;for(var =
b=3DP(a),c=3DR(a,"position"),d=3Dc=3D=3D"fixed"||c=3D=3D"absolute",e=3Da.=
parentNode;e&&e!=3Db;e=3De.parentNode){c=3DR(e,"position");d=3Dd&&c=3D=3D=
"static"&&e!=3Db.documentElement&&e!=3Db.body;if(!d&&(e.scrollWidth>e.cli=
entWidth||e.scrollHeight>e.clientHeight||c=3D=3D"fixed"||c=3D=3D"absolute=
"))return e}return l},tc=3Dfunction(a){var =
b,c=3DP(a),d=3DR(a,"position"),e=3DJb&&c.getBoxObjectFor&&!a.getBoundingC=
lientRect&&d=3D=3D"absolute"&&(b=3D=0A=
c.getBoxObjectFor(a))&&(b.screenX<0||b.screenY<0),f=3Dnew =
I(0,0),h=3Dqc(c);if(a=3D=3Dh)return =
f;if(a.getBoundingClientRect){b=3Drc(a);var k=3D(c?new =
Q(P(c)):Ub||(Ub=3Dnew Q)).l();f.x=3Db.left+k.x;f.y=3Db.top+k.y}else =
if(c.getBoxObjectFor&&!e){b=3Dc.getBoxObjectFor(a);var =
j=3Dc.getBoxObjectFor(h);f.x=3Db.screenX-j.screenX;f.y=3Db.screenY-j.scre=
enY}else{var =
g=3Da;do{f.x+=3Dg.offsetLeft;f.y+=3Dg.offsetTop;if(g!=3Da){f.x+=3Dg.clien=
tLeft||0;f.y+=3Dg.clientTop||0}if(N&&R(g,"position")=3D=3D"fixed"){f.x+=3D=
c.body.scrollLeft;f.y+=3Dc.body.scrollTop;=0A=
break}g=3Dg.offsetParent}while(g&&g!=3Da);if(L||N&&d=3D=3D"absolute")f.y-=
=3Dc.body.offsetTop;for(g=3Da;(g=3Dsc(g))&&g!=3Dc.body&&g!=3Dh;){f.x-=3Dg=
.scrollLeft;if(!L||g.tagName!=3D"TR")f.y-=3Dg.scrollTop}}return =
f};Jb&&O("1.9");=0A=
var uc=3Dfunction(a,b,c,d){if(/^\d+px?$/.test(b))return =
parseInt(b,10);else{var =
e=3Da.style[c],f=3Da.runtimeStyle[c];a.runtimeStyle[c]=3Da.currentStyle[c=
];a.style[c]=3Db;var =
h=3Da.style[d];a.style[c]=3De;a.runtimeStyle[c]=3Df;return =
h}},vc=3Dfunction(a){var b=3DP(a),c=3D"";if(b.createTextRange){var =
d=3Db.body.createTextRange();d.moveToElementText(a);c=3Dd.queryCommandVal=
ue("FontName")}if(!c){c=3DR(a,"fontFamily");if(L&&Qb)c=3Dc.replace(/ =
\[[^\]]*\]/,"")}var e=3Dc.split(",");if(e.length>1)c=3De[0];return =
Xa(c,"\"'")},wc=3Dfunction(a){var b=3D=0A=
a.match(/[^\d]+$/);return =
b&&b[0]||l},xc=3D{cm:1,"in":1,mm:1,pc:1,pt:1},yc=3D{em:1,ex:1},zc=3Dfunct=
ion(a){var b=3DR(a,"fontSize"),c=3Dwc(b);if(b&&"px"=3D=3Dc)return =
parseInt(b,10);if(M)if(c in xc)return uc(a,b,"left","pixelLeft");else =
if(a.parentNode&&a.parentNode.nodeType=3D=3D1&&c in yc){var =
d=3Da.parentNode,e=3DR(d,"fontSize");return =
uc(d,b=3D=3De?"1em":b,"left","pixelLeft")}var =
f=3Dbc("span",{style:"visibility:hidden;position:absolute;line-height:0;p=
adding:0;margin:0;border:0;height:1em;"});dc(a,f);b=3Df.offsetHeight;ec(f=
);=0A=
return b};var T=3D{};function Ac(a){if(a=3D=3D1)return =
i;return!T[a]}function =
U(a,b){if(a)if(b=3D=3D1)if(T[b])T[b]+=3D","+a;else T[b]=3Da;else =
T[b]=3Da}function Bc(){var a=3D[];for(var b in T)a.push(T[b]);return =
a.join(",")}function Cc(a,b){if(a&&a instanceof Array)for(var =
c=3D0;c<a.length;c++)a[c]&&typeof a[c]=3D=3D"string"&&U(a[c],b)}var =
Dc=3Dm;=0A=
function Ec(a,b){var =
c=3D"script";(Dc=3DFc(a,b))||(a.google_allow_expandable_ads=3Dm);var =
d=3D!Gc();Dc&&d&&b.write("<"+c+' =
src=3D"http://'+v+'/pagead/expansion_embed.js"></'+c+">");var =
e=3DHc(a,b,r("1",0.01)),f=3Dd||e;f&&sa("msie")&&!window.opera?b.write("<"=
+c+' =
src=3D"http://'+v+'/pagead/render_ads.js"></'+c+">"):b.write("<"+c+'>goog=
le_protectAndRun("ads_core.google_render_ad", google_handleError, =
google_render_ad);</'+c+">")}function V(a){return a!=3Dl?'"'+a+'"':'""'}=0A=
function W(a,b){if(a&&b)window.google_ad_url+=3D"&"+a+"=3D"+b}function =
X(a){var b=3Dwindow,c=3DEa(a),d=3Db[a];W(c,d)}function =
Y(a,b){b!=3Dl&&W(a,y(b))}function Z(a){var =
b=3Dwindow,c=3DEa(a),d=3Db[a];Y(c,d)}function $(a,b){var =
c=3Dwindow,d=3DEa(a),e=3Dc[a];if(d&&e&&typeof =
e=3D=3D"object")e=3De[b%e.length];W(d,e)}=0A=
function Ic(a){var b=3Da.screen,c=3Dnavigator.javaEnabled(),d=3D-(new =
Date).getTimezoneOffset();if(b){W("u_h",b.height);W("u_w",b.width);W("u_a=
h",b.availHeight);W("u_aw",b.availWidth);W("u_cd",b.colorDepth)}W("u_tz",=
d);W("u_his",history.length);W("u_java",c);navigator.plugins&&W("u_nplug"=
,navigator.plugins.length);navigator.mimeTypes&&W("u_nmime",navigator.mim=
eTypes.length)}function =
Jc(a){if(a){a=3Da.toLowerCase();if(a.substring(0,3)!=3D"ca-")a=3D"ca-"+a}=
return a}=0A=
function =
Kc(a){if(a){a=3Da.toLowerCase();if(a.substring(0,9)!=3D"dist-aff-")a=3D"d=
ist-aff-"+a}return a}function Lc(a){var =
b=3D"google_unique_id";if(a[b])++a[b];else a[b]=3D1;return a[b]}function =
Mc(){var =
a=3DM&&O("6"),b=3DJb&&O("1.8.1"),c=3DN&&O("525");if(Pb&&(a||b||c))return =
i;else if(Ob&&(c||b))return i;else if(Qb&&b)return i;return m}function =
Gc(){return(typeof ExpandableAdSlotFactory=3D=3D"function"||typeof =
ExpandableAdSlotFactory=3D=3D"object")&&typeof =
ExpandableAdSlotFactory.createIframe=3D=3D"function"}=0A=
function =
Fc(a,b){if(a.google_allow_expandable_ads=3D=3D=3Dm||!b.body||a.google_ad_=
output!=3D"html"||bb(a,b)||Aa(a)||isNaN(a.google_ad_height)||isNaN(a.goog=
le_ad_width)||!Mc())return m;return i}function Nc(){var =
a;if(F.google_ad_output=3D=3D"html"&&!Aa(F)&&Ac(0)){var =
b=3D["6083035","6083034"];a=3DA(b,r("0",0));U(a,0)}return =
a=3D=3D"6083035"}=0A=
function =
Oc(a,b){if((a.google_unique_id||0)=3D=3D0&&a.google_ad_output=3D=3D"html"=
&&document.body&&typeof =
b.body.getBoundingClientRect=3D=3D"function")return =
A(["36812001","36812002"],r("0.01",0));return""}=0A=
function Pc(a){var =
b=3D"";if((a.google_unique_id||0)=3D=3D0&&(a.google_ad_output=3D=3D"js"||=
a.google_ad_output=3D=3D"html")){Aa(a)||(b=3DA(["36813001","36813002","36=
813003","36813004"],r("0.008",0)));if(b=3D=3D"")b=3DA(["36813005","368130=
06"],r("0.008",0))}return b}function Qc(a,b){switch(a){case =
"36813002":b.a(1);b.b(["js"]);break;case =
"36813003":b.a(1);b.b(["html"]);break;case =
"36813004":b.a(2);b.b(["html","js"]);break;case =
"36813006":b.a(0);b.b(["html","js"]);break}}=0A=
function Rc(a){if(a.body)try{return Zb(window)}catch(b){return new =
J(-12245933,-12245933)}else return new J(-1,-1)}=0A=
function Sc(a,b,c,d){var =
e=3DLc(a);c=3Dc.substring(0,1992);c=3Dc.replace(/%\w?$/,"");var =
f=3D"script";if((a.google_ad_output=3D=3D"js"||a.google_ad_output=3D=3D"j=
son_html")&&(a.google_ad_request_done||a.google_radlink_request_done))b.w=
rite("<"+f+' language=3D"JavaScript1.1" =
src=3D'+V(aa(c))+"></"+f+">");else =
if(a.google_ad_output=3D=3D"html")if(Dc&&Gc()){var =
h=3Da.google_container_id||d||l;a["google_expandable_ad_slot"+e]=3DExpand=
ableAdSlotFactory.createIframe("google_ads_frame"+e,aa(c),a.google_ad_wid=
th,a.google_ad_height,=0A=
h)}else{var k=3D'<iframe name=3D"google_ads_frame" =
width=3D'+V(a.google_ad_width)+" height=3D"+V(a.google_ad_height)+" =
frameborder=3D"+V(a.google_ad_frameborder)+" src=3D"+V(aa(c))+' =
marginwidth=3D"0" marginheight=3D"0" vspace=3D"0" hspace=3D"0" =
allowtransparency=3D"true" =
scrolling=3D"no"></iframe>';a.google_container_id?Tc(a.google_container_i=
d,b,k):b.write(k)}}function Uc(a,b,c){if(!a)return m;if(!b)return =
i;return c}=0A=
function Vc(a){for(var b in Ba)a[b]=3Dl;for(b in =
Ca)b=3D=3D"google_correlator"||(a[b]=3Dl);for(b in =
Da)a[b]=3Dl;a.google_allow_expandable_ads=3Dl;a.google_container_id=3Dl;a=
.google_tag_info=3Dl;a.google_eids=3Dl}=0A=
function Wc(a,b){var =
c=3Dl,d=3Dwindow,e=3Ddocument,f=3Dn,h=3Dd.google_ad_format,k=3DXc(d),j;if=
(d.google_cpa_choice!=3Dc){d.google_ad_url=3Dk+"/cpa/ads?";j=3Descape(Jc(=
d.google_ad_client));d.google_ad_region=3D"_google_cpa_region_";X("google=
_cpa_choice");if(typeof =
e.characterSet!=3D"undefined")Y("oe",e.characterSet);else typeof =
e.charset!=3D"undefined"&&Y("oe",e.charset)}else =
if(z(h)){d.google_ad_url=3Dk+"/pagead/sdo?";j=3Descape(Kc(d.google_ad_cli=
ent))}else{d.google_ad_url=3DNc()?k+"/pagead/render_iframe_ads.html#":k+"=
/pagead/ads?";=0A=
j=3Descape(Jc(d.google_ad_client))}d.google_ad_url+=3D"client=3D"+j;X("go=
ogle_ad_host");X("google_ad_host_tier_id");var =
g=3Dd.google_num_slots_by_client,u=3Dd.google_num_slots_by_channel,w=3Dd.=
google_prev_ad_formats_by_region,x=3Dd.google_prev_ad_slotnames_by_region=
;if(d.google_ad_region=3D=3Dc&&d.google_ad_section!=3Dc)d.google_ad_regio=
n=3Dd.google_ad_section;var =
s=3Dd.google_ad_region=3D=3Dc?"":d.google_ad_region;if(z(h)){d.google_num=
_sdo_slots=3Dd.google_num_sdo_slots?d.google_num_sdo_slots+1:1;if(d.googl=
e_num_sdo_slots>4)return m}else if(va(d)){d.google_num_0ad_slots=3D=0A=
d.google_num_0ad_slots?d.google_num_0ad_slots+1:1;if(d.google_num_0ad_slo=
ts>3)return m}else =
if(d.google_cpa_choice=3D=3Dc){d.google_num_ad_slots=3Dd.google_num_ad_sl=
ots?d.google_num_ad_slots+1:1;if(d.google_num_slots_to_rotate){w[s]=3Dc;x=
[s]=3Dc;if(d.google_num_slot_to_show=3D=3Dc)d.google_num_slot_to_show=3Df=
%d.google_num_slots_to_rotate+1;if(d.google_num_slot_to_show!=3Dd.google_=
num_ad_slots)return m}else if(d.google_num_ad_slots>6&&s=3D=3D"")return =
m}W("dt",n);X("google_language");d.google_country?X("google_country"):=0A=
X("google_gl");X("google_region");Z("google_city");Z("google_hints");X("g=
oogle_safe");X("google_encoding");X("google_last_modified_time");Z("googl=
e_alternate_ad_url");X("google_alternate_color");X("google_skip");X("goog=
le_targeting");var =
S=3Dd.google_ad_client;if(g[S])g[S]+=3D1;else{g[S]=3D1;g.length+=3D1}if(w=
[s])if(!z(h)){Y("prev_fmts",w[s].toLowerCase());g.length>1&&W("slot",g[S]=
)}x[s]&&Y("prev_slotnames",x[s].toLowerCase());if(Uc(h,d.google_ad_slot,d=
.google_override_format)){Y("format",h.toLowerCase());=0A=
z(h)||(w[s]=3Dw[s]?w[s]+","+h:h)}else =
if(d.google_ad_slot)x[s]=3Dx[s]?x[s]+","+d.google_ad_slot:d.google_ad_slo=
t;X("google_max_num_ads");W("output",d.google_ad_output);X("google_adtest=
");X("google_ad_callback");X("google_ad_slot");Z("google_correlator");d.g=
oogle_new_domain_checked=3D=3D1&&d.google_new_domain_enabled=3D=3D0&&W("d=
blk",1);if(d.google_ad_channel){Z("google_ad_channel");for(var =
sb=3D"",ub=3Dd.google_ad_channel.split(Yc),wa=3D0;wa<ub.length;wa++){var =
xa=3Dub[wa];if(u[xa])sb+=3Dxa+"+";else u[xa]=3D1}Y("pv_ch",=0A=
sb)}if(d.google_ad_host_channel){Z("google_ad_host_channel");var =
dd=3DZc(d.google_ad_host_channel,d.google_viewed_host_channels);Y("pv_h_c=
h",dd)}Z("google_page_url");$("google_color_bg",f);$("google_color_text",=
f);$("google_color_link",f);$("google_color_url",f);$("google_color_borde=
r",f);$("google_color_line",f);d.google_reuse_colors?W("reuse_colors",1):=
W("reuse_colors",0);X("google_font_face");X("google_font_size");X("google=
_kw_type");Z("google_kw");Z("google_contents");X("google_num_radlinks");X=
("google_max_radlink_len");=0A=
X("google_rl_filtering");X("google_rl_mode");X("google_rt");Z("google_rl_=
dest_url");X("google_num_radlinks_per_unit");X("google_ad_type");X("googl=
e_image_size");X("google_ad_region");Cc(d.google_eids,1);var =
ya;if(Ac(0)){ya=3DA(["36814001","36814002"],r("0",0));U(ya,0)}Y("eid",Bc(=
));var =
vb=3Dd.google_allow_expandable_ads;if(vb!=3Dl)vb?W("ea","1"):W("ea","0");=
Ka&&W("cb",1);La&&W("cd",1);X("google_feedback");Z("google_referrer_url")=
;Z("google_page_location");W("frm",d.google_iframing);=0A=
X("google_bid");X("google_ctr_threshold");X("google_cust_age");X("google_=
cust_gender");X("google_cust_interests");X("google_cust_id");X("google_cu=
st_job");X("google_cust_u_url");X("google_cust_l");X("google_cust_lh");X(=
"google_cust_ch");X("google_ed");X("google_video_doc_id");X("google_video=
_product_type");Z("google_ui_features");Z("google_ui_version");Z("google_=
tag_info");Z("google_only_ads_with_video");Z("google_only_pyv_ads");Z("go=
ogle_with_pyv_ads");Z("google_disable_video_autoplay");var wb=3Dm;=0A=
if(a){Y("dff",vc(a));Y("dfs",zc(a));var B;if(b)if(typeof =
a.getBoundingClientRect=3D=3D"function"){var =
xb=3Da.getBoundingClientRect();B=3D{x:xb.left,y:xb.top}}else{B=3D{};B.x=3D=
"-252738";B.y=3D"-252738"}else =
try{B=3Dtc(a)}catch(sd){B=3D{};B.x=3D"-252738";B.y=3D"-252738"}if(B){wb=3D=
i;Y("adx",B.x);Y("ady",B.y)}}if(wb||ya=3D=3D"36814002"){var =
za=3DRc(e);if(za){Y("biw",za.width);Y("bih",za.height)}}Fa();W("ga_vid",d=
.gaGlobal.vid);W("ga_sid",d.gaGlobal.sid);W("ga_hid",d.gaGlobal.hid);W("g=
a_fc",d.gaGlobal.from_cookie);Z("google_analytics_uacct");=0A=
X("google_ad_override");X("google_flash_version");W("w",d.google_ad_width=
||-1);W("h",d.google_ad_height||-1);Ic(d);return i}function =
Zc(a,b){for(var c=3Da.split("|"),d=3D-1,e=3D[],f=3D0;f<c.length;f++){var =
h=3Dc[f].split(Yc);b[f]||(b[f]=3D{});for(var =
k=3D"",j=3D0;j<h.length;j++){var =
g=3Dh[j];if(!(g=3D=3D""))if(b[f][g])k+=3D"+"+g;else =
b[f][g]=3D1}k=3Dk.slice(1);e[f]=3Dk;if(k!=3D"")d=3Df}var =
u=3D"";if(d>-1){for(f=3D0;f<d;f++)u+=3De[f]+"|";u+=3De[d]}return u}=0A=
function $c(){var =
a=3Dwindow,b=3Ddocument,c=3D$a(),d=3Da.google_enable_osd,e=3D"";if(d=3D=3D=
=3Di){e=3D"36813006";Qc(e,c)}else =
if(d!=3D=3Dm&&Ac(0)){e=3DA(["68120011","68120021","68120031","68120041"],=
r("0",0));if(e=3D=3D""){e=3DOc(a,b);if(e=3D=3D""){e=3DPc(a);e!=3D""&&Qc(e=
,c)}}}U(e,0);var f,h=3Dm,k=3Dm,j=3Dm;switch(e){case =
"68120031":j=3Di;case "68120021":k=3Di;case "68120041":h=3Di;break;case =
"36812002":if(!window.google_atf_included){window.google_atf_included=3Di=
;qa("http://"+v+"/pagead/atf.js")}break}if(h){var g=3D"google_temp_span";=0A=
f=3Da.google_container_id&&Wb(a.google_container_id)||Wb(g);if(!f&&!a.goo=
gle_container_id){b.write("<span id=3D"+g+"></span>");f=3DWb(g)}}var =
u=3Dm;u=3Dk?Wc(f,j):Wc();f&&f.id=3D=3Dg&&ec(f);if(u){c.q(a.google_ad_outp=
ut,a.google_ad_url);Sc(a,b,a.google_ad_url);Vc(a)}}function =
ad(a,b,c,d){var e=3Dob(a,b,c,d);Ec(window,document);return e}=0A=
function bd(){var =
a=3Dwindow,b=3Dl;if(a.google_ad_frameborder=3D=3Db)a.google_ad_frameborde=
r=3D0;if(a.google_ad_output=3D=3Db)a.google_ad_output=3D"html";if(z(a.goo=
gle_ad_format)){var =
c=3Da.google_ad_format.match(/^(\d+)x(\d+)_.*/);if(c){a.google_ad_width=3D=
parseInt(c[1],10);a.google_ad_height=3DparseInt(c[2],10);a.google_ad_outp=
ut=3D"html"}}if(a.google_ad_format=3D=3Db&&a.google_ad_output=3D=3D"html"=
)a.google_ad_format=3Da.google_ad_width+"x"+a.google_ad_height;jb(a,docum=
ent);if(a.google_num_slots_by_channel=3D=3Db)a.google_num_slots_by_channe=
l=3D=0A=
[];if(a.google_viewed_host_channels=3D=3Db)a.google_viewed_host_channels=3D=
[];if(a.google_num_slots_by_client=3D=3Db)a.google_num_slots_by_client=3D=
[];if(a.google_prev_ad_formats_by_region=3D=3Db)a.google_prev_ad_formats_=
by_region=3D[];if(a.google_prev_ad_slotnames_by_region=3D=3Db)a.google_pr=
ev_ad_slotnames_by_region=3D[];if(a.google_correlator=3D=3Db)a.google_cor=
relator=3Dn;if(a.google_adslot_loaded=3D=3Db)a.google_adslot_loaded=3D{};=
if(a.google_adContentsBySlot=3D=3Db)a.google_adContentsBySlot=3D{};if(a.g=
oogle_flash_version=3D=3Db)a.google_flash_version=3D=0A=
ua();if(a.google_new_domain_checked=3D=3Db)a.google_new_domain_checked=3D=
0;if(a.google_new_domain_enabled=3D=3Db)a.google_new_domain_enabled=3D0}f=
unction cd(a){for(var =
b=3D{},c=3Da.split("?"),d=3Dc[c.length-1].split("&"),e=3D0;e<d.length;e++=
){var =
f=3Dd[e].split("=3D");if(f[0])try{b[f[0].toLowerCase()]=3Df.length>1?wind=
ow.decodeURIComponent?decodeURIComponent(f[1].replace(/\+/g," =
")):unescape(f[1]):""}catch(h){}}return b}=0A=
function ed(){var =
a=3Dwindow,b=3Dcd(document.URL);if(b.google_ad_override){a.google_ad_over=
ride=3Db.google_ad_override;a.google_adtest=3D"on"}}function =
Tc(a,b,c){if(a){var =
d=3Db.getElementById(a);if(d&&c&&c.length!=3D""){d.style.visibility=3D"vi=
sible";d.innerHTML=3Dc}}}var Yc=3D/[+, =
]/;window.google_render_ad=3D$c;var =
fd=3D{google:1,googlegroups:1,gmail:1,googlemail:1,googleimages:1,googlep=
rint:1};function gd(a){var =
b=3Da.google_page_location||a.google_page_url;if(!b)return =
m;b=3Db.toString();if(b.indexOf("http://")=3D=3D0)b=3Db.substring(7,b.len=
gth);else =
if(b.indexOf("https://")=3D=3D0)b=3Db.substring(8,b.length);var =
c=3Db.indexOf("/");if(c=3D=3D-1)c=3Db.length;var =
d=3Db.substring(0,c),e=3Dd.split("."),f=3Dm;if(e.length>=3D3)f=3De[e.leng=
th-3]in fd;if(e.length>=3D2)f=3Df||e[e.length-2]in fd;return f}=0A=
function Hc(a,b,c){if(gd(a)){a.google_new_domain_checked=3D1;return =
m}if(a.google_new_domain_checked=3D=3D0){var =
d=3DMath.random();if(d<=3Dc){var =
e=3D"http://"+oa+"/pagead/test_domain.js",f=3D"script";b.write("<"+f+' =
src=3D"'+e+'"></'+f+">");a.google_new_domain_checked=3D1;return =
i}}return m}function =
Xc(a){if(!gd(a)&&a.google_new_domain_enabled=3D=3D1)return"http://"+oa;re=
turn"http://"+pa};var =
hd=3D["30143070","30143071","30143075"],id=3Dtypeof =
window.postMessage=3D=3D"function"||typeof =
window.postMessage=3D=3D"object"||typeof =
document.postMessage=3D=3D"function",kd=3Dfunction(a,b){a.google_allow_ex=
pandable_ads=3Dm;typeof =
A1_googleCreateSlot=3D=3D"function"?A1_googleCreateSlot(a.google_ad_clien=
t):jd(a,b)},md=3Dfunction(){if(!ld())return m;return =
i},nd=3Dfunction(a){if(Aa(a))return m;var =
b=3Da.google_ad_output;if(b&&b!=3D"html")return m;var =
c=3Da.google_ad_client;if(typeof =
c!=3D"string"||c.substring(0,4)!=3D"pub-"&&c.substring(0,=0A=
7)!=3D"ca-pub-")return m;return i},pd=3Dfunction(a){if(typeof =
a.google_a1_eid=3D=3D"string")return a.google_a1_eid;var =
b=3Dr("0.001",0);a.google_a1_eid=3Dod(hd,b);return =
a.google_a1_eid},jd=3Dfunction(a,b){if(!a.google_included_a1_script){var =
c=3D"script",d=3D"/pagead/show_ads_sra3.js?v\x3d1";b.write("<"+c+' =
src=3D"http://'+v+d+'"></'+c+">");a.google_included_a1_script=3Di}},ld=3D=
function(){if(M&&O("8"))return m;return id||!N},od=3Dfunction(a,b){var =
c=3DMath.random();if(c<b){var d=3DMath.floor(c/b*a.length);return =
a[d]}return""};function =
qd(){ed();mb("show_ads.google_init_globals",ad,bd);Ec(window,document)}fu=
nction rd(){if(!md(window)||!nd(window))qd();else =
if(Ma&&window.google_use_a1=3D=3D=3Di)kd(window,document);else{var =
a=3Dpd(window);a&&U(a,0);!a||a=3D=3D"30143070"?qd():kd(window,document)}}=
mb("show_ads.main",ob,rd);=0A=
})()=0A=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ad.doubleclick.net/adj/durhamregion/dr/front;kw=pos=1;sz=1x1;ord=[timestamp]?

document.write('<a =
href=3D\"http://ad.doubleclick.net/click%3Bh=3Dv8/3880/3/0/%2a/t%3B971598=
79%3B0-0%3B0%3B16649702%3B31-1/1%3B20719180/20737073/1%3B%3B%7Eaopt%3D2/0=
/94/0%3B%7Esscs%3D%3fhttp://homes.durhamregion.com/\" =
target=3D\"_blank\" style=3D\"font-family: Arial, Helvetica, =
sans-serif;font-size:13px;font-weight: bold; color: #0000CC\">Looking =
for a new home or an apartment? </a><br> Check out homes, your #1 =
resource for homes and rentals in Durham.\n<br>');=0A=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ad.doubleclick.net/adj/durhamregion/dr/front;kw=pos=2;sz=1x1;ord=[timestamp]?

document.write('<a =
href=3D\"http://ad.doubleclick.net/click%3Bh=3Dv8/3880/3/0/%2a/k%3B971623=
12%3B1-0%3B0%3B16649702%3B31-1/1%3B20719706/20737599/1%3B%3B%7Eaopt%3D2/0=
/94/0%3B%7Esscs%3D%3fhttp://www.411durhamregion.com/index.php?REQ=3Dview&=
id=3D7561&page=3D0&fcat=3D2&fsubcat=3D137\" target=3D\"_blank\" =
style=3D\"font-family: Arial, Helvetica, =
sans-serif;font-size:13px;font-weight: bold; color: #0000CC\">Looking =
for a job? </a><br> Free job search help to people of all ages! Resumes, =
cover letters, faxing, photocopying and more! YMCA Durham Employment =
Services. 905.427.7670.\n<br>');=0A=

------=_NextPart_000_0092_01CA15CF.5B38E7B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ad.doubleclick.net/adj/durhamregion/dr/front;kw=pos=3;sz=1x1;ord=[timestamp]?

document.write('<a =
href=3D\"http://ad.doubleclick.net/click%3Bh=3Dv8/3880/3/0/%2a/t%3B971598=
79%3B0-0%3B0%3B16649702%3B31-1/1%3B20719180/20737073/1%3B%3B%7Eaopt%3D2/0=
/94/0%3B%7Esscs%3D%3fhttp://homes.durhamregion.com/\" =
target=3D\"_blank\" style=3D\"font-family: Arial, Helvetica, =
sans-serif;font-size:13px;font-weight: bold; color: #0000CC\">Looking =
for a new home or an apartment? </a><br> Check out homes, your #1 =
resource for homes and rentals in Durham.\n<br>');=0A=

------=_NextPart_000_0092_01CA15CF.5B38E7B0--

