From: "Saved by Windows Internet Explorer 8"
Subject: newsdurhamregion.com | Courtice teen gears up for business
Date: Wed, 5 Aug 2009 13:16:24 -0400
MIME-Version: 1.0
Content-Type: multipart/related;
	type="multipart/alternative";
	boundary="----=_NextPart_000_0000_01CA15CE.EED47DF0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18049

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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?

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

------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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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
Q0IQ0IQ0IQ0IX//Z

------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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
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
vRVKP/XR/wC8P50Vmy0z/9k=

------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://media.durhamregion.topscms.com/images/38/d2/68c14ff94667a9c8c8804e61a59c.jpeg

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
yY7bqUJZCCHMA5yT1E9tAf/Z

------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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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

------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/App_Themes/NewsDurham/images/MMG76x50.jpg

R0lGODlhTAAyANUAAEePc7XRxgFrQjeMbP79/pXHtJC4qNXv5uj79fP++8vl28Pa0Sl2WQFYM6bG
uVaoiQFiO/r//nSok7fj0wJwRuXp5//6/hZoSeL07fL69h17WGaXhAhpRANmQGeii2erkf/2/PL2
9IOrm2S0lv75+vj9+gtlQ1Kbf/j6+H+5pKO7sTB/Ynuynfv19oDEqv38+0d8Z6PWwwttSA1ePxJv
Tfv3+SlOPfr8/B5vUSRUQQVtRu3x7wp3T/3u9ARqQ////yH5BAAAAAAALAAAAABMADIAAAb/wJ9w
+COAbonIEDFhnQADgDQ6oAI8igPhZbEQCF7lYVSFUq1RQAGBKIFQSS9xTgT/IjfCryS5zDoCAj4d
ECYdOh2DOCc4DCp6QlwtLxkwEBwcPpiaHB00JiYzACcXAAo/L0kkkHStRRYkPwE4EAIUt4ICOoEU
tgMaDQ0AGD83N0KxDjiAgc28gR0rDyYNMwZ6BBGsrkQRKDVeCRINOrsCHZi7FB3rGg/sFDgqQtkl
XwDO+c29GicQOhBWLBCCooQSbt0IkLDwQ8EACD4iogPVQUZETBoGBCrkwU4EJQsY2IpIkqQAGR0y
apBBAcKMFCWEfETY7QeJWAY6sAtULhEE/xoQZPwEYIjHuhWnbhz0wI4TuqccBHAIOAJC0JbDihyk
OeTLDwT+eunU4cNWTx86+s2YGpVDimIxMayAwCNTyYiBONCoYmIqoQsxfjDk2tXrLBNOMQFa10vG
r0x9BUA4geJGTAM4WprQ1yzliUwnTVBoICHPYMLaLLyoiu6uSQocZlS9pRMQAwcEAdQq6zpiS2m1
EOkSoGHgNq56FOjW1BuaiRUAdmIKNEOEkAAMIPLu7emEhn9kEwlo4EAbYXp6VMwI1BvtIBkjgK6b
PhrAgR8fLpUVxN0dOZQ6dNLSCQicJ4QXCHjQQDPNKTICORQMst9JDmTw0HRk9bbXAIeUlf9OLxcM
dJ4dIdXCnmtScQCABhWhlYk6DYjggAbnRNWeDziMYJFO6xwCSAMsxDTiDSk0gM4uvbV0QVWDnIOI
DBsNsAGN/PF3FwcMMKlJZ4cEdJ+BFSzXV4Z3STbACYfokohiHj7w0HxWliTDCSsAwoE56/TVUgCt
bLNVAJvpMGZEZJYlwwc46EKoDyi1CMEDYUlV6EU0uLBga72UY0hLHoSgFT1y3DFTBuOkCMhY+bgV
6HpJarCBSOsEWBYFiFwgDSCgMEioTjwklUACCnVFREjsoLMjBGk2Q+cF7NlVJgQf6FYRImmuc0EB
zEplApISlQNBAwVolcEL9BRRRDYGNND/yyCHkNUZIjHAwAxszU12ApRNKnYUBszCxsE6vI3lAwQA
7GABEiDcoYcXDGGgGy+dqIMISTggkNNizpYkyAUPsFhOgJsKYN1sicAZHloCzDCBBTUkkLASCm3x
wwJR8YRXuxURIkEC/DKT8WsNPKCbu1PdcsEpCqwnHrtoUesDkCiQkIAFMwUbQQYsNDCrTrakqckl
ChCQwAlltdZcNN4h2yQiACTwg8PaCXLnohJpcIAFwCYhmB4RKGDJ3M9A0+gAKLxAwgSCINYedR/U
GWDXM8QQAQkvFNAAlIJMm8hFe4LwEbAEHCN2DEZq0q45T0pWAAoKJcAAozXno85kA/Ty/28vDCAQ
9Q8HXGDXqfqsswEGSkVwsDYEYOBPc6HpQMEFFVCdhwH//HxRIh3kyOJOHUgQAbk/oCBBLZE1N8MM
Bxj/ArnfN7TZ4uwKcEINRRxzgImY5J+/RdSksAJFOpiBAkAHkktdoC/620QHwIWAMMCsBOmKkGvu
BAiAxEB0d0BAdHrBGbEQ7AE4mIoJ2vaDFmTjBxWYCwVMgDl9GGUFCCAACiJgD95ZIk4k2YQucIAB
AthjCwkgXYRwiCQOhMIF2eFBA2LgMvopIQKWu0V7KpKyCRCgBQQkHb64swsgZUBs9UvAARigLs4E
wiJBO4FkeDg5c5FLAf0yYycEYIITAP/LPAj4wOUW5yMTKCAMC/kIBIPxrQYU0irBMGTQBoADByQg
Jig41w8ykIJCKvKShixkDIiRsN4FQnF38eAwqFaCLuCBAAhwgQRWyUpWsmCVI/CAChawgBKsL3Rf
9IYFdlCAD7SylR94pQQ+YIAdgAEFLgjKjXrSgABsJVRFKEEI2JCBBGSgBBkIAQoywM0S7EBIJiTC
DWqglB+EwJraDAE3q5mBcoZADzUIAYfmyJ1BrMABAQhADN55gHwGYAEM8ZwRqLYVIpAAAS+wjAFS
YICw+TABLzjhaT7lgIXWEhUKQJbZuNMAF4iAASBdAApSoAENrMAAEXDZERjignAJ6Vf/JOiBHDIQ
AA3QADeDecEMbxDRj4DhGH7jgARKKY4Fwa43u5CBAgIwl+4l4Bd0qcAQWiAEOFqHHillSARCADMG
XGAeP7AmHTz1g4Qp5QECkMAqDpAouW3ONZMJQQW8Ew+HEEUDvPNAFAwQg7kMQAIAgIETGDABFwT2
AQcoAQx4oIIEBRYLKoDBAyQAgxUwsQAw2ECiUlCgAkCkUYuL3A3mKoGoeCAFD2HADzxwgRS4YAYf
OEEDPrAAPa5gADNYgQ5OkAIZtG0APGjpbLM2ggngoAEe+AAHBhCDAVzAAdHZWQkAsA4aVLA5DDjF
AQAwi+cdALcrwMAMKqVHGCjoLQWY/8EAFqCAFTDwEwsAgAwKgIECTCBdphiADwIwAZNugAcVS5cB
5Lqqf721JBBgQQ0isF25dIABKOCQ3RrAgAI4QAUB2EAD3iICDpxAqnPBDQ0oEIDFqiBMABjHCRYw
ABmw16Ty1QAGDMADCaBgAgvqEW0I1ZMQCeEAdhQBtJ5KAQYkgMITKEEFHKBhFgTgBBQo2A8A0FEM
hOK7NDCAZgtguQ1MAB8TaO8KTkADDSSABRQQQQQmcAGrGHFeYhmLMyswDhYsIHIO+IM1ZKuGDYjA
chf4hQBoEIAMxMAHJygtAGKAleyswL3SuECMxjeDArAoBbSwbAYc4IHA2iAHObCBqP9FDYPMTmC0
MbBvCBwZABU4AJ89iIEHZLSDA6wSw1wmRgsmIAERqOAAC3BAAWIwgVkXVgKvdsACAmBhBUzgAyJw
wQgK8Md49qAC2M62tluwAxSAoAUKUAACDodtbqJArikIM5+kuQMTIgCfAfAUBnbQg/C1oAYooObV
zlmBcB9Ad0WQqwoKcM1spHQIH0l4Hj4S0QSwdgI13QBVE36ADUB7A3NQjghEYJ9fmUswdbiDEBLw
KhE1VAgjAICnEl6CVXzh5V1YSAJYF4H8pLwDKdiBChqrgBTA4AQOiMEODOCAAkkguyhggbCDroBm
WxjDKiD6BITQuFOoAAcG6OcJBjD/ri904eun2QIrYiGBKmygAyOI7QcesAK9xhIABoBCClAAgwH0
MwUS0IBXceACafAAtSfQa9V/kHerMyBeG6i7MZNQvAzMpKAjp6oHCiADA1yABTDWe20fEHdl/J0A
dDqAChhgABk4YAIChAEAOGCA2MZ9AgLBzwoq8OQBWDoGqEWAVM/j0xCsoAA0WIBvAWDZX5yAASf4
gAZWNOYIOKDCHvh9ljHw9xWwgAGMhLs7Zl8C70B3BRlZxC+iYKAw7EABtKzABBZwgAsjYAEGoOU/
L1yAACRUAUQPAPpreQCll2ACIkBLLNBIC5A8/0RLB1B/+Hd6GFZ+2fArxzBJPAULMC9QAiVwblsw
QxnQAiBAORZ4gTTUBQlwAxYABzegADSAFBHQgS9AQ5NgS1oROigQBAA7

------=_NextPart_000_0000_01CA15CE.EED47DF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://newsdurhamregion.com/tops-counter?uid=129439&counter=

R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=

------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/topletsresources/news/phototoplet/css/thestar.css

BODY {
=09
}
.thestarphotoplayer {
	TEXT-ALIGN: left
}
.thestarphotoplayer .PP-ImageHolder {
	POSITION: relative; BACKGROUND-COLOR: #000; WIDTH: 404px; HEIGHT: 300px
}
.thestarphotoplayer .PP-Prev {
	BORDER-BOTTOM: #fff 1px solid; POSITION: absolute; BORDER-LEFT: #fff =
1px solid; WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: center 50%; HEIGHT: 14px; COLOR: black; BORDER-TOP: =
#fff 1px solid; TOP: 4px; CURSOR: pointer; BORDER-RIGHT: #fff 1px solid
}
.thestarphotoplayer .PP-Next {
	BORDER-BOTTOM: #fff 1px solid; POSITION: absolute; BORDER-LEFT: #fff =
1px solid; WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: center 50%; HEIGHT: 14px; COLOR: black; BORDER-TOP: =
#fff 1px solid; TOP: 4px; CURSOR: pointer; BORDER-RIGHT: #fff 1px solid
}
.thestarphotoplayer .PP-Play {
	BORDER-BOTTOM: #fff 1px solid; POSITION: absolute; BORDER-LEFT: #fff =
1px solid; WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: center 50%; HEIGHT: 14px; COLOR: black; BORDER-TOP: =
#fff 1px solid; TOP: 4px; CURSOR: pointer; BORDER-RIGHT: #fff 1px solid
}
.thestarphotoplayer .PP-Pause {
	BORDER-BOTTOM: #fff 1px solid; POSITION: absolute; BORDER-LEFT: #fff =
1px solid; WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: center 50%; HEIGHT: 14px; COLOR: black; BORDER-TOP: =
#fff 1px solid; TOP: 4px; CURSOR: pointer; BORDER-RIGHT: #fff 1px solid
}
.thestarphotoplayer .PP-Prev {
	BACKGROUND-IMAGE: =
url(/topletsresources/news/PhotoToplet/images/prev2.gif); LEFT: 6px
}
.thestarphotoplayer .PP-Next {
	BACKGROUND-IMAGE: =
url(/topletsresources/news/PhotoToplet/images/next2.gif); LEFT: 40px
}
.thestarphotoplayer .PP-Play {
	BACKGROUND-IMAGE: =
url(/topletsresources/news/PhotoToplet/images/play2.gif); LEFT: 23px
}
.thestarphotoplayer .PP-Pause {
	BACKGROUND-IMAGE: =
url(/topletsresources/news/PhotoToplet/images/pause2.gif); LEFT: 23px
}
.thestarphotoplayer .PP-Controls {
	POSITION: relative; BACKGROUND-COLOR: #fff; WIDTH: 404px; HEIGHT: 25px
}
.thestarphotoplayer .PP-Controls .PP-mouseover {
	BORDER-BOTTOM: #eb4600 1px solid; BORDER-LEFT: #eb4600 1px solid; =
BORDER-TOP: #eb4600 1px solid; BORDER-RIGHT: #eb4600 1px solid
}
.thestarphotoplayer .PP-ThumbHolder {
	POSITION: relative; WIDTH: 325px; PADDING-RIGHT: 2px; FLOAT: right; =
HEIGHT: 25px; OVERFLOW: hidden; RIGHT: 4px
}
.thestarphotoplayer .PP-Thumbs {
	POSITION: absolute; COLOR: #fff
}
.thestarphotoplayer .PP-Thumbs .imgthumb {
	BORDER-BOTTOM-COLOR: ; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; =
BORDER-RIGHT-WIDTH: medium; BORDER-TOP-COLOR: ; PADDING-LEFT: 2px; =
WIDTH: 18px; PADDING-RIGHT: 2px; BACKGROUND-REPEAT: no-repeat; =
FONT-FAMILY: Arial; BACKGROUND-POSITION: center 50%; FLOAT: left; =
BORDER-TOP-WIDTH: medium; BORDER-BOTTOM-WIDTH: medium; HEIGHT: 18px; =
COLOR: #eb4600; BORDER-RIGHT-COLOR: ; FONT-SIZE: 11px; =
BORDER-LEFT-COLOR: ; BORDER-LEFT-WIDTH: medium; CURSOR: pointer; =
FONT-WEIGHT: bold; PADDING-TOP: 2px
}
.thestarphotoplayer .PP-Thumbs .imgthumbon {
	BORDER-BOTTOM-COLOR: ; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; =
BORDER-RIGHT-WIDTH: medium; BORDER-TOP-COLOR: ; PADDING-LEFT: 2px; =
WIDTH: 18px; PADDING-RIGHT: 2px; BACKGROUND-REPEAT: no-repeat; =
FONT-FAMILY: Arial; BACKGROUND-POSITION: center 50%; FLOAT: left; =
BORDER-TOP-WIDTH: medium; BORDER-BOTTOM-WIDTH: medium; HEIGHT: 18px; =
COLOR: #eb4600; BORDER-RIGHT-COLOR: ; FONT-SIZE: 11px; =
BORDER-LEFT-COLOR: ; BORDER-LEFT-WIDTH: medium; CURSOR: pointer; =
FONT-WEIGHT: bold; PADDING-TOP: 2px
}
.thestarphotoplayer .PP-Thumbs .PP-mouseover {
	BORDER-BOTTOM-COLOR: ; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; =
BORDER-RIGHT-WIDTH: medium; BORDER-TOP-COLOR: ; PADDING-LEFT: 2px; =
WIDTH: 18px; PADDING-RIGHT: 2px; BACKGROUND-REPEAT: no-repeat; =
FONT-FAMILY: Arial; BACKGROUND-POSITION: center 50%; FLOAT: left; =
BORDER-TOP-WIDTH: medium; BORDER-BOTTOM-WIDTH: medium; HEIGHT: 18px; =
COLOR: #eb4600; BORDER-RIGHT-COLOR: ; FONT-SIZE: 11px; =
BORDER-LEFT-COLOR: ; BORDER-LEFT-WIDTH: medium; CURSOR: pointer; =
FONT-WEIGHT: bold; PADDING-TOP: 2px
}
.thestarphotoplayer .PP-Thumbs .imgthumbon {
	COLOR: #39f
}
.thestarphotoplayer .PP-Thumbs .PP-mouseover {
	BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: =
medium none; BORDER-RIGHT: medium none
}
.thestarphotoplayer .PP-Display {
	Z-INDEX: 10; POSITION: absolute; WIDTH: 404px; BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: 50% top; HEIGHT: 300px; TOP: 0px; LEFT: =
0px
}
.thestarphotoplayer .PP-Abstract {
	Z-INDEX: 10; POSITION: absolute; WIDTH: 404px; BACKGROUND-REPEAT: =
no-repeat; BACKGROUND-POSITION: 50% top; HEIGHT: 300px; TOP: 0px; LEFT: =
0px
}
.thestarphotoplayer .PP-Abstract {
	Z-INDEX: 30; DISPLAY: none
}
.thestarphotoplayer .PP-Title {
	MARGIN: 5px; FONT-FAMILY: Verdana; COLOR: #fff
}
.thestarphotoplayer .PP-Credit {
	MARGIN: 5px; FONT-FAMILY: Verdana; COLOR: #fff
}
.thestarphotoplayer .PP-Body {
	MARGIN: 5px; FONT-FAMILY: Verdana; COLOR: #fff
}
.thestarphotoplayer .PP-Title {
	FONT-SIZE: 17px; FONT-WEIGHT: bold
}
.thestarphotoplayer .PP-largetitle {
	FONT-SIZE: 13px; FONT-WEIGHT: bold
}
.thestarphotoplayer .PP-Credit {
	FONT-SIZE: 11px
}
.thestarphotoplayer .PP-Body {
	FONT-SIZE: 10px
}
.thestarphotoplayer .photocredit {
	POSITION: absolute; FILTER: alpha(opacity=3D50); PADDING-BOTTOM: 0px; =
LINE-HEIGHT: 14px; BACKGROUND-COLOR: #000000; PADDING-LEFT: 0px; BOTTOM: =
0px; PADDING-RIGHT: 0px; COLOR: #ffffff; FONT-SIZE: 10px; RIGHT: 0px; =
PADDING-TOP: 0px; -moz-opacity: .50; opacity: .50
}

------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_005F_01CA15CE.EEFB3FD0"


------=_NextPart_001_005F_01CA15CE.EEFB3FD0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/article/129439

=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 | Courtice teen gears up =
for business</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"><LINK=20
rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://newsdurhamregion.com/topletsresources/news/phototoplet/css=
/thestar.css"><!--[if IE 6]><link =
href=3D"/topletsresources/news/phototoplet/css/thestarie6.css" =
rel=3D"stylesheet" type=3D"text/css" /><![endif]-->
<SCRIPT language=3Djavascript type=3Dtext/javascript=20
src=3D"http://newsdurhamregion.com/Toplets/news/maps/loadmaps.js"></SCRIP=
T>

<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/129439>
<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"Courtice teen gears up for business : Article | =
newsdurhamregion.com"
s.server=3D"corporate"
s.channel=3D"newsdurhamregion.com"
s.pageType=3D""
s.prop1=3D""
s.prop2=3D"Courtice teen gears up for business"
s.prop3=3D129439
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/Courtice teen gears up for =
business"
/************* 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/129439";
                        }
                    </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%2f129439';
                        =
updateControlContent2('ctl00$LoginView1_ContentArea', =
'/control-update?assetId=3D129439&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">Courtice teen gears up for =
business</H4>
<DIV class=3DarticleImage>
<DIV=20
id=3Dctl00_mainContent_article_SideLinks_Template0_If2_TrueTemplate0_thes=
tarphotoplayer__PhotoWrapper=20
class=3Dthestarphotoplayer>
<DIV class=3DPP-ImageHolder>
<DIV class=3DPP-Display></DIV>
<DIV class=3DPP-Abstract>
<DIV class=3DPP-Title></DIV>
<DIV class=3DPP-Credit></DIV>
<DIV class=3DPP-Body></DIV></DIV></DIV>
<DIV class=3D"PP-Controls hideifsingle">
<DIV class=3D"PP-Prev hideifsingle"></DIV>
<DIV class=3D"PP-Next hideifsingle"></DIV>
<DIV class=3D"PP-Play hideifsingle"></DIV>
<DIV class=3D"PP-ThumbHolder hideifsingle">
<DIV class=3DPP-Thumbs></DIV></DIV></DIV></DIV>
<SCRIPT id=3Djsphotoplayer language=3Djavascript type=3Dtext/javascript>
new =
PhotoPlayerObj("ctl00_mainContent_article_SideLinks_Template0_If2_TrueTem=
plate0_thestarphotoplayer__PhotoWrapper",0,8,[

{
"Display":{"display":"<div class=3D'photocredit'>PHOTO BY WALTER =
PASSARELLA</div>","background":"http://media.durhamregion.topscms.com/ima=
ges/a3/97/e5ef018745a7883e5332274f603d.jpeg", =
"onmouseover":"this.playerobj.pauseClick();this.playerobj.setOpacity('PP-=
Display', 50);this.playerobj.show('PP-Abstract');"},=20
"Abstract":{"onmouseout":function(event) {if =
(this.playerobj.mouseLeaves(this, event)) =
{this.playerobj.hide('PP-Abstract');this.playerobj.setOpacity('PP-Display=
', 100);this.playerobj.resumeClick();}}},
"Title":{"display":"Courtice teen gears up for business","onload":"if(35 =
> 37) { this.playerobj.addClass('PP-Title', 'PP-largetitle'); } else { =
this.playerobj.removeClass('PP-Title', 'PP-largetitle'); }"},
"Credit":{"display":""},
"Body":{"display":"COURTICE -- Cole Towie opened up his own business for =
the summer, fixing up BMX bikes from his garage. He did this through the =
Province's Summer Company program. June 22,2009"}
}
]);


</SCRIPT>
</DIV>
<DIV id=3DarticleMap>
<DIV style=3D"WIDTH: 365px; HEIGHT: 300px"=20
id=3Dctl00_mainContent_article_SideLinks_Template0_If2_TrueTemplate0_chec=
kFormarkers_TrueTemplate0_map_UserControlMap></DIV>
<SCRIPT type=3Dtext/javascript>
//<![CDATA[
if (typeof topsMapObjects =3D=3D "undefined") topsMapObjects=3D[]
topsMapObjects.push({
mapid:"ctl00_mainContent_article_SideLinks_Template0_If2_TrueTemplate0_ch=
eckFormarkers_TrueTemplate0_map_UserControlMap",
center:{lat:"0",lon:"0"},
zoom:"10",
domain:"Durham",
url:"/129439",
items:[{listing:"129439",zoomto:true}]
})
//]]>
</SCRIPT>
</DIV>
<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/129439?path=3D/article/129=
439')">Email=20
  this Article</A> </LI>
  <LI class=3Dprint><A=20
  href=3D"http://newsdurhamregion.com/articlePrint/129439">Print this=20
Page</A></LI>
  <LI class=3Dtypo><A =
href=3D"javascript:openWin('/emailCorrection/129439')">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 style=3D"BORDER-LEFT: #eb4600 2px solid; PADDING-LEFT: 5px">
<P class=3Ddate>Jun 24, 2009 - 05:10 PM</P>
<P class=3Dauthor><A href=3D"mailto:mmancini@durhamregion.com">By =
Melissa=20
Mancini</A> </P></DIV>
<DIV style=3D"MARGIN-TOP: 6px"></DIV>
<P>DURHAM -- At just 15, Cole Towie has already begun the business that =
may=20
jump-start his career.
<P>He's not even old enough to drive, but Cole, who had a job at a farm =
last=20
summer, will spend this season while school's out as the CEO of his own =
company.
<P>The Courtice High student has been riding BMX bikes since he was 11 =
years=20
old. The hobby quickly became his passion and, in addition to riding, he =
started=20
learning repair techniques to keep his cycle in good shape. He even =
builds his=20
own bikes. His current ride is a BMX with blue handle bars he put =
together two=20
years ago.
<P>"I started out ripping my friends' bikes apart and fixing them," said =
Cole,=20
who will be going into Grade 11 in September.
<P>Now he's opening up his family's immaculate garage so he can fix =
bikes for=20
anyone who enjoys a nice ride. Cole's shop features his bikes hanging =
from the=20
walls and a display case that, in its former life, was a make-up =
counter. The=20
case features some of the parts he can order for customers.
<P>Cole's company is called Prodige BMX. In addition to fixing any kind =
of bike,=20
he will also be available to build custom BMX bikes and will sell parts =
that he=20
buys from a wholesaler to do-it-yourselfers.
<P>Cole is funding his venture with help from a grant from the Ontario=20
Government. It's part of a program called Summer Company, where youth =
ages 15 to=20
29 can apply to launch their own startups with financial help and moral =
support.
<P>Locally, the program is run by the Business Advisory Centre Durham. =
Students=20
are chosen to participate through an extensive application process where =
they=20
have to draw up a business plan, said Wenda Abel, co-ordinator at the =
centre.
<P>Those who are approved for the program are eligible for up to $3,000. =
They=20
are given a mentor to help with aspects of running a business and attend =
classes=20
to help with things like marketing and book-keeping.
<P>Cole is among 20 Durham youth approved for the program this year. Ms. =
Abel=20
said many of the business plans submitted were stellar and she thinks =
the centre=20
is going to have some very successful entrepreneurs. The new companies =
are=20
diverse, offering a variety of services and products from music lessons =
to=20
landscaping to handmade jewelry.=20
<P>Cole heard about the program from his cousin and jumped at the chance =
to=20
apply. He said it fit in perfectly with his long-term goal of opening =
his own=20
bike repair store.
<P>It's only a few weeks into the program but Cole said he's already =
happy he is=20
part of Summer Company.
<P>"I am so glad I did this," he said. "I would recommend it to any kid =
with the=20
confidence to do it."
<P>Cole said he's noticed the popularity of the sport growing locally =
and hopes=20
that will mean a successful summer.
<P>"More and more kids are getting into it," he said. "Even the little =
kids will=20
watch us do tricks out of the bowl and be fascinated."
<P>Regardless of how the summer venture pans out, Cole's dad Hugh is =
already=20
beaming when he talks about his son's accomplishments.
<P>"I am so proud of him," Mr. Towie said. "He's done this all on his =
own."
<P>E-mail: <A =
href=3D"mailto:prodigebmx@rogers.com">prodigebmx@rogers.com</A>
<P>Phone: 289-240-4256 </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%2f129439';
                        =
updateControlContent2('ctl00$mainContent$article_Body$Template0$ufav1_Con=
tentArea', =
'/control-update?assetId=3D129439&virtualPath=3D/article','id=3Dctl00$mai=
nContent$article_Body$Template0$ufav1&source=3D~/Toplets/User/UserFavorit=
esButton.ascx&duration=3D-1&AssetUid=3D129439&' + 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%2f129439';
                        =
updateControlContent2('ctl00$mainContent$article_Body$Template0$rec11_Con=
tentArea', =
'/control-update?assetId=3D129439&virtualPath=3D/article','id=3Dctl00$mai=
nContent$article_Body$Template0$rec11&source=3D~/Toplets/Counter/Recommen=
dButton.ascx&duration=3D-1&AssetUid=3D129439&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/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/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/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%2f129439';
                        =
updateControlContent2('ctl00$LoginWindow1_ContentArea', =
'/control-update?assetId=3D129439&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%2f129439';
                        =
updateControlContent2('ctl00$RegisterUserWindow1_ContentArea', =
'/control-update?assetId=3D129439&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=3D129439&amp;counter=3D=
" width=3D0=20
height=3D0></BODY></HTML>

------=_NextPart_001_005F_01CA15CE.EEFB3FD0
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_005F_01CA15CE.EEFB3FD0--

------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://newsdurhamregion.com/Toplets/news/maps/loadmaps.js


if (typeof document.insertjs =3D=3D "undefined") {
	document.insertjs =3D function(url){
		document.write('<scr'+'ipt type=3D"text/javascript" =
src=3D"'+url+'"></scr'+'ipt>')
	}
}

if (typeof document.loadjs =3D=3D "undefined") {
	document.loadjs =3D function(url){
		scriptEl=3Ddocument.createElement("script")
		scriptEl.setAttribute("type","text/javascript")
		scriptEl.setAttribute("charset","utf-8")
		scriptEl.setAttribute("src",url)
		document.getElementsByTagName('head')[0].appendChild(scriptEl)
	}
}

if (typeof document.addLoadEvent =3D=3D "undefined") {
	document.addLoadEvent =3D function (func) {
		if (typeof func =3D=3D "string") {
			var funcstr =3D func
			func =3D function(){return eval(funcstr)}
		}
		var oldonload =3D window.onload
		if (typeof window.onload !=3D 'function') {
			window.onload =3D func
		} else {
			window.onload =3D function() {
				oldonload()
				func()
			}
		}
	}
}

if (typeof document.waitUntilExists =3D=3D "undefined") {
	document.waitUntilExists =3D function (obj,func) {
		if (typeof obj =3D=3D "undefined") {
			window.setTimeout(1000,function(){waitUntilExists(obj,func)})
		} else {
			func()
		}
	}
}



// load required libraries
if (typeof jsonreq =3D=3D "undefined") {
	document.loadjs('/toplets/news/maps/jsonreq.js')
}

if (typeof $ =3D=3D "undefined") {
	document.loadjs('/toplets/news/maps/prototype.lite.js')
}

if (typeof GMap2 =3D=3D "undefined") {
	switch (window.location.hostname) {
		case "newsdurhamregion.com":
			GMapKey =3D =
"ABQIAAAAnOSPxsdu2twg-MQP-aUhFRTh6q0TbuDUY8Vlb5nKigJ_aRP5_xSQ0xm46YdF-Umn=
ZWMdt0q5kM_IdA"
			break
		case "www.newsdurhamregion.com":
			GMapKey =3D =
"ABQIAAAAnOSPxsdu2twg-MQP-aUhFRSBdH4iGjYOi6kpBDYxODxX7mygaxTrZe7omWwn2XiB=
Dq_-QYx2-RTcvQ"
			break
		case "durhambeta.torstardigital.com":
		    GMapKey =3D =
"ABQIAAAAnOSPxsdu2twg-MQP-aUhFRTrqsY_lnJUKvDQD_U4tC6ljZ1XnRR71E-BRM81rXj7=
NJ36Qbza0u3K0w"
		    break
		case "durhambeta.qa.torstardigital.net":
			GMapKey =3D =
"ABQIAAAAnOSPxsdu2twg-MQP-aUhFRRFMlLxXGyqtdZX2n4iMZhan-ESoxTEc-sL1kOoKCm5=
bF6aqVIgiPVoow"
			break
		case "durhamebeta.staging.torstardigital.net":
			GMapKey =3D =
"ABQIAAAAejUldDUpOvZzkh2F748ThBSyCPAXkq1arLelFEurottzfxF9MBRJYbQ4K5jtvtgv=
1ikr0HX5_R74fQ"
			break
		case "localhost":  // on port 8500 only
			GMapKey =3D =
"ABQIAAAAnOSPxsdu2twg-MQP-aUhFRR0KYGYL5tnJOWmHHBeiqHaGdIO-RT-I-5Xv5gi7MeP=
mx7fpO9KQxb00Q"
			break
		default:
			GMapKey =3D ""
	}
	if (GMapKey) =
document.insertjs('http://maps.google.com/maps?file=3Dapi&v=3D2&key=3D'+G=
MapKey)
}

if (typeof topsMap =3D=3D "undefined") {
	=
document.addLoadEvent(function(){document.loadjs('/toplets/news/maps/tops=
map.js')})
}
else {
	topsMap.initMaps()
}
------=_NextPart_000_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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_0000_01CA15CE.EED47DF0
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/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_0000_01CA15CE.EED47DF0
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/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_0000_01CA15CE.EED47DF0
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/q%3B971623=
12%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_0000_01CA15CE.EED47DF0--

