From: <Saved by Windows Internet Explorer 7>
Subject: TIMEDlines - A reason: CHRONIC PAIN
Date: Sun, 17 Feb 2008 12:45:23 -0600
MIME-Version: 1.0
Content-Type: multipart/related;
	type="multipart/alternative";
	boundary="----=_NextPart_000_005B_01C87162.F63C74B0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198

This is a multi-part message in MIME format.

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://bp1.blogger.com/_qHAeJQmZP0M/R7cdN_gB-_I/AAAAAAAAAU4/wguFmqbCDQQ/s320/03557.photo00.photo.jpg

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
8/2X/9k=

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.blogger.com/img/icon18_email.gif

R0lGODlhEgANAOMAAIqKioCAgOXl5f////Ly8urq6uTk5AAAAMzMzLS0tBoaGjMzM2ZmZk1NTf//
/////ywAAAAAEgANAAAEWRDISSsIk+jN+QUIQAxkaRIgVoSjWaKIoa6iOxygIQNFz56Lg27X89UO
isMiqZv1AAnRgdFYHoROqEAAQCqZxIJ2SxYsA03euLw9CBJozJpdhmMC+Lx+j48AADs=

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.blogger.com/img/icon18_edit_allbkg.gif

R0lGODlhEgASAOMAANDHu6pqNFRTUOWjJQAAABYWFhAJA9CPKUk1ErmIF+KjUygVBjMmBv/BMfy2
I9DHuyH5BAEAAA8ALAAAAAASABIAAARP8MlJq72TYLyM3hQRBB4oFcoxlhujAMAKIk6jKMKHIY0z
qLoLz3dIFEAMBzGBABkGy+aGkCAGpBjRcmEKAFKB4KUAg4kvhPJ5TCBgTfBKBAA7

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://buttons.blogger.com/bloggerbutton1.gif

R0lGODlhWAAfAOYAAPjx6P9mAABDev///+jcy8i1n+/m2e3j1ezi1O7k1vTr4fPr4PTs4vXt4vLp
3vPq3/Hp3fHo2/Dn2kJxl7bDy/+zgOfl4SFaiRFPgYSgtf/Zv/8AAP+MQFN9nw5NgNfa2XSUrf+W
UB1XhjJmkDxsk8bO0jxskv9wEGOJpjtrkUFwlrW/xJWrvLS+wrW/w/ngy//Gn/yaV9LSzrW/xdXW
0ztskv/iz0p2mPmWUsTKy/5uDvDUu0t3mZeruLbAxkt2mdXV0sTJybO/xv/s3/HWvlqAnvmVUYae
r4efsP9vD1F7naW0vcTKyniVqmmLpdTU0ZWptf+DMJirueTg2ixhjNTW1Et2mC1ijYegsniWq7O+
xv/172iKo6e2v5aruKSzu7TAxsPJzP+fYJaptsPIyHmWrGqMpkp1l2mLpLO9wQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5
BAEAABsALAAAAABYAB8AAAf/gBsbBISFhoeIiYqLjI2OiIKDCJOUlZaXmJmam5ydlwSDB6KjpKWm
p6ipqqusqAUECbE7RgG1tre4tkY7sb2+v8DBwsPEwa8GBkQ6uczMOkTI0SkpUNFcKWdf0dvc3d7f
4NHHBjjN5rg43Gkp2ylHRyLh8vPzrxIS5/m29/wtNfwSarSQIUDGGA8iyCC5IcEDEn8Sbghg2IJK
QYAYM2q89ypCBGYhKogUKeaEOY8oXZhAGcFEERErPSxBYyKIBxcCrDQpskREBBEuXIgIwrKo0aMo
X0GAgOuEhgFQow7YEqLZ0qsrTFyFYALLCghMBEBYIVaAkx8efnjJIqDtiqxb/+PKnbv1lQMHuJ5K
3RuF2d2/M0j8dUBixl8BT3oIJuGhhwgROXKIACx4sOXLmP++evDgVoi9oGEw40z6igcppEn4IG3G
g4AuD8oIAMLDA+faHoD4IEG6t+/fwB+8WrDgVoWoMDgo/wx1CDPi0KNLh05jyvToNGhc385d+isF
CoxHrVrrxJCoJnGBX8++vZYw7ePLn0+f/isGDMRHtaFBr1QNHNyC34BKqGCgEkLgJ4QAKgzo4IMQ
RijhhPi90kAD+oEGWgW3XOhhWyAKUEUDYDDo4Ykopqjiiixe+AoAAGSooVQc2gLjjW0BYEEHAmQA
AAUCTHDjkEQWaeSRSML4Yv+Mthy3X3/92UDjLUTmCAAIPf4YJIwWoNAWChbAWMIFAoCQQQdcThAk
CxN8AGMGGAQZJgAdZOAlC0QumSF5nkVVYy1V9ggCBheECaSQAKh5AZmIknlBnALA6CWhbVEAAAsC
XDDClgC09ailQ+rZJHLKlcoBDH5SOWSIZcJ4qI4CYGCBBXFa8EGsWkYKAJkl0CqApZu6SWaYbX0w
Z6gEwNjnjHsFaOOqv1KwKQhaCvlqotFyaqWValraVgYZkOmtrkWKaot/zGqAS6Cu5vjqtd1eu62u
3XYa5AT4umlluckyaYtTzA6gQXrP4qhrBu5uaUGss9Z6Kwa5wsirr8AKUALHu0aa69lIHFfg7LrQ
4tsWmkBi4KOijEoswAiQSpopmb8CgDAGE7AM47559quPPkRCOvKcm6K5489ikomlrhaoWXPMMsPc
gZsYQJxxvzHsbE4MSWaNJM4w1qs1vzC+kITVuSTxwtdfs2AmjxeIiUIGR7uJNrI3vlA12bXEcPbc
WfPYFgZ4yhwitXzfuGThiPNdAgUUHAvAB4zLnXgBGxSQ+OWYZ65kJAV07vnnoIcu+uikl2766aFH
ovrqrLfu+uuwxy777IIEAgA7

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/css/blog_controls.css

.item-control {
	DISPLAY: none
}
.item-control A {
	TEXT-DECORATION: none! important
}
.item-action A {
	TEXT-DECORATION: none! important
}
.widget-item-control {
	FLOAT: right
}
.icon-action {
	MARGIN: 0px 0px -5px 0.5em; BORDER-TOP-STYLE: none! important; =
BORDER-RIGHT-STYLE: none! important; BORDER-LEFT-STYLE: none! important; =
BORDER-BOTTOM-STYLE: none! important
}
.delete-comment-icon {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: =
url(/img/icon_delete13.gif) no-repeat left 50%; PADDING-BOTTOM: 7px; =
PADDING-TOP: 7px
}

@media All   =20
{
.BLOG_mobile_video_class {
	DISPLAY: none
}

}

@media Handheld   =20
{
.BLOG_mobile_video_class {
	DISPLAY: inline
}
.BLOG_video_class {
	DISPLAY: none
}

}

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/css/navbar/classic.css

HTML BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
BODY #wrapper {
	MARGIN-TOP: 30px
}
BODY #header {
	MARGIN-TOP: 50px
}
#leftcontent {
	_margin-top: 30px
}
#rightcontent {
	MARGIN-TOP: 30px! important
}
#Main #Title {
	MARGIN-TOP: 30px! important
}
BODY #wrap #wrap2 #header {
	MARGIN-TOP: 0px
}
BODY #wrap {
	MARGIN-TOP: 34px
}
#blog-header {
	MARGIN-TOP: -4px
}
BODY #wrap4 {
	PADDING-RIGHT: 15px; MARGIN-TOP: -4px; PADDING-LEFT: 15px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 15px
}
#space-for-ie {
	DISPLAY: none; _border: 0; _display: block
}
#navbar-iframe {
	Z-INDEX: 500; LEFT: 0px; POSITION: absolute; TOP: 0px
}

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.blogger.com/img/navbar/1/btn_search_this.png

iVBORw0KGgoAAAANSUhEUgAAAGAAAAAPCAMAAAAs5DqFAAAAdVBMVEUfWIwJQ3h+seRhlckmX5MJ
QnhLgbUQSn88c6dSiLtonNAIQngYUYYIQndCd6t3qt0uZpo1bKFCeKxvo9ZDeq4/cqQwYpJCeKsS
S4ARRHdZjsISSoBDeKw+caMwYpMvYpI/caMlXJESSn0mXZElXZESSX0mXZKP7sSuAAABZUlEQVR4
XrWS14rlQAwFVerknH3jhM3//4mLLJjdl4F58cFGgS6KNpbfb9+G5ay8Xu7y/uvJabn9vMh+aznR
sMvSnyho20GufYJ51JmoqhGyZqwfZ5BVM1FBI7CpasBHVKNjcJAbhA1sl73U0DPIQoJxKsVISxMa
Q6gU1orun8CLj2zBMRcwqQmwXaeCvQKJqwy9CZqDjBGKzlqsrxtEC77/EPjoAsfAT7sguqhqsKR2
kZeUQFadiBoCTMrRN2P0Ox37D4GPLnDMT6z1/wK2EFUhschgAnj4x4U8hjFbnwOiHXz6iRxzAUXF
BIgWmop5JbpArqmFKj7q4+6FUMfaZHTa0dQxfiKom+IYGFmpGNqxbpN2dGNVKdAO8mKCHOqChBCE
IEiwhzxT6lBZb1vw4iMhiGNwkBPkEGbkYa2VDKlf/Dc9Le0ir7cTBf1tl8v3Z5vS/Yvxg1/O88+b
/Ljs1+Ws7O/3v7uMJw2wTNG0AAAAAElFTkSuQmCC

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-css/navbar/2173601441-navbar.css

#b-navbar {
	DISPLAY: block! important; Z-INDEX: 1; MIN-HEIGHT: 24px; LEFT: 0px; =
MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 7px; FONT: small "Trebuchet =
MS",Verdana,Arial,Sans-serif; WIDTH: 100%; COLOR: #47a; BORDER-BOTTOM: =
#024 1px solid; POSITION: absolute! important; TOP: 0px
}
.bt1 {
	FONT-SIZE: 1px; MARGIN: 0px 1px; LINE-HEIGHT: 1px; POSITION: relative; =
HEIGHT: 1px
}
.bt2 {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 83%; PADDING-BOTTOM: =
2px; PADDING-TOP: 2px; POSITION: relative
}
#b-next {
	PADDING-LEFT: 5px
}
#b-search-this {
	MARGIN: 0px; TEXT-TRANSFORM: uppercase; CURSOR: pointer; WHITE-SPACE: =
nowrap; POSITION: relative; TEXT-DECORATION: none
}
#b-flag-this {
	PADDING-LEFT: 5px; MARGIN: 0px; TEXT-TRANSFORM: uppercase; CURSOR: =
pointer; WHITE-SPACE: nowrap; POSITION: relative; TEXT-DECORATION: none
}
#b-navbar #b-logo {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; LEFT: 5px; =
BORDER-BOTTOM-WIDTH: 0px; POSITION: absolute! important; TOP: 0.15em; =
BORDER-RIGHT-WIDTH: 0px
}

@media All   =20
{
#b-search {
	MARGIN: 0px 0px 0px 34px; HEIGHT: 1em; BACKGROUND-COLOR: #147
}
#b-search TABLE {
	PADDING-RIGHT: 5px
}
#b-search TD {
	FONT-SIZE: 100%; LINE-HEIGHT: 0.8em
}
#b-more {
	FLOAT: right
}
#b-searchbtn {
	MARGIN-RIGHT: 5px
}
#b-more {
	FLOAT: right
}
#b-search TABLE {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
2px; PADDING-TOP: 2px; _padding: 1px 2px 1px
}
#b-search A {
	LINE-HEIGHT: 1em; TEXT-DECORATION: none
}
#b-search A:hover {
	LINE-HEIGHT: 1em; TEXT-DECORATION: none
}
#b-search TD {
	LINE-HEIGHT: 0.8; PADDING-TOP: 2px
}
#b-search TD TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#b-searchbtn {
	DISPLAY: block
}

}

@media Handheld   =20
{
#b-search {
	DISPLAY: none! important
}
#b-more {
	DISPLAY: none! important
}
    }
.navbar-right {
	PADDING-RIGHT: 10px
}
TD.navbutton {
	PADDING-RIGHT: 5px; _padding-top: .3em
}
TD.navsearch {
	PADDING-LEFT: 5px
}
#b-query {
	VERTICAL-ALIGN: top; WIDTH: 12em; MARGIN-RIGHT: 0.25em
}
#b-query {
	FONT-SIZE: x-small! important
}

@media All   =20
{
BODY DIV.b-mobile {
	DISPLAY: none
}
#b-sms {
	DISPLAY: none! important
}

}

@media Handheld   =20
{
BODY DIV.b-mobile {
	DISPLAY: block
}
#b-sms {
	PADDING-RIGHT: 7px; DISPLAY: block! important; PADDING-LEFT: 7px; =
FONT-SIZE: 100%; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 0px 100px; =
LINE-HEIGHT: 1em; PADDING-TOP: 4px; TEXT-ALIGN: left
}
#b-sms A {
	LINE-HEIGHT: 1em; MARGIN-RIGHT: 0.5em; WHITE-SPACE: nowrap; =
TEXT-DECORATION: none
}
#b-sms A:hover {
	COLOR: #fff; TEXT-DECORATION: underline
}

}

@media All   =20
{
#flagi {
	PADDING-RIGHT: 1px; DISPLAY: none; PADDING-LEFT: 1px; Z-INDEX: 300; =
PADDING-BOTTOM: 1px; PADDING-TOP: 1px; TOP: 7px; BACKGROUND-COLOR: #333
}
#unflagi {
	PADDING-RIGHT: 1px; DISPLAY: none; PADDING-LEFT: 1px; Z-INDEX: 300; =
PADDING-BOTTOM: 1px; PADDING-TOP: 1px; TOP: 7px; BACKGROUND-COLOR: #333
}

}

@media Handheld   =20
{
#flagi {
	DISPLAY: none! important
}
#unflagi {
	DISPLAY: none! important
}
    }
#flagi-body {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
10px; PADDING-BOTTOM: 3px; LINE-HEIGHT: 14px; PADDING-TOP: 3px; =
FONT-FAMILY: "Trebuchet MS", Vedana, Arial, Sans-serif; =
BACKGROUND-COLOR: #ffff99; TEXT-ALIGN: center
}
#flagi-body A {
	FONT-SIZE: 10px; COLOR: #3366cc; TEXT-DECORATION: none
}
#flagi-body A:hover {
	TEXT-DECORATION: underline
}
#unflagi-body {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
10px; PADDING-BOTTOM: 3px; LINE-HEIGHT: 14px; PADDING-TOP: 3px; =
FONT-FAMILY: "Trebuchet MS", Vedana, Arial, Sans-serif; =
BACKGROUND-COLOR: #ffff99; TEXT-ALIGN: center
}
#unflagi-body A {
	FONT-SIZE: 10px; COLOR: #3366cc; TEXT-DECORATION: none
}
#unflagi-body A:hover {
	TEXT-DECORATION: underline
}

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-css/navbar/2795506556-1.css

#b-navbar {
	COLOR: #47a; BORDER-BOTTOM: #024 1px solid; BACKGROUND-COLOR: #036
}
#b-search TABLE {
	BACKGROUND: url(../../img/navbar/1/corner.gif) #147 no-repeat left =
bottom
}
#b-query {
	BORDER-RIGHT: #47a 1px solid; BORDER-TOP: #47a 1px solid; BORDER-LEFT: =
#47a 1px solid; BORDER-BOTTOM: #47a 1px solid
}
#b-search A {
	COLOR: #9cf
}
#b-search TD {
	COLOR: #fff
}
#b-search A:hover {
	COLOR: #fff
}
#b-sms A {
	COLOR: #9cf
}
#b-sms A:hover {
	COLOR: #fff
}
#navbar-logo {
	BACKGROUND-IMAGE: url(../../img/navbar/1/logobar.png); WIDTH: 24px; =
HEIGHT: 24px
}
#b-search-this {
	BACKGROUND: #114477
}
.bt1 {
	BACKGROUND-COLOR: #4477aa
}
.bt2 {
	BORDER-RIGHT: #4477aa 1px solid; BORDER-LEFT: #4477aa 1px solid; COLOR: =
#99ccff; BACKGROUND-COLOR: #114477
}
DIV.bt2:hover {
	BACKGROUND-COLOR: #4477aa
}
#bt-flag {
	PADDING-LEFT: 8px; BACKGROUND: url(../../img/navbar/1/flag.gif) =
no-repeat left 50%
}

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-js/3625575137-cookies.common.js

// Copyright 2005, Google Inc.=0A=
// =0A=
// Operations on cookies that are common across our pages.=0A=
//=0A=
// Original Author: Pal Takacsi-Nagy (pal@google.com)=0A=
=0A=
=0A=
/**=0A=
 * Sets a Cookie with the given name and value.=0A=
 *=0A=
 * name       Name of the cookie=0A=
 * value      Value of the cookie=0A=
 * [expires]  Expiration date of the cookie (default: end of current =
session)=0A=
 * [path]     Path where the cookie is valid (default: path of calling =
document)=0A=
 * [domain]   Domain where the cookie is valid=0A=
 *              (default: domain of calling document)=0A=
 * [secure]   Boolean value indicating if the cookie transmission =
requires a=0A=
 *              secure transmission=0A=
 */=0A=
function setCookie(name, value, domain, expires, path, secure) {=0A=
    document.cookie =3D name + "=3D" + escape(value) +=0A=
        ((expires) ? "; expires=3D" + expires.toGMTString() : "") +=0A=
        ((path) ? "; path=3D" + path : "") +=0A=
        ((domain) ? "; domain=3D" + domain : "") +=0A=
        ((secure) ? "; secure" : "");=0A=
}=0A=
=0A=
/**=0A=
 * Gets the value of the specified cookie.=0A=
 *=0A=
 * name  Name of the desired cookie.=0A=
 *=0A=
 * Returns a string containing value of specified cookie,=0A=
 *   or null if cookie does not exist.=0A=
 */=0A=
function getCookie(name) {=0A=
    var dc =3D document.cookie;=0A=
    var prefix =3D name + "=3D";=0A=
    var begin =3D dc.indexOf("; " + prefix);=0A=
=0A=
    if (begin =3D=3D -1) {=0A=
        begin =3D dc.indexOf(prefix);=0A=
        if (begin !=3D 0) return null;=0A=
    } else {=0A=
        begin +=3D 2;=0A=
    }=0A=
=0A=
    var end =3D document.cookie.indexOf(";", begin);=0A=
=0A=
    if (end =3D=3D -1) {=0A=
        end =3D dc.length;=0A=
    }=0A=
=0A=
    return unescape(dc.substring(begin + prefix.length, end));=0A=
}=0A=

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-app/scripts/1019856700-common.js

// Copied from .../google3/javascript/common.js=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// This file contains common utilities and basic javascript =
infrastructure.=0A=
//=0A=
// Notes:=0A=
// * Press 'D' to toggle debug mode.=0A=
//=0A=
// Functions:=0A=
//=0A=
// - Assertions=0A=
// DEPRECATED: Use assert.js=0A=
// AssertTrue(): assert an expression. Throws an exception if false.=0A=
// Fail(): Throws an exception. (Mark block of code that should be =
unreachable)=0A=
// AssertEquals(): assert that two values are equal.=0A=
// AssertNumArgs(): assert number of arguments for the function=0A=
// AssertType(): assert that a value has a particular type=0A=
//=0A=
// - Cookies=0A=
// SetCookie(): Sets a cookie.=0A=
// ExpireCookie(): Expires a cookie.=0A=
// GetCookie(): Gets a cookie value.=0A=
//=0A=
// - Dynamic HTML/DOM utilities=0A=
// MaybeGetElement(): get an element by its id=0A=
// GetElement(): get an element by its id=0A=
// GetParentNode(): Get the parent of an element=0A=
// GetAttribute(): Get attribute value of a DOM node=0A=
// SetInnerHTML(): set the inner HTML of a node=0A=
// GetInnerHTML(): get the inner HTML of a node=0A=
// ClearInnerHTML(): clear the inner HTML of a node=0A=
// SetCssStyle(): Sets a CSS property of a node.=0A=
// GetStyleProperty(): Get CSS property from a style attribute string=0A=
// ShowElement(): Show/hide element by setting the "display" css =
property.=0A=
// ShowBlockElement(): Show/hide block element=0A=
// SetButtonText(): Set the text of a button element.=0A=
// AppendNewElement(): Create and append a html element to a parent node.=0A=
// CreateDIV(): Create a DIV element and append to the document.=0A=
// CreateIFRAME(): Create an IFRAME and append to the document.=0A=
// HasClass(): check if element has a given class=0A=
// AddClass(): add a class to an element=0A=
// RemoveClass(): remove a class from an element=0A=
//=0A=
// - Window/Screen utiltiies=0A=
// GetPageOffsetLeft(): get the X page offset of an element=0A=
// GetPageOffsetTop(): get the Y page offset of an element=0A=
// GetPageOffset(): get the X and Y page offsets of an element=0A=
// GetPageOffsetRight() : get X page offset of the right side of an =
element=0A=
// GetPageOffsetRight() : get Y page offset of the bottom of an element=0A=
// GetScrollTop(): get the vertical scrolling pos of a window.=0A=
// GetScrollLeft(): get the horizontal scrolling pos of a window=0A=
// IsScrollAtEnd():  check if window scrollbar has reached its maximum =
offset=0A=
// ScrollTo(): scroll window to a position=0A=
// ScrollIntoView(): scroll window so that an element is in view.=0A=
// GetWindowWidth(): get width of a window.=0A=
// GetWindowHeight(): get height of a window=0A=
// GetAvailScreenWidth(): get available screen width=0A=
// GetAvailScreenHeight(): get available screen height=0A=
// GetNiceWindowHeight(): get a nice height for a new browser window.=0A=
// Open{External/Internal}Window(): open a separate window=0A=
// CloseWindow(): close a window=0A=
//=0A=
// - DOM walking utilities=0A=
// AnnotateTerms(): find terms in a node and decorate them with some tag=0A=
// AnnotateText(): find terms in a text node and decorate them with some =
tag=0A=
//=0A=
// - String utilties=0A=
// HtmlEscape(): html escapes a string=0A=
// HtmlUnescape(): remove html-escaping.=0A=
// QuoteEscape(): escape " quotes.=0A=
// CollapseWhitespace(): collapse multiple whitespace into one =
whitespace.=0A=
// Trim(): trim whitespace on ends of string=0A=
// IsEmpty(): check if CollapseWhiteSpace(String) =3D=3D ""=0A=
// IsLetterOrDigit(): check if a character is a letter or a digit=0A=
// ConvertEOLToLF(): normalize the new-lines of a string.=0A=
// HtmlEscapeInsertWbrs(): HtmlEscapes and inserts <wbr>s (word break =
tags)=0A=
//   after every n non-space chars and/or after or before certain =
special chars=0A=
//=0A=
// - TextArea utilities=0A=
// GetCursorPos(): finds the cursor position of a textfield=0A=
// SetCursorPos(): sets the cursor position in a textfield=0A=
//=0A=
// - Array utilities=0A=
// FindInArray(): do a linear search to find an element value.=0A=
// DeleteArrayElement(): return a new array with a specific value =
removed.=0A=
// CloneObject(): clone an object, copying its values recursively.=0A=
// CloneEvent(): clone an event; cannot use CloneObject because it=0A=
//               suffers from infinite recursion=0A=
//=0A=
// - Formatting utilities=0A=
// PrintArray(): used to print/generate HTML by combining static text=0A=
// and dynamic strings.=0A=
// ImageHtml(): create html for an img tag=0A=
// FormatJSLink(): formats a link that invokes js code when clicked.=0A=
// MakeId3(): formats an id that has two id numbers, eg, foo_3_7=0A=
//=0A=
// - Miscellaneous=0A=
// IsDefined(): returns true if argument is not undefined=0A=
//-----------------------------------------------------------------------=
-=0A=
=0A=
// browser detection=0A=
var agent =3D navigator.userAgent.toLowerCase();=0A=
var is_ie =3D (agent.indexOf('msie') !=3D -1);=0A=
//var is_ie5 =3D (agent.indexOf('msie 5') !=3D -1 && document.all);=0A=
var is_konqueror =3D (agent.indexOf('konqueror') !=3D -1);=0A=
var is_safari =3D (agent.indexOf('safari') !=3D -1) || is_konqueror;=0A=
var is_nav =3D !is_ie && !is_safari && (agent.indexOf('mozilla') !=3D =
-1);=0A=
var is_win =3D (agent.indexOf('win') !=3D -1);=0A=
delete agent;=0A=
=0A=
=0A=
var BACKSPACE_KEYCODE =3D 8;=0A=
var COMMA_KEYCODE =3D 188;                // ',' key=0A=
var DEBUG_KEYCODE =3D 68;                 // 'D' key=0A=
var DELETE_KEYCODE =3D 46;=0A=
var DOWN_KEYCODE =3D 40;                  // DOWN arrow key=0A=
var ENTER_KEYCODE =3D 13;                 // ENTER key=0A=
var ESC_KEYCODE =3D 27;                   // ESC key=0A=
var LEFT_KEYCODE =3D 37;                  // LEFT arrow key=0A=
var RIGHT_KEYCODE =3D 39;                 // RIGHT arrow key=0A=
var SPACE_KEYCODE =3D 32;                 // space bar=0A=
var TAB_KEYCODE =3D 9;                    // TAB key=0A=
var UP_KEYCODE =3D 38;                    // UP arrow key=0A=
var SHIFT_KEYCODE =3D 16;=0A=
=0A=
// This is a "constant" but has different values depending on the browser=0A=
var semicolon_keycode =3D (is_ie ? 186 : 59);=0A=
=0A=
var MAX_EMAIL_ADDRESS_LENGTH =3D 320;     // 64 + '@' + 255=0A=
var MAX_SIGNATURE_LENGTH =3D 1000;        // 1000 chars of maximum =
signature=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Assertions=0A=
// DEPRECATED: Use assert.js=0A=
//-----------------------------------------------------------------------=
-=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 */=0A=
function raise(msg) {=0A=
  if (typeof Error !=3D 'undefined') {=0A=
    throw new Error(msg || 'Assertion Failed');=0A=
  } else {=0A=
    throw (msg);=0A=
  }=0A=
}=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Fail() is useful for marking logic paths that should=0A=
 * not be reached. For example, if you have a class that uses=0A=
 * ints for enums:=0A=
 *=0A=
 * MyClass.ENUM_FOO =3D 1;=0A=
 * MyClass.ENUM_BAR =3D 2;=0A=
 * MyClass.ENUM_BAZ =3D 3;=0A=
 *=0A=
 * And a switch statement elsewhere in your code that=0A=
 * has cases for each of these enums, then you can=0A=
 * "protect" your code as follows:=0A=
 *=0A=
 * switch(type) {=0A=
 *   case MyClass.ENUM_FOO: doFooThing(); break;=0A=
 *   case MyClass.ENUM_BAR: doBarThing(); break;=0A=
 *   case MyClass.ENUM_BAZ: doBazThing(); break;=0A=
 *   default:=0A=
 *     Fail("No enum in MyClass with value: " + type);=0A=
 * }=0A=
 *=0A=
 * This way, if someone introduces a new value for this enum=0A=
 * without noticing this switch statement, then the code will=0A=
 * fail if the logic allows it to reach the switch with the=0A=
 * new value, alerting the developer that he should add a=0A=
 * case to the switch to handle the new value he has introduced.=0A=
 *=0A=
 * @param {string} opt_msg to display for failure=0A=
 *                 DEFAULT: "Assertion failed"=0A=
 */=0A=
function Fail(opt_msg) {=0A=
  if (opt_msg =3D=3D=3D undefined) opt_msg =3D 'Assertion failed';=0A=
  if (IsDefined(DumpError)) DumpError(opt_msg + '\n');=0A=
  raise(opt_msg);=0A=
}=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Asserts that an expression is true (non-zero and non-null).=0A=
 *=0A=
 * Note that it is critical not to pass logic=0A=
 * with side-effects as the expression for AssertTrue=0A=
 * because if the assertions are removed by the=0A=
 * JSCompiler, then the expression will be removed=0A=
 * as well, in which case the side-effects will=0A=
 * be lost. So instead of this:=0A=
 *=0A=
 *  AssertTrue( criticalComputation() );=0A=
 *=0A=
 * Do this:=0A=
 *=0A=
 *  var result =3D criticalComputation();=0A=
 *  AssertTrue(result);=0A=
 *=0A=
 * @param {anything} expression to evaluate=0A=
 * @param {string}   opt_msg to display if the assertion fails=0A=
 *=0A=
 */=0A=
function AssertTrue(expression, opt_msg) {=0A=
  if (!expression) {=0A=
    if (opt_msg =3D=3D=3D undefined) opt_msg =3D 'Assertion failed';=0A=
    Fail(opt_msg);=0A=
  }=0A=
}=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Asserts that two values are the same.=0A=
 *=0A=
 * @param {anything} val1=0A=
 * @param {anything} val2=0A=
 * @param {string} opt_msg to display if the assertion fails=0A=
 */=0A=
function AssertEquals(val1, val2, opt_msg) {=0A=
  if (val1 !=3D val2) {=0A=
    if (opt_msg =3D=3D=3D undefined) {=0A=
      opt_msg =3D "AssertEquals failed: <" + val1 + "> !=3D <" + val2 + =
">";=0A=
    }=0A=
    Fail(opt_msg);=0A=
  }=0A=
}=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Asserts that a value is of the provided type.=0A=
 *=0A=
 *   AssertType(6, Number);=0A=
 *   AssertType("ijk", String);=0A=
 *   AssertType([], Array);=0A=
 *   AssertType({}, Object);=0A=
 *   AssertType(ICAL_Date.now(), ICAL_Date);=0A=
 *=0A=
 * @param {anything} value=0A=
 * @param {constructor function} type=0A=
 * @param {string} opt_msg to display if the assertion fails=0A=
 */=0A=
function AssertType(value, type, opt_msg) {=0A=
  // for backwards compatability only=0A=
  if (typeof value =3D=3D type) return;=0A=
=0A=
  if (value || value =3D=3D "") {=0A=
    try {=0A=
      if (type =3D=3D AssertTypeMap[typeof value] || value instanceof =
type) return;=0A=
    } catch (e) { /* failure, type was an illegal argument to instanceof =
*/ }=0A=
  }=0A=
  if (opt_msg =3D=3D=3D undefined) {=0A=
    if (typeof type =3D=3D 'function') {=0A=
      var match =3D type.toString().match(/^\s*function\s+([^\s\{]+)/);=0A=
      if (match) type =3D match[1];=0A=
    }=0A=
    opt_msg =3D "AssertType failed: <" + value + "> not typeof "+ type;=0A=
  }=0A=
  Fail(opt_msg);=0A=
}=0A=
=0A=
var AssertTypeMap =3D {=0A=
  'string'  : String,=0A=
  'number'  : Number,=0A=
  'boolean' : Boolean=0A=
};=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Asserts that the number of arguments to a=0A=
 * function is num. For example:=0A=
 *=0A=
 * function myFunc(one, two, three) [=0A=
 *   AssertNumArgs(3);=0A=
 *   ...=0A=
 * }=0A=
 *=0A=
 * myFunc(1, 2); // assertion fails!=0A=
 *=0A=
 * Note that AssertNumArgs does not take the function=0A=
 * as an argument; it is simply used in the context=0A=
 * of the function.=0A=
 *=0A=
 * @param {int} number of arguments expected=0A=
 * @param {string} opt_msg to display if the assertion fails=0A=
 */=0A=
function AssertNumArgs(num, opt_msg) {=0A=
  var caller =3D AssertNumArgs.caller;  // This is not supported in =
safari 1.0=0A=
  if (caller && caller.arguments.length !=3D num) {=0A=
    if (opt_msg =3D=3D=3D undefined) {=0A=
      opt_msg =3D caller.name + ' expected ' + num + ' arguments '=0A=
                  + ' but received ' + caller.arguments.length;=0A=
    }=0A=
    Fail(opt_msg);=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Cookies=0A=
//-----------------------------------------------------------------------=
-=0A=
var ILLEGAL_COOKIE_CHARS_RE =3D /[\s;]/=0A=
/**=0A=
 * Sets a cookie.=0A=
 * The max_age can be -1 to set a session cookie. To expire cookies, use=0A=
 * ExpireCookie() instead.=0A=
 *=0A=
 * @param name The cookie name.=0A=
 * @param value The cookie value.=0A=
 * @param opt_max_age The max age in seconds (from now). Use -1 to set a=0A=
 *   session cookie. If not provided, the default is -1 (i.e. set a =
session=0A=
 *   cookie).=0A=
 * @param opt_path The path of the cookie, or null to not specify a path=0A=
 *   attribute (browser will use the full request path). If not =
provided, the=0A=
 *   default is '/' (i.e. path=3D/).=0A=
 * @param opt_domain The domain of the cookie, or null to not specify a =
domain=0A=
 *   attribute (brower will use the full request host name). If not =
provided,=0A=
 *   the default is null (i.e. let browser use full request host name).=0A=
 * @return Void.=0A=
 */=0A=
function SetCookie(name, value, opt_max_age, opt_path, opt_domain) {=0A=
=0A=
  value =3D '' + value;=0A=
  AssertTrue((typeof name =3D=3D 'string' &&=0A=
              typeof value =3D=3D 'string' &&=0A=
              !name.match(ILLEGAL_COOKIE_CHARS_RE) &&=0A=
              !value.match(ILLEGAL_COOKIE_CHARS_RE)),=0A=
             'trying to set an invalid cookie');=0A=
=0A=
  if (!IsDefined(opt_max_age)) opt_max_age =3D -1;=0A=
  if (!IsDefined(opt_path)) opt_path =3D '/';=0A=
  if (!IsDefined(opt_domain)) opt_domain =3D null;=0A=
=0A=
  var domain_str =3D (opt_domain =3D=3D null) ? '' : ';domain=3D' + =
opt_domain;=0A=
  var path_str =3D (opt_path =3D=3D null) ? '' : ';path=3D' + opt_path;=0A=
=0A=
  var expires_str;=0A=
=0A=
  // Case 1: Set a session cookie.=0A=
  if (opt_max_age < 0) {=0A=
    expires_str =3D '';=0A=
=0A=
  // Case 2: Expire the cookie.=0A=
  // Note: We don't tell people about this option in the function doc =
because=0A=
  // we prefer people to use ExpireCookie() to expire cookies.=0A=
  } else if (opt_max_age =3D=3D 0) {=0A=
    // Note: Don't use Jan 1, 1970 for date because NS 4.76 will try to =
convert=0A=
    // it to local time, and if the local time is before Jan 1, 1970, =
then the=0A=
    // browser will ignore the Expires attribute altogether.=0A=
    var pastDate =3D new Date(1970, 1 /*Feb*/, 1);  // Feb 1, 1970=0A=
    expires_str =3D ';expires=3D' + pastDate.toUTCString();=0A=
=0A=
  // Case 3: Set a persistent cookie.=0A=
  } else {=0A=
    var futureDate =3D new Date(Now() + opt_max_age * 1000);=0A=
    expires_str =3D ';expires=3D' + futureDate.toUTCString();=0A=
  }=0A=
=0A=
  document.cookie =3D name + '=3D' + value + domain_str + path_str + =
expires_str;=0A=
}=0A=
=0A=
var EXPIRED_COOKIE_VALUE =3D 'EXPIRED';=0A=
=0A=
/**=0A=
 * Expires a cookie.=0A=
 *=0A=
 * @param name The cookie name.=0A=
 * @param opt_path The path of the cookie, or null to expire a cookie =
set at=0A=
 *   the full request path. If not provided, the default is '/' (i.e. =
path=3D/).=0A=
 * @param opt_domain The domain of the cookie, or null to expire a =
cookie set=0A=
 *   at the full request host name. If not provided, the default is null =
(i.e.=0A=
 *   cookie at full request host name).=0A=
 * @return Void.=0A=
 */=0A=
function ExpireCookie(name, opt_path, opt_domain) {=0A=
  SetCookie(name, EXPIRED_COOKIE_VALUE, 0, opt_path, opt_domain);=0A=
}=0A=
=0A=
/** Returns the value for the first cookie with the given name=0A=
 * @param name : string=0A=
 * @return a string or the empty string if no cookie found.=0A=
 */=0A=
function GetCookie(name) {=0A=
  var nameeq =3D name + "=3D";=0A=
  var cookie =3D String(document.cookie);=0A=
  for (var pos =3D -1; (pos =3D cookie.indexOf(nameeq, pos + 1)) >=3D =
0;) {=0A=
    var i =3D pos;=0A=
    // walk back along string skipping whitespace and looking for a ; =
before=0A=
    // the name to make sure that we don't match cookies whose name =
contains=0A=
    // the given name as a suffix.=0A=
    while (--i >=3D 0) {=0A=
      var ch =3D cookie.charAt(i);=0A=
      if (ch =3D=3D ';') {=0A=
        i =3D -1;  // indicate success=0A=
        break;=0A=
      } else if (' \t'.indexOf(ch) < 0) {=0A=
        break;=0A=
      }=0A=
    }=0A=
    if (-1 =3D=3D=3D i) {  // first cookie in the string or we found a ;=0A=
      var end =3D cookie.indexOf(';', pos);=0A=
      if (end < 0) { end =3D cookie.length; }=0A=
      return cookie.substring(pos + nameeq.length, end);=0A=
    }=0A=
  }=0A=
  return "";=0A=
}=0A=
=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Time=0A=
//-----------------------------------------------------------------------=
-=0A=
function Now() {=0A=
  return (new Date()).getTime();=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Dynamic HTML/DOM utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
// Gets a element by its id, may return null=0A=
function MaybeGetElement(win, id) {=0A=
  return win.document.getElementById(id);=0A=
}=0A=
=0A=
// Same as MaybeGetElement except that it throws an exception if it's =
null=0A=
function GetElement(win, id) {=0A=
  var el =3D win.document.getElementById(id);=0A=
  if (!el) {=0A=
    DumpError("Element " + id + " not found.");=0A=
  }=0A=
  return el;=0A=
}=0A=
=0A=
// Gets elements by its id/name=0A=
// IE treats getElementsByName as searching over ids, while Moz use =
names.=0A=
// so tags must have both id and name as the same string=0A=
function GetElements(win, id) {=0A=
  return win.document.getElementsByName(id);=0A=
}=0A=
=0A=
// Gets the parent of a html element.=0A=
function GetParentNode(n) {=0A=
  try {=0A=
    return n.parentNode;=0A=
  } catch (e) {=0A=
    // n.parentNode may throw a permission-denied exception on mozilla=0A=
    // (e.g. on text element), ignore this exception.=0A=
    return n;=0A=
  }=0A=
}=0A=
=0A=
function IsDescendant(parent, child) {=0A=
  do {=0A=
    if (parent =3D=3D=3D child) return true;=0A=
    child =3D GetParentNode(child);=0A=
  } while (child && child !=3D=3D document.body);=0A=
  return false;=0A=
}=0A=
=0A=
// Get attribute value of a DOM node=0A=
function GetAttribute(node, attribute) {=0A=
  if (!node.getAttribute) {=0A=
    return null;=0A=
  }=0A=
  var attr =3D node.getAttribute(attribute);=0A=
  if (is_ie && attribute =3D=3D "style") {=0A=
    return attr.value;=0A=
  } else {=0A=
    return attr;=0A=
  }=0A=
}=0A=
=0A=
// Sets inner html of a html element=0A=
function SetInnerHTML(win, id, html) {=0A=
  try {=0A=
    GetElement(win, id).innerHTML =3D html;=0A=
  } catch (ex) {=0A=
    DumpException(ex);=0A=
  }=0A=
}=0A=
=0A=
// Gets inner-html of a html element=0A=
function GetInnerHTML(win, id) {=0A=
  try {=0A=
    return GetElement(win, id).innerHTML;=0A=
  } catch (ex) {=0A=
    DumpException(ex);=0A=
    return "";=0A=
  }=0A=
}=0A=
=0A=
// Clears inner html of a html element=0A=
function ClearInnerHTML(win, id) {=0A=
  try {=0A=
    GetElement(win, id).innerHTML =3D "";=0A=
  } catch (ex) {=0A=
    DumpException(ex);=0A=
  }=0A=
}=0A=
=0A=
// Sets a CSS style of an element=0A=
function SetCssStyle(win, id, name, value) {=0A=
  try {=0A=
    var elem =3D GetElement(win, id);=0A=
    elem.style[name] =3D value;=0A=
  } catch (ex) {=0A=
    DumpException(ex);=0A=
  }=0A=
}=0A=
=0A=
// Get CSS property from a style attribute string=0A=
function GetStyleProperty(style, name) {=0A=
  var i =3D style.indexOf(name);=0A=
  if (i !=3D -1) {=0A=
    var j =3D style.indexOf(";", i);=0A=
    if (j =3D=3D -1) {=0A=
      j =3D style.length;=0A=
    }=0A=
    // the +1 below is for the colon following the attribute name=0A=
    return CollapseWhitespace(style.substring(i + name.length + 1, j));=0A=
  }=0A=
  return null;=0A=
}=0A=
=0A=
// Show/hide an element.=0A=
function ShowElement(el, show) {=0A=
  el.style.display =3D show ? "" : "none";=0A=
}=0A=
=0A=
// Show/hide a block element.=0A=
// ShowElement() doesn't work if object has an initial class with =
display:none=0A=
function ShowBlockElement(el, show) {=0A=
  el.style.display =3D show ? "block" : "none";=0A=
}=0A=
=0A=
// Show/hide an inline element.=0A=
// ShowElement() doesn't work when an element starts off display:none.=0A=
function ShowInlineElement(el, show) {=0A=
  el.style.display =3D show ? "inline" : "none";=0A=
}=0A=
=0A=
// Set the text of a button. This is to get around a bug in mozilla,=0A=
// where we can't set the text of a button by setting innerHTML.=0A=
function SetButtonText(button, text) {=0A=
  button.childNodes[0].nodeValue =3D text;=0A=
}=0A=
=0A=
// Append a new HTML element to a HTML node.=0A=
function AppendNewElement(win, parent, tag) {=0A=
  var e =3D win.document.createElement(tag);=0A=
  parent.appendChild(e);=0A=
  return e;=0A=
}=0A=
=0A=
// Finds the child with the given ID, or null if there is node.=0A=
// This does not search the children's children.=0A=
function FindChildWithID(parent, id) {=0A=
  var el;=0A=
  for (el =3D parent.firstChild; el && el.id !=3D id; el =3D =
el.nextSibling) {=0A=
    // skip=0A=
  }=0A=
  return el;=0A=
}=0A=
=0A=
// Adds a disabled option to the given menu=0A=
function AddMenuDisabledOption(win, menu, html) {=0A=
  var op =3D AppendNewElement(win, menu, 'OPTION');=0A=
  op.disabled =3D true;=0A=
  op.innerHTML =3D html;=0A=
=0A=
  return op;=0A=
}=0A=
=0A=
// Adds a option to the given menu=0A=
function AddMenuOption(win, menu, value, html) {=0A=
  var op =3D AppendNewElement(win, menu, 'OPTION');=0A=
  op.value =3D value;=0A=
  op.innerHTML =3D html;=0A=
=0A=
  return op;=0A=
}=0A=
=0A=
// Create a new DIV (append it to the end of the document)=0A=
function CreateDIV(win, id) {=0A=
  var div =3D MaybeGetElement(win, id);=0A=
  if (!div) {=0A=
    div =3D AppendNewElement(win, win.document.body, "div");=0A=
    div.id =3D id;=0A=
  }=0A=
  return div;=0A=
}=0A=
=0A=
// Create a new IFRAME (append it to the end of the document)=0A=
function CreateIFRAME(win, id, url) {=0A=
  var iframe =3D MaybeGetElement(win, id);=0A=
  if (!iframe) {=0A=
    // We cannot create an IFRAME directly (IE doesn't allow it), so we=0A=
    // create a DIV and then insert an IFRAME.=0A=
    // We also give the IFRAME a name (same as id)=0A=
    var div =3D AppendNewElement(win, win.document.body, "div");=0A=
    div.innerHTML =3D "<iframe id=3D" + id + " name=3D" + id +=0A=
             " src=3D" + url + "></iframe>";=0A=
    iframe =3D GetElement(win, id);=0A=
  }=0A=
  return iframe;=0A=
}=0A=
=0A=
// Create a new TR containing the given td's=0A=
function Tr(win, tds) {=0A=
  var tr =3D win.document.createElement("TR");=0A=
  for (var i =3D 0; i < tds.length; i++) {=0A=
    tr.appendChild(tds[i]);=0A=
  }=0A=
  return tr;=0A=
}=0A=
=0A=
// Create a new TD, with an optional colspan=0A=
function Td(win, opt_colspan) {=0A=
  var td =3D win.document.createElement("TD");=0A=
  if (opt_colspan) {=0A=
    td.colSpan =3D opt_colspan;=0A=
  }=0A=
  return td;=0A=
}=0A=
=0A=
=0A=
// Check if an element has a given class=0A=
function HasClass(el, cl) {=0A=
  if (el =3D=3D null || el.className =3D=3D null) return false;=0A=
  var classes =3D el.className.split(" ");=0A=
  for (var i =3D 0; i < classes.length; i++) {=0A=
    if (classes[i] =3D=3D cl) {=0A=
      return true;=0A=
    }=0A=
  }=0A=
  return false;=0A=
}=0A=
=0A=
// Add a class to element=0A=
function AddClass(el, cl) {=0A=
  if (HasClass(el, cl)) return;=0A=
  el.className +=3D " " + cl;=0A=
}=0A=
=0A=
// Remove a class from an element=0A=
function RemoveClass(el, cl) {=0A=
  if (el.className =3D=3D null) return;=0A=
  var classes =3D el.className.split(" ");=0A=
  var result =3D [];=0A=
  var changed =3D false;=0A=
  for (var i =3D 0; i < classes.length; i++) {=0A=
    if (classes[i] !=3D cl) {=0A=
      if (classes[i]) { result.push(classes[i]); }=0A=
    } else {=0A=
      changed =3D true;=0A=
    }=0A=
  }=0A=
  if (changed) { el.className =3D result.join(" "); }=0A=
}=0A=
=0A=
// Performs an in-order traversal of the tree rooted at the given node=0A=
// (excluding the root node) and returns an array of nodes that match the=0A=
// given selector. The selector must implement the method:=0A=
//=0A=
// boolean select(node);=0A=
//=0A=
// This method is a generalization of the DOM method =
"getElementsByTagName"=0A=
//=0A=
function GetElementsBySelector(root, selector) {=0A=
  var nodes =3D [];=0A=
  for (var child =3D root.firstChild; child; child =3D =
child.nextSibling) {=0A=
    AddElementBySelector_(child, selector, nodes);=0A=
  }=0A=
  return nodes;=0A=
}=0A=
=0A=
// Recursive helper for GetElemnetsBySelector()=0A=
function AddElementBySelector_(root, selector, nodes) {=0A=
  // First test the parent=0A=
  if (selector.select(root)) {=0A=
    nodes.push(root);=0A=
  }=0A=
=0A=
  // Then recurse through the children=0A=
  for (var child =3D root.firstChild; child; child =3D =
child.nextSibling) {=0A=
    AddElementBySelector_(child, selector, nodes);=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Window/screen utilities=0A=
// TODO: these should be renamed (e.g. GetWindowWidth to =
GetWindowInnerWidth=0A=
// and moved to geom.js)=0A=
//-----------------------------------------------------------------------=
-=0A=
// Get page offset of an element=0A=
function GetPageOffsetLeft(el) {=0A=
  var x =3D el.offsetLeft;=0A=
  if (el.offsetParent !=3D null)=0A=
    x +=3D GetPageOffsetLeft(el.offsetParent);=0A=
  return x;=0A=
}=0A=
=0A=
// Get page offset of an element=0A=
function GetPageOffsetTop(el) {=0A=
  var y =3D el.offsetTop;=0A=
  if (el.offsetParent !=3D null)=0A=
    y +=3D GetPageOffsetTop(el.offsetParent);=0A=
  return y;=0A=
}=0A=
=0A=
// Get page offset of an element=0A=
function GetPageOffset(el) {=0A=
  var x =3D el.offsetLeft;=0A=
  var y =3D el.offsetTop;=0A=
  if (el.offsetParent !=3D null) {=0A=
    var pos =3D GetPageOffset(el.offsetParent);=0A=
    x +=3D pos.x;=0A=
    y +=3D pos.y;=0A=
  }=0A=
  return {x: x, y: y};=0A=
}=0A=
=0A=
function GetPageOffsetRight(el) {=0A=
  return GetPageOffsetLeft(el) + el.offsetWidth;=0A=
}=0A=
=0A=
function GetPageOffsetBottom(el) {=0A=
  return GetPageOffsetTop(el) + el.offsetHeight;=0A=
}=0A=
=0A=
// Get the y position scroll offset.=0A=
function GetScrollTop(win) {=0A=
  // all except Explorer=0A=
  if ("pageYOffset" in win) {=0A=
    return win.pageYOffset;=0A=
  }=0A=
  // Explorer 6 Strict Mode=0A=
  else if ("documentElement" in win.document &&=0A=
           "scrollTop" in win.document.documentElement) {=0A=
    return win.document.documentElement.scrollTop;=0A=
  }=0A=
  // other Explorers=0A=
  else if ("scrollTop" in win.document.body) {=0A=
    return win.document.body.scrollTop;=0A=
  }=0A=
=0A=
  return 0;=0A=
}=0A=
=0A=
// Get the x position scroll offset.=0A=
function GetScrollLeft(win) {=0A=
  // all except Explorer=0A=
  if ("pageXOffset" in win) {=0A=
    return win.pageXOffset;=0A=
  }=0A=
  // Explorer 6 Strict Mode=0A=
  else if ("documentElement" in win.document &&=0A=
           "scrollLeft" in win.document.documentElement) {=0A=
    return win.document.documentElement.scrollLeft;=0A=
  }=0A=
  // other Explorers=0A=
  else if ("scrollLeft" in win.document.body) {=0A=
    return win.document.body.scrollLeft;=0A=
  }=0A=
=0A=
  return 0;=0A=
}=0A=
=0A=
/**=0A=
 * Checks if window scrollbar has reached its maximum offset=0A=
 *=0A=
 * @param win a window object=0A=
 * @param opt_isHoriz true if horizontal bar, false if vertical=0A=
 */=0A=
function IsScrollAtEnd(win, opt_isHoriz) {=0A=
  var total =3D=0A=
    (opt_isHoriz) ? document.body.offsetWidth : =
document.body.offsetHeight;=0A=
  var inner =3D=0A=
    (opt_isHoriz) ? GetWindowWidth(win) : GetWindowHeight(win);=0A=
  var offset =3D=0A=
    (opt_isHoriz) ? GetScrollLeft(win) : GetScrollTop(win);=0A=
=0A=
  return (inner + offset >=3D total || total < inner);=0A=
}=0A=
=0A=
// Scroll window to pos=0A=
// position: 0 =3D top, 0.5 =3D middle, 1 =3D bottom=0A=
function ScrollTo(win, el, position) {=0A=
  var y =3D GetPageOffsetTop(el);=0A=
  y -=3D GetWindowHeight(win) * position;=0A=
  win.scrollTo(0, y);=0A=
}=0A=
=0A=
// Scroll so that as far as possible the entire element is in view.=0A=
var ALIGN_BOTTOM =3D 'b';=0A=
var ALIGN_MIDDLE =3D 'm';=0A=
var ALIGN_TOP =3D 't';=0A=
function ScrollIntoView(win, el, alignment) {=0A=
  var el_top =3D GetPageOffsetTop(el);=0A=
  var el_bottom =3D el_top + el.offsetHeight;=0A=
  var win_top =3D GetScrollTop(win);=0A=
  var win_height =3D GetWindowHeight(win);=0A=
  var win_bottom =3D win_top + win_height;=0A=
=0A=
  // Out of view?=0A=
  if (el_top < win_top ||=0A=
      el_bottom > win_bottom) {=0A=
=0A=
    var scrollto_y;=0A=
    if (alignment =3D=3D ALIGN_BOTTOM) {=0A=
      scrollto_y =3D el_bottom - win_height + 5;=0A=
    } else if (alignment =3D=3D ALIGN_MIDDLE) {=0A=
      scrollto_y =3D (el_top + el_bottom) / 2 - win_height/2;=0A=
    } else {=0A=
      scrollto_y =3D el_top - 5;        // ALIGN_TOP=0A=
    }=0A=
=0A=
    Debug("Scrolling to " + scrollto_y);=0A=
    win.scrollTo(0, scrollto_y);=0A=
  }=0A=
}=0A=
=0A=
function IsElementVisible(win, id) {=0A=
  var el =3D MaybeGetElement(win, id);=0A=
  if (el =3D=3D null) {=0A=
    return false;=0A=
  }=0A=
  var el_top =3D GetPageOffsetTop(el);=0A=
  var el_bottom =3D el_top + el.offsetHeight;=0A=
  var win_top =3D GetScrollTop(win);=0A=
  var win_bottom =3D win_top + GetWindowHeight(win);=0A=
  if (el_top >=3D win_top && el_bottom <=3D win_bottom) {=0A=
    return true;=0A=
  }=0A=
  return false;=0A=
}=0A=
=0A=
function GetWindowWidth(win) {=0A=
  // all except Explorer=0A=
  if ("innerWidth" in win) {=0A=
    return win.innerWidth;=0A=
  }=0A=
  // Explorer 6 Strict Mode=0A=
  else if ("documentElement" in win.document &&=0A=
           "clientWidth" in win.document.documentElement) {=0A=
    return win.document.documentElement.clientWidth;=0A=
  }=0A=
  // other Explorers=0A=
  else if ("clientWidth" in win.document.body) {=0A=
    return win.document.body.clientWidth;=0A=
  }=0A=
=0A=
  return 0;=0A=
}=0A=
=0A=
function GetWindowHeight(win) {=0A=
  // all except Explorer=0A=
  if ("innerHeight" in win) {=0A=
    return win.innerHeight;=0A=
  }=0A=
  // Explorer 6 Strict Mode=0A=
  else if ("documentElement" in win.document &&=0A=
           "clientHeight" in win.document.documentElement) {=0A=
    return win.document.documentElement.clientHeight;=0A=
  }=0A=
  // other Explorers=0A=
  else if ("clientHeight" in win.document.body) {=0A=
    return win.document.body.clientHeight;=0A=
  }=0A=
=0A=
  return 0;=0A=
}=0A=
=0A=
function GetAvailScreenWidth(win) {=0A=
  return win.screen.availWidth;=0A=
}=0A=
=0A=
function GetAvailScreenHeight(win) {=0A=
  return win.screen.availHeight;=0A=
}=0A=
=0A=
// Returns a "nice" window height.=0A=
// Use the screen height. (Or should we use the height of the current =
window?)=0A=
function GetNiceWindowHeight(win) {=0A=
  return Math.floor(0.8 * GetAvailScreenHeight(win));=0A=
}=0A=
=0A=
// Used for horizontally centering a new window of the given width in the=0A=
// available screen. Set the new window's distance from the left of the =
screen=0A=
// equal to this function's return value.=0A=
// Params: width: the width of the new window=0A=
// Returns: the distance from the left edge of the screen for the new =
window to=0A=
//   be horizontally centered=0A=
function GetCenteringLeft(win, width) {=0A=
  return (win.screen.availWidth - width) >> 1;=0A=
}=0A=
=0A=
// Used for vertically centering a new window of the given height in the=0A=
// available screen. Set the new window's distance from the top of the =
screen=0A=
// equal to this function's return value.=0A=
// Params: height: the height of the new window=0A=
// Returns: the distance from the top edge of the screen for the new =
window to=0A=
//   be vertically aligned.=0A=
function GetCenteringTop(win, height) {=0A=
  return (win.screen.availHeight - height) >> 1;=0A=
}=0A=
=0A=
/*=0A=
 * Opens a child popup window that has no browser toolbar/decorations.=0A=
 * (Copied from caribou's common.js library with small modifications.)=0A=
 *=0A=
 * @param url the URL for the new window (Note: this will be =
unique-ified)=0A=
 * @param opt_name the name of the new window=0A=
 * @param opt_width the width of the new window=0A=
 * @param opt_height the height of the new window=0A=
 * @param opt_center if true, the new window is centered in the =
available screen=0A=
 * @param opt_hide_scrollbars if true, the window hides the scrollbars=0A=
 * @param opt_noresize if true, makes window unresizable=0A=
 * @param opt_blocked_msg message warning that the popup has been blocked=0A=
 * @return a reference to the new child window=0A=
 */=0A=
function Popup(url, opt_name, opt_width, opt_height, opt_center,=0A=
               opt_hide_scrollbars, opt_noresize, opt_blocked_msg) {=0A=
  if (!opt_height) {=0A=
    opt_height =3D Math.floor(GetWindowHeight(window.top) * 0.8);=0A=
  }=0A=
  if (!opt_width) {=0A=
    opt_width =3D Math.min(GetAvailScreenWidth(window), opt_height);=0A=
  }=0A=
=0A=
  var features =3D "resizable=3D" + (opt_noresize ? "no" : "yes") + "," +=0A=
                 "scrollbars=3D" + (opt_hide_scrollbars ? "no" : "yes") =
+ "," +=0A=
                 "width=3D" + opt_width + ",height=3D" + opt_height;=0A=
  if (opt_center) {=0A=
    features +=3D ",left=3D" + GetCenteringLeft(window, opt_width) + "," =
+=0A=
                "top=3D" + GetCenteringTop(window, opt_height);=0A=
  }=0A=
  return OpenWindow(window, url, opt_name, features, opt_blocked_msg);=0A=
}=0A=
=0A=
/*=0A=
 * Opens a new window. Returns the new window handle. Tries to open the =
new=0A=
 * window using top.open() first. If that doesn't work, then tries =
win.open().=0A=
 * If that still doesn't work, prints an alert.=0A=
 * (Copied from caribou's common.js library with small modifications.)=0A=
 *=0A=
 * @param win the parent window from which to open the new child window=0A=
 * @param url the URL for the new window (Note: this will be =
unique-ified)=0A=
 * @param opt_name the name of the new window=0A=
 * @param opt_features the properties of the new window=0A=
 * @param opt_blocked_msg message warning that the popup has been blocked=0A=
 * @return a reference to the new child window=0A=
 */=0A=
function OpenWindow(win, url, opt_name, opt_features, opt_blocked_msg) {=0A=
  var newwin =3D OpenWindowHelper(top, url, opt_name, opt_features);=0A=
  if (!newwin || newwin.closed || !newwin.focus) {=0A=
    newwin =3D OpenWindowHelper(win, url, opt_name, opt_features);=0A=
  }=0A=
  if (!newwin || newwin.closed || !newwin.focus) {=0A=
    if (opt_blocked_msg) alert(opt_blocked_msg);=0A=
  } else {=0A=
    // Make sure that the window has the focus=0A=
    newwin.focus();=0A=
  }=0A=
  return newwin;=0A=
}=0A=
=0A=
/*=0A=
 * Helper for OpenWindow().=0A=
 * (Copied from caribou's common.js library with small modifications.)=0A=
 */=0A=
function OpenWindowHelper(win, url, name, features) {=0A=
  var newwin;=0A=
  if (features) {=0A=
    newwin =3D win.open(url, name, features);=0A=
  } else if (name) {=0A=
    newwin =3D win.open(url, name);=0A=
  } else {=0A=
    newwin =3D win.open(url);=0A=
  }=0A=
  return newwin;=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// DOM walking utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
=0A=
function MaybeEscape(str, escape) {=0A=
  return escape ? HtmlEscape(str) : str;=0A=
}=0A=
=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Window data=0A=
//-----------------------------------------------------------------------=
-=0A=
// Gets an array, which can store data for the window. This data=0A=
// is deleted when the window is unloaded.=0A=
var windata =3D [];=0A=
function GetWindowData(win) {=0A=
  var data =3D windata[win.name];=0A=
  if (!data) {=0A=
    windata[win.name] =3D data =3D [];=0A=
  }=0A=
  return data;=0A=
}=0A=
=0A=
// Clear js data for a window.=0A=
function ClearWindowData(win_name) {=0A=
  if (windata[win_name]) {=0A=
    windata[win_name] =3D null;=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// String utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
// Do html escaping=0A=
var amp_re_ =3D /&/g;=0A=
var lt_re_ =3D /</g;=0A=
var gt_re_ =3D />/g;=0A=
=0A=
// Convert text to HTML format. For efficiency, we just convert '&', =
'<', '>'=0A=
// characters.=0A=
// Note: Javascript >=3D 1.3 supports lambda expression in the =
replacement=0A=
// argument. But it's slower on IE.=0A=
// Note: we can also implement HtmlEscape by setting the value=0A=
// of a textnode and then reading the 'innerHTML' value, but that=0A=
// that turns out to be slower.=0A=
// Params: str: String to be escaped.=0A=
// Returns: The escaped string.=0A=
function HtmlEscape(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(amp_re_, "&amp;").replace(lt_re_, "&lt;").=0A=
    replace(gt_re_, "&gt;").replace(quote_re_, "&quot;");=0A=
}=0A=
=0A=
/** converts html entities to plain text.  It covers the most common =
named=0A=
 * entities and numeric entities.=0A=
 * It does not cover all named entities -- it covers =
&{lt,gt,amp,quot,nbsp}; but=0A=
 * does not handle some of the more obscure ones like &{ndash,eacute};.=0A=
 */=0A=
function HtmlUnescape(str) {=0A=
  if (!str) return "";=0A=
  return str.=0A=
    replace(/&#(\d+);/g,=0A=
      function (_, n) { return String.fromCharCode(parseInt(n, 10)); }).=0A=
    replace(/&#x([a-f0-9]+);/gi,=0A=
      function (_, n) { return String.fromCharCode(parseInt(n, 16)); }).=0A=
    replace(/&(\w+);/g, function (_, entity) {=0A=
      entity =3D entity.toLowerCase();=0A=
      return entity in HtmlUnescape.unesc ? HtmlUnescape.unesc[entity] : =
'?';=0A=
    });=0A=
}=0A=
HtmlUnescape.unesc =3D { lt: '<', gt: '>', quot: '"', nbsp: ' ', amp: =
'&' };=0A=
=0A=
// Replace multiple spaces with &nbsp; to retain whitespace formatting=0A=
// in addition to escaping '&', '<', and '>'.=0A=
var dbsp_re_ =3D /  /g;=0A=
var ret_re_ =3D /\r/g;=0A=
var nl_re_ =3D /\n/g;=0A=
function HtmlWhitespaceEscape(str) {=0A=
  str =3D HtmlEscape(str);=0A=
  str =3D str.replace(dbsp_re_, "&nbsp;&nbsp;");=0A=
  str =3D str.replace(ret_re_, "");=0A=
  str =3D str.replace(nl_re_, "<br>");=0A=
  return str;=0A=
}=0A=
=0A=
// Escape double quote '"' characters in addition to '&', '<', '>' so =
that a=0A=
// string can be included in an HTML tag attribute value within double =
quotes.=0A=
// Params: str: String to be escaped.=0A=
// Returns: The escaped string.=0A=
var quote_re_ =3D /\"/g;=0A=
function QuoteEscape(str) {=0A=
  return HtmlEscape(str).replace(quote_re_, "&quot;");=0A=
}=0A=
=0A=
var JS_SPECIAL_RE_ =3D /[\'\\\r\n\b\"<>&]/g;=0A=
=0A=
function JSEscOne_(s) {=0A=
  if (!JSEscOne_.js_escs_) {=0A=
    var escapes =3D {};=0A=
    escapes['\\'] =3D '\\\\';=0A=
    escapes['\''] =3D '\\047';=0A=
    escapes['\n'] =3D '\\n';=0A=
    escapes['\r'] =3D '\\r';=0A=
    escapes['\b'] =3D '\\b';=0A=
    escapes['\"'] =3D '\\042';=0A=
    escapes['<'] =3D  '\\074';=0A=
    escapes['>'] =3D  '\\076';=0A=
    escapes['&'] =3D  '\\046';=0A=
=0A=
    JSEscOne_.js_escs_ =3D escapes;=0A=
  }=0A=
=0A=
  return JSEscOne_.js_escs_[s];=0A=
}=0A=
=0A=
/** convert a string to a javascript string literal.  This function has =
the=0A=
  * property that the return value is also already html escaped, so the =
output=0A=
  * can be embedded in an html handler attribute.=0A=
  */=0A=
function ToJSString(s) {=0A=
  return "'" + s.toString().replace(JS_SPECIAL_RE_, JSEscOne_) + "'";=0A=
}=0A=
=0A=
// converts multiple ws chars to a single space, and strips=0A=
// leading and trailing ws=0A=
var spc_re_ =3D /\s+/g;=0A=
var beg_spc_re_ =3D /^ /;=0A=
var end_spc_re_ =3D / $/;=0A=
function CollapseWhitespace(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(spc_re_, " ").replace(beg_spc_re_, "").=0A=
    replace(end_spc_re_, "");=0A=
}=0A=
=0A=
var newline_re_ =3D /\r?\n/g;=0A=
var spctab_re_ =3D /[ \t]+/g;=0A=
var nbsp_re_ =3D /\xa0/g;=0A=
function StripNewlines(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(newline_re_, " ");=0A=
}=0A=
=0A=
function CanonicalizeNewlines(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(newline_re_, '\n');=0A=
}=0A=
=0A=
function HtmlifyNewlines(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(newline_re_, "<br>");=0A=
}=0A=
=0A=
function NormalizeSpaces(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(spctab_re_, " ").replace(nbsp_re_, " ");=0A=
}=0A=
=0A=
// URL encodes the string.=0A=
function UrlEncode(str) {=0A=
  return encodeURIComponent(str);=0A=
}=0A=
=0A=
function Trim(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(/^\s+/, "").replace(/\s+$/, "");=0A=
}=0A=
=0A=
function EndsWith(str, suffix) {=0A=
  if (!str) return !suffix;=0A=
  return (str.lastIndexOf(suffix) =3D=3D (str.length - suffix.length));=0A=
}=0A=
=0A=
// Check if a string is empty=0A=
function IsEmpty(str) {=0A=
  return CollapseWhitespace(str) =3D=3D "";=0A=
}=0A=
=0A=
// Check if a character is a letter=0A=
function IsLetterOrDigit(ch) {=0A=
  return ((ch >=3D "a" && ch <=3D "z") ||=0A=
          (ch >=3D "A" && ch <=3D "Z") ||=0A=
         (ch >=3D '0' && ch <=3D '9'));=0A=
}=0A=
=0A=
// Check if a character is a space character=0A=
function IsSpace(ch) {=0A=
  return (" \t\r\n".indexOf(ch) >=3D 0);=0A=
}=0A=
=0A=
// Converts any instances of "\r" or "\r\n" style EOLs into "\n" (Line =
Feed),=0A=
// and also trim the extra newlines and whitespaces at the end.=0A=
var eol_re_ =3D /\r\n?/g;=0A=
var trailingspc_re_ =3D /[\n\t ]+$/;=0A=
function NormalizeText(str) {=0A=
  return str.replace(eol_re_, "\n").replace(trailingspc_re_, "");=0A=
}=0A=
=0A=
// Inserts <wbr>s (word break tag) after every n non-space chars and/or=0A=
// after or before certain special chars. The input string should be =
plain=0A=
// text that has not yet been HTML-escaped.=0A=
// Params:=0A=
//   str: The string to insert <wbr>s into.=0A=
//   n: The maximum number of consecutive non-space characters to allow =
before=0A=
//     adding a <wbr>. To turn off this rule (i.e. if you only want to =
add=0A=
//     breaks based on special characters), pass in the value -1.=0A=
//   chars_to_break_after: The list of special characters (concatenated =
into a=0A=
//     string) after which a <wbr> should be added, if there is no =
natural=0A=
//     break at that point. To turn off this rule, pass in the empty =
string.=0A=
//   chars_to_break_before: The list of special characters (concatenated =
into a=0A=
//     string) before which a <wbr> should be added, if there is no =
natural=0A=
//     break at that point. To turn off this rule, pass in the empty =
string.=0A=
// Returns: The string str htmlescaped, and with <wbr>s inserted =
according to=0A=
//   the rules specified by the other arguments.=0A=
function HtmlEscapeInsertWbrs(str, n, chars_to_break_after,=0A=
                              chars_to_break_before) {=0A=
  AssertNumArgs(4);=0A=
=0A=
  var out =3D '';=0A=
  var strpos =3D 0;=0A=
  var spc =3D 0;=0A=
=0A=
  for (var i =3D 1; i < str.length; ++i) {=0A=
    var prev_char =3D str.charAt(i - 1);=0A=
    var next_char =3D str.charAt(i);=0A=
    if (IsSpace(next_char)) {=0A=
      spc =3D i;=0A=
    } else if (i - spc =3D=3D n ||=0A=
               chars_to_break_after.indexOf(prev_char) !=3D -1 ||=0A=
               chars_to_break_before.indexOf(next_char) !=3D -1) {=0A=
      out +=3D HtmlEscape(str.substring(strpos, i)) + '<wbr>';=0A=
      strpos =3D i;=0A=
      spc =3D i;=0A=
    }=0A=
  }=0A=
  out +=3D HtmlEscape(str.substr(strpos));=0A=
  return out;=0A=
}=0A=
=0A=
// Converts a string to its canonicalized label form.=0A=
var illegal_chars_re_ =3D /[ \/(){}&|\\\"\000]/g;=0A=
function CanonicalizeLabel(str, lowercase) {=0A=
  var uppercase =3D str.replace(illegal_chars_re_, '-');=0A=
  return lowercase ? uppercase.toLowerCase() : uppercase;=0A=
}=0A=
=0A=
// Case-insensitive string comparator=0A=
function CompareStringsIgnoreCase(s1, s2) {=0A=
  s1 =3D s1.toLowerCase();=0A=
  s2 =3D s2.toLowerCase();=0A=
=0A=
  if (s1 < s2) {=0A=
    return -1;=0A=
  } else if (s1 =3D=3D s2) {=0A=
    return 0;=0A=
  } else {=0A=
    return 1;=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// TextArea utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
=0A=
// Gets the cursor pos in a text area. Returns -1 if the cursor pos =
cannot=0A=
// be determined or if the cursor out of the textfield.=0A=
function GetCursorPos(win, textfield) {=0A=
  try {=0A=
    if (IsDefined(textfield.selectionEnd)) {=0A=
      // Mozilla directly supports this=0A=
      return textfield.selectionEnd;=0A=
=0A=
    } else if (win.document.selection && =
win.document.selection.createRange) {=0A=
      // IE doesn't export an accessor for the endpoints of a selection.=0A=
      // Instead, it uses the TextRange object, which has an extremely =
obtuse=0A=
      // API. Here's what seems to work:=0A=
=0A=
      // (1) Obtain a textfield from the current selection (cursor)=0A=
      var tr =3D win.document.selection.createRange();=0A=
=0A=
      // Check if the current selection is in the textfield=0A=
      if (tr.parentElement() !=3D textfield) {=0A=
        return -1;=0A=
      }=0A=
=0A=
      // (2) Make a text range encompassing the textfield=0A=
      var tr2 =3D tr.duplicate();=0A=
      tr2.moveToElementText(textfield);=0A=
=0A=
      // (3) Move the end of the copy to the beginning of the selection=0A=
      tr2.setEndPoint("EndToStart", tr);=0A=
=0A=
      // (4) The span of the textrange copy is equivalent to the cursor =
pos=0A=
      var cursor =3D tr2.text.length;=0A=
=0A=
      // Finally, perform a sanity check to make sure the cursor is in =
the=0A=
      // textfield. IE sometimes screws this up when the window is =
activated=0A=
      if (cursor > textfield.value.length) {=0A=
        return -1;=0A=
      }=0A=
      return cursor;=0A=
    } else {=0A=
      Debug("Unable to get cursor position for: " + navigator.userAgent);=0A=
=0A=
      // Just return the size of the textfield=0A=
      // TODO: Investigate how to get cursor pos in Safari!=0A=
      return textfield.value.length;=0A=
    }=0A=
  } catch (e) {=0A=
    DumpException(e, "Cannot get cursor pos");=0A=
  }=0A=
  =0A=
  return -1;=0A=
}=0A=
=0A=
function SetCursorPos(win, textfield, pos) {=0A=
  if (IsDefined(textfield.selectionEnd) &&=0A=
      IsDefined(textfield.selectionStart)) {=0A=
    // Mozilla directly supports this=0A=
    textfield.selectionStart =3D pos;=0A=
    textfield.selectionEnd =3D pos;=0A=
=0A=
  } else if (win.document.selection && textfield.createTextRange) {=0A=
    // IE has textranges. A textfield's textrange encompasses the=0A=
    // entire textfield's text by default=0A=
    var sel =3D textfield.createTextRange();=0A=
=0A=
    sel.collapse(true);=0A=
    sel.move("character", pos);=0A=
    sel.select();=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Array utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
// Find an item in an array, returns the key, or -1 if not found=0A=
function FindInArray(array, x) {=0A=
  for (var i =3D 0; i < array.length; i++) {=0A=
    if (array[i] =3D=3D x) {=0A=
      return i;=0A=
    }=0A=
  }=0A=
  return -1;=0A=
}=0A=
=0A=
// Inserts an item into an array, if it's not already in the array=0A=
function InsertArray(array, x) {=0A=
  if (FindInArray(array, x) =3D=3D -1) {=0A=
    array[array.length] =3D x;=0A=
  }=0A=
}=0A=
=0A=
// Delete an element from an array=0A=
function DeleteArrayElement(array, x) {=0A=
  var i =3D 0;=0A=
  while (i < array.length && array[i] !=3D x)=0A=
    i++;=0A=
  array.splice(i, 1);=0A=
}=0A=
=0A=
// Copies a flat array=0A=
function CopyArray(array) {=0A=
  var copy =3D [];=0A=
  for (var i =3D 0; i < array.length; i++) {=0A=
    copy[i] =3D array[i];=0A=
  }=0A=
  return copy;=0A=
}=0A=
=0A=
// Clone an object (recursively)=0A=
function CloneObject(x) {=0A=
  if ((typeof x) =3D=3D "object") {=0A=
    var y =3D [];=0A=
    for (var i in x) {=0A=
      y[i] =3D CloneObject(x[i]);=0A=
    }=0A=
    return y;=0A=
  }=0A=
  return x;=0A=
}=0A=
=0A=
/**=0A=
 * Clone an event; cannot use CloneObject(event)=0A=
 * because it suffers from infinite recursion.=0A=
 * Thus, only a subset of the event properties are=0A=
 * cloned -- if you need others, just add them=0A=
 * to this function (just don't remove any!)=0A=
 */=0A=
function CloneEvent(ev) {=0A=
  var clone =3D {};=0A=
  clone.clientX =3D ev.clientX;=0A=
  clone.clientY =3D ev.clientY;=0A=
  clone.pageX =3D ev.pageX;=0A=
  clone.pageY =3D ev.pageY;=0A=
  clone.type =3D ev.type;=0A=
  clone.srcElement =3D ev.srcElement;=0A=
  clone.target =3D ev.target;=0A=
  clone.cancelBubble =3D ev.cancelBubble;=0A=
  clone.explicitOriginalTarget =3D ev.explicitOriginalTarget;=0A=
  // add more properties here=0A=
=0A=
  return clone;=0A=
}=0A=
=0A=
function GetEventTarget(/*Event*/ ev) {=0A=
// Event is not a type in IE; IE uses Object for events=0A=
//  AssertType(ev, Event, 'arg passed to GetEventTarget not an Event');=0A=
  return ev.srcElement || ev.target;=0A=
}=0A=
=0A=
/** cancels the event */=0A=
// from http://www.quirksmode.org/js/events_order.html=0A=
function CancelEvent(/*Event*/ ev) {=0A=
  if (is_ie) {=0A=
    ev.cancelBubble =3D true;=0A=
  } else if (ev.stopPropagation) {=0A=
    ev.stopPropagation();=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Formatting utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
// A simple printf type function that takes in a template array, and a =
data=0A=
// array. e.g. PrintArray(["a",,"b",,"c"], ["x", "y"]) =3D> axbyc=0A=
function PrintArray(array, data) {=0A=
  // Check that the argument count is correct.=0A=
  AssertEquals(array.length, data.length * 2 + 1);=0A=
=0A=
  for (var i =3D 0, idx =3D 1; i < data.length; i++, idx +=3D 2) {=0A=
    array[idx] =3D data[i];=0A=
  }=0A=
  return array.join("");=0A=
}=0A=
=0A=
function ImageHtml(url, attributes) {=0A=
  return "<img " + attributes + " src=3D" + url + ">";=0A=
}=0A=
=0A=
// Formats an object id that has two id numbers, eg, foo_3_7=0A=
function MakeId3(idprefix, m, n) {=0A=
  return idprefix + m + "_" + n;=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Email address parsing=0A=
//-----------------------------------------------------------------------=
-=0A=
// Parse an email address of the form "name" <address> into [name, =
address]=0A=
function ParseAddress(addr) {=0A=
  var name =3D "";=0A=
  var address =3D "";=0A=
  for (var i =3D 0; i < addr.length;) {=0A=
    var token =3D GetEmailToken(addr, i);=0A=
    if (token.charAt(0) =3D=3D '<') {=0A=
      var end =3D token.indexOf(">");=0A=
      address =3D token.substring(1, (end !=3D -1) ? end : token.length);=0A=
    } else if (address =3D=3D "") {=0A=
      name +=3D token;=0A=
    }=0A=
    i +=3D token.length;=0A=
  }=0A=
=0A=
  // Check if it's a simple email address of the form "jlim@google.com"=0A=
  if (address =3D=3D "" && name.indexOf("@") !=3D -1) {=0A=
    address =3D name;=0A=
    name =3D "";=0A=
  }=0A=
=0A=
  name =3D CollapseWhitespace(name);=0A=
  name =3D StripQuotes(name, "'");=0A=
  name =3D StripQuotes(name, "\"");=0A=
  address =3D CollapseWhitespace(address);=0A=
  return [name, address];=0A=
}=0A=
=0A=
// Given an email address, get the address part=0A=
function GetAddress(address) {=0A=
  return ParseAddress(address)[1];=0A=
}=0A=
=0A=
// Get the username part of an email address=0A=
function GetAddressUsername(address) {=0A=
  address =3D GetAddress(address);=0A=
  var at =3D address.indexOf("@");=0A=
  return (at =3D=3D -1) ? address : address.substr(0, at);=0A=
}=0A=
=0A=
// Given an email address, get the personal part=0A=
function GetPersonal(address) {=0A=
  return ParseAddress(address)[0];=0A=
}=0A=
=0A=
// Given an address, get a short name=0A=
function GetPersonalElseUsername(address) {=0A=
  var personal =3D GetPersonal(address);=0A=
  if (personal !=3D "") {=0A=
    return personal;=0A=
  } else {=0A=
    return GetAddressUsername(address);=0A=
  }=0A=
}=0A=
=0A=
// Strip ' or " chars around a string=0A=
function StripQuotes(str, quotechar) {=0A=
  var len =3D str.length;=0A=
  if (str.charAt(0) =3D=3D quotechar &&=0A=
      str.charAt(len - 1) =3D=3D quotechar) {=0A=
    return str.substring(1, len - 1);=0A=
  }=0A=
  return str;=0A=
}=0A=
=0A=
// Convert a string containing list of email addresses into an array=0A=
// of strings=0A=
function EmailsToArray(str) {=0A=
  var result =3D [];=0A=
  var email =3D "";=0A=
  var token;=0A=
=0A=
  for (var i =3D 0; i < str.length; ) {=0A=
    token =3D GetEmailToken(str, i);=0A=
    if (token =3D=3D ",") {=0A=
      AddEmailAddress(result, email);=0A=
      email =3D "";=0A=
      i++;=0A=
      continue;=0A=
    }=0A=
    email +=3D token;=0A=
    i +=3D token.length;=0A=
  }=0A=
=0A=
  // Add last=0A=
  if (email !=3D"" || token =3D=3D ",") {=0A=
    AddEmailAddress(result, email);=0A=
  }=0A=
  return result;=0A=
}=0A=
=0A=
// Get the next token from a position in an address string=0A=
var openers_ =3D "\"<([";=0A=
var closers_ =3D "\">)]";=0A=
function GetEmailToken(str, pos) {=0A=
  var ch =3D str.charAt(pos);=0A=
  var p =3D openers_.indexOf(ch);=0A=
  if (p =3D=3D -1)=0A=
    return ch;=0A=
  var end_pos =3D str.indexOf(closers_.charAt(p), pos + 1);=0A=
  var token =3D (end_pos >=3D 0) ? str.substring(pos, end_pos + 1) :=0A=
              str.substr(pos);=0A=
  return token;=0A=
}=0A=
=0A=
// Add an email address to the result array.=0A=
function AddEmailAddress(result, email) {=0A=
  email =3D CleanEmailAddress(email);=0A=
  result[result.length] =3D email;=0A=
}=0A=
=0A=
// Clean up email address:=0A=
// - remove extra spaces=0A=
// - Surround name with quotes if it contains special characters=0A=
// to check if we need " quotes=0A=
// Note: do not use /g in the regular expression, otherwise the=0A=
// regular expression cannot be reusable.=0A=
var specialchars_re_ =3D /[()<>@,;:\\\".\[\]]/;=0A=
=0A=
function CleanEmailAddress(str) {=0A=
  var name_address =3D ParseAddress(str);=0A=
  var name =3D name_address[0];=0A=
  var address =3D name_address[1];=0A=
=0A=
  if (name.indexOf("\"") =3D=3D -1) {  // If there's no "=0A=
    var quote_needed =3D specialchars_re_.test(name);=0A=
    if (quote_needed) {=0A=
      name =3D "\"" + name + "\"";=0A=
    }=0A=
  }=0A=
=0A=
  if (name =3D=3D "")=0A=
    return address;=0A=
  else if (address =3D=3D "")=0A=
    return name;=0A=
  else=0A=
    return name + " <" + address + ">";=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Misc=0A=
//-----------------------------------------------------------------------=
-=0A=
// Compare long hex strings=0A=
function CompareID(a, b) {=0A=
  if (a.length !=3D b.length) {=0A=
    return (a.length - b.length);=0A=
  } else {=0A=
    return (a < b) ? -1 : (a > b) ? 1 : 0;=0A=
  }=0A=
}=0A=
=0A=
// Check if a value is defined=0A=
function IsDefined(value) {=0A=
  return (typeof value) !=3D 'undefined';=0A=
}=0A=
=0A=
function GetKeyCode(event) {=0A=
  var code;=0A=
  if (event.keyCode) {=0A=
    code =3D event.keyCode;=0A=
  } else if (event.which) {=0A=
    code =3D event.which;=0A=
  }=0A=
  return code;=0A=
}=0A=
=0A=
// define a forid function to fetch a DOM node by id.=0A=
function forid_1(id) {=0A=
  return document.getElementById(id);=0A=
}=0A=
function forid_2(id) {=0A=
  return document.all[id];=0A=
}=0A=
=0A=
/**=0A=
 * Fetch an HtmlElement by id.=0A=
 * DEPRECATED: use $ in dom.js=0A=
 */=0A=
var forid =3D document.getElementById ? forid_1 : forid_2;=0A=
=0A=
=0A=
=0A=
function log(msg) {=0A=
  /* a top level window is its own parent.  Use !=3D or else fails on IE =
with=0A=
   * infinite loop.=0A=
   */=0A=
  try {=0A=
    if (window.parent !=3D window && window.parent.log) {=0A=
      window.parent.log(window.name + '::' + msg);=0A=
      return;=0A=
    }=0A=
  } catch (e) {=0A=
    // Error: uncaught exception: Permission denied to get property =
Window.log=0A=
  }=0A=
  var logPane =3D forid('log');=0A=
  if (logPane) {=0A=
    var logText =3D '<p class=3Dlogentry><span class=3Dlogdate>' + new =
Date() +=0A=
                  '</span><span class=3Dlogmsg>' + msg + '</span></p>';=0A=
    logPane.innerHTML =3D logText + logPane.innerHTML;=0A=
  } else {=0A=
    window.status =3D msg;=0A=
  }=0A=
}=0A=

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-app/scripts/107652916-dom.common.js

=0A=
// Commonly-used functions, reduced.=0A=
=0A=
function d(s) {return document.getElementById(s);}=0A=
function dE(o,s) {return o.getElementsByTagName(s);}=0A=
=0A=
/**=0A=
 * toggleDisplay()=0A=
 *=0A=
 * Will toggle the display property of the style object for any=0A=
 * DOM element or object that supports style as a property.=0A=
 *=0A=
 * Warning: This'll wreak havoc if applied to <TR> elements. Those=0A=
 * babies got different types "table-row" | "block" dependant on =0A=
 * what browser's being used.=0A=
 *=0A=
 * Warning: Written in Texas.  Yeehaw.=0A=
 *=0A=
 * Typical usage:=0A=
 * toggleDisplay(document.getElementById("foo"));=0A=
 */=0A=
function toggleDisplay(o)=0A=
{  =0A=
  var display =3D getStyle(o, "display"); =0A=
  =0A=
  if (o.style)=0A=
    o.style.display =3D=0A=
      (display !=3D "none") ? "none" : getDisplayStyleByTagName(o);=0A=
}=0A=
=0A=
=0A=
function getDisplayStyleByTagName(o)=0A=
{=0A=
  var n =3D o.nodeName.toLowerCase(); =0A=
  return (=0A=
          n =3D=3D "span"=0A=
          || n =3D=3D "img"=0A=
          || n =3D=3D "a"=0A=
          ) ? "inline" : "block";=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * hideElement()=0A=
 *=0A=
 * Hides an element from view.=0A=
 *=0A=
 * Typical usage:=0A=
 * hideElement(getElement("the-id-of-the-element"));=0A=
 */=0A=
function hideElement(o)=0A=
{=0A=
  if (o && o.style) o.style.display =3D "none";=0A=
}=0A=
=0A=
=0A=
=0A=
/**=0A=
 * showElement()=0A=
 *=0A=
 * Shows an element that was hidden from view.=0A=
 *=0A=
 * Typical usage:=0A=
 * showElement(getElement("the-id-of-the-element"));=0A=
 */=0A=
function showElement(o)=0A=
{=0A=
  =0A=
  if (o && o.style) o.style.display =3D getDisplayStyleByTagName(o);=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * getElement()=0A=
 *=0A=
 * Returns an element by its ID or shows an alert if it can't be found.=0A=
 *=0A=
 * Typical usage:=0A=
 * getElement("the-id-of-the-element");=0A=
 */=0A=
function getElement(id) {=0A=
  var e =3D d(id);=0A=
  if (!e) {=0A=
    alert("Cannot get element: " + id);=0A=
  }=0A=
  return e;=0A=
}=0A=
=0A=
/**=0A=
 * setInnerHTML()=0A=
 *=0A=
 * Sets the innerHTML of an element or shows an alert if can't be set.=0A=
 *=0A=
 * Typical usage:=0A=
 * setInnerHTML("the-id-of-the-element");=0A=
 */=0A=
function setInnerHTML(id, html) {=0A=
  try {=0A=
    getElement(id).innerHTML =3D html;=0A=
  } catch (ex) {=0A=
    alert("Cannot set inner HTML: " + id);=0A=
  }=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * setCssStyle()=0A=
 *=0A=
 * Sets the style of an element by its id or shows an alert if can't be =
set.=0A=
 *=0A=
 * Typical usage:=0A=
 * setCssStyle("the-id-of-the-element", "display", "block");=0A=
 */=0A=
function setCssStyle(id, name, value) {=0A=
  try {=0A=
    getElement(id).style[name] =3D value;=0A=
  } catch (ex) {=0A=
    alert("Cannot set style: " + id);=0A=
  }=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * getStyle()=0A=
 *=0A=
 * Gets the computed style of any object.=0A=
 *=0A=
 * WARNING: Produces unexpected results in Safari.  To achieve best =0A=
 * results, explicitly set the style property for that browser when the =0A=
 * element is rendered.=0A=
 *=0A=
 * Typical usage:=0A=
 * getStyle(object, "display");=0A=
 */=0A=
function getStyle(el, style) {=0A=
  if (!document.getElementById || !el) return;=0A=
  =0A=
  if (document.defaultView=0A=
      && document.defaultView.getComputedStyle) {=0A=
      return document.defaultView.=0A=
        getComputedStyle(el, "").getPropertyValue(style);=0A=
  }  =0A=
  else if (el.currentStyle) {=0A=
    return el.currentStyle[style];=0A=
  }  =0A=
  else { =0A=
    return el.style.display;=0A=
  }=0A=
}=0A=
=0A=
/**=0A=
 * getStyleAttribute()=0A=
 *=0A=
 * Returns the style attribute of the specified node.=0A=
 */=0A=
function getStyleAttribute(node) {=0A=
  if (Detect.IE()) {=0A=
    return node.getAttribute('style').value;=0A=
  }else {=0A=
    return node.getAttribute('style');=0A=
  }=0A=
}=0A=
=0A=
=0A=
/*=0A=
 * showProps()=0A=
 *=0A=
 * Displays all the properties for a given element=0A=
 */=0A=
function showProps(o) {=0A=
	var s=3D""; for (var p in o) {=0A=
		s+=3Dp+": "+o[p]+"\n<br />";=0A=
	}=0A=
	document.write(s);=0A=
}=0A=
=0A=
=0A=
=0A=
function setIFrameEvent(iframe, eventName, func)=0A=
{=0A=
  if (document.all) {=0A=
    eval('getIFrameDocument(iframe).on' + eventName + ' =3D func;');=0A=
  } else {=0A=
    iframe.contentWindow.addEventListener(eventName, func, true);=0A=
  }=0A=
}=0A=
=0A=
function setIFrameBody(iframe, strStyle, innerHtml) =0A=
{=0A=
  if (!innerHtml) innerHtml =3D '';=0A=
  if (innerHtml =3D=3D '' && Detect.IE()) {=0A=
    innerHtml =3D '<div></div>';=0A=
  }=0A=
  var doc =3D getIFrameDocument(iframe);=0A=
  doc.open();=0A=
  doc.write('<head></head><body style=3D"' + strStyle + '">'=0A=
    + innerHtml + '</body>');=0A=
  doc.close();=0A=
}=0A=
=0A=
=0A=
function getIFrameDocument(iframe)=0A=
{=0A=
  if (Detect.IE()) {=0A=
    return iframe.document;=0A=
  } else {=0A=
    return iframe.contentDocument;=0A=
  }=0A=
}=0A=
=0A=
function getIFrame(strId)=0A=
{=0A=
  if (Detect.IE()) {=0A=
    return document.frames[strId];=0A=
  } else {=0A=
    return document.getElementById(strId);=0A=
  }=0A=
}=0A=
=0A=
=0A=
function createElementandAppend(nodeName, strId, appendTo) {=0A=
  var el =3D document.createElement(nodeName);=0A=
  el.setAttribute("id", strId);=0A=
  if (appendTo) {=0A=
    appendTo.appendChild(el); =0A=
  } else {=0A=
    document.body.appendChild(el); =0A=
  }=0A=
  return el; =0A=
}=0A=
=0A=
function createElementandInsertBefore(nodeName, strId, appendTo, =
sibling) {=0A=
  var el =3D document.createElement(nodeName);=0A=
  el.setAttribute("id", strId);=0A=
  if (appendTo) {=0A=
    appendTo.insertBefore(el, sibling); =0A=
  } else {=0A=
    document.body.insertBefore(el, sibling); =0A=
  }=0A=
  return el; =0A=
}=0A=
=0A=
=0A=
/**=0A=
* getXY()=0A=
 *=0A=
 * Returns the position of any element as an object.=0A=
 *=0A=
 * Typical usage:=0A=
 * var pos =3D getXY(object);=0A=
 * alert(pos.x + " " +pos.y);=0A=
 */=0A=
function getXY(el) {=0A=
  var x =3D el.offsetLeft;=0A=
  var y =3D el.offsetTop;=0A=
  if (el.offsetParent !=3D null) {=0A=
    var pos =3D getXY(el.offsetParent);=0A=
    x +=3D pos.x;=0A=
    y +=3D pos.y;=0A=
  }=0A=
  return {x: x, y: y}=0A=
}=0A=
=0A=
// The following 3 functions are taken from common.js=0A=
function hasClass(el, cl) {=0A=
  if (el =3D=3D null || el.className =3D=3D null) return false;=0A=
  var classes =3D el.className.split(" ");=0A=
  for (var i =3D 0; i < classes.length; i++) {=0A=
    if (classes[i] =3D=3D cl) {=0A=
      return true;=0A=
    }=0A=
  }=0A=
  return false;=0A=
}=0A=
=0A=
// Add a class to element=0A=
function addClass(el, cl) {=0A=
  if (hasClass(el, cl)) return;=0A=
  el.className +=3D " " + cl;=0A=
} =0A=
=0A=
// Remove a class from an element=0A=
function removeClass(el, cl) {=0A=
  if (el.className =3D=3D null) return;=0A=
  var classes =3D el.className.split(" ");=0A=
  var result =3D [];=0A=
  var changed =3D false;=0A=
  for (var i =3D 0; i < classes.length; i++) {=0A=
    if (classes[i] !=3D cl) {=0A=
      if (classes[i]) { result.push(classes[i]); }=0A=
    } else {=0A=
      changed =3D true;=0A=
    } =0A=
  } =0A=
  if (changed) { el.className =3D result.join(" "); }=0A=
} =0A=
=0A=
function toggleClass(el, cl) {=0A=
  if (hasClass(el, cl)) {=0A=
    removeClass(el, cl);=0A=
  } else {=0A=
    addClass(el, cl);=0A=
  }=0A=
}=0A=
=0A=
=0A=
/* Constants for node types, since IE doesn't support Node.TEXT_NODE */=0A=
var TEXT_NODE =3D 3;=0A=
var ELEMENT_NODE =3D 1;=0A=
=0A=
=0A=

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_0074_01C87162.F6428F30"


------=_NextPart_001_0074_01C87162.F6428F30
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://timedlines.blogspot.com/2008/02/chronic-pain.html

=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 lang=3Den xml:lang=3D"en" =
xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>TIMEDlines - A =
reason: CHRONIC PAIN</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3DUTF-8">
<META content=3Dtrue name=3DMSSmartTagsPreventParsing>
<META content=3D"MSHTML 6.00.6000.16608" name=3DGENERATOR><LINK=20
title=3D"TIMEDlines - A reason - Atom"=20
href=3D"http://timedlines.blogspot.com/feeds/posts/default"=20
type=3Dapplication/atom+xml rel=3Dalternate><LINK=20
title=3D"TIMEDlines - A reason - RSS"=20
href=3D"http://timedlines.blogspot.com/feeds/posts/default?alt=3Drss"=20
type=3Dapplication/rss+xml rel=3Dalternate><LINK=20
title=3D"TIMEDlines - A reason - Atom"=20
href=3D"http://www.blogger.com/feeds/20733543/posts/default"=20
type=3Dapplication/atom+xml rel=3Dservice.post><LINK title=3DRSD=20
href=3D"http://www.blogger.com/rsd.g?blogID=3D20733543" =
type=3Dapplication/rsd+xml=20
rel=3DEditURI><LINK title=3D"TIMEDlines - A reason - Atom"=20
href=3D"http://timedlines.blogspot.com/feeds/7990357494218168639/comments=
/default"=20
type=3Dapplication/atom+xml rel=3Dalternate>
<STYLE type=3Dtext/css>@import url( =
http://www.blogger.com/css/blog_controls.css );
@import url( =
http://www.blogger.com/dyn-css/authorization.css?targetBlogID=3D20733543 =
);
</STYLE>

<SCRIPT src=3D"http://www.blogger.com/js/backlink.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.blogger.com/js/backlink_control.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>var BL_backlinkURL =3D =
"http://www.blogger.com/dyn-js/backlink_count.js";var BL_blogId =3D =
"20733543";</SCRIPT>
<LINK href=3D"style.css" type=3Dtext/css rel=3Dstylesheet>
<STYLE type=3Dtext/css>BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; =
PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 75% Helvetica, Arial, =
sans-serif; COLOR: #474b4e; PADDING-TOP: 0px; TEXT-ALIGN: center
}
A {
	FONT-WEIGHT: bold; COLOR: #6fb0e2; TEXT-DECORATION: none
}
A:visited {
	COLOR: #33595e
}
A:hover {
	COLOR: #0094f0; TEXT-DECORATION: underline
}
H1 {
	FONT-SIZE: 1.5em; MARGIN: 0px; TEXT-TRANSFORM: lowercase; COLOR: =
#7b8186
}
H1 A {
	COLOR: #7b8186
}
H2 {
	FONT-SIZE: 1em; BACKGROUND: =
url(http://www.blogblog.com/snapshot_sable/bg-header1.gif) no-repeat =
right bottom; PADDING-BOTTOM: 2px; MARGIN: 2em 0px 0px; COLOR: #7b8186
}
#comments H4 {
	FONT-SIZE: 1em; BACKGROUND: =
url(http://www.blogblog.com/snapshot_sable/bg-header1.gif) no-repeat =
right bottom; PADDING-BOTTOM: 2px; MARGIN: 2em 0px 0px; COLOR: #7b8186
}

@media All   =20
{
H3 {
	FONT-SIZE: 1em; BACKGROUND: =
url(http://www.blogblog.com/snapshot_sable/bg-header1.gif) no-repeat =
right bottom; PADDING-BOTTOM: 2px; MARGIN: 2em 0px 0px
}

}

@media Handheld   =20
{
H3 {
	BACKGROUND: none transparent scroll repeat 0% 0%
}
    }
H4 {
	FONT-SIZE: 0.9em; TEXT-TRANSFORM: lowercase; LETTER-SPACING: 2px
}
H5 {
	FONT-SIZE: 0.9em; TEXT-TRANSFORM: lowercase; LETTER-SPACING: 2px
}
H5 {
	COLOR: #7b8186
}
H6 {
	FONT-SIZE: 0.8em; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 2px
}
P {
	MARGIN: 0px 0px 1em
}
IMG {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; MARGIN: 0px; BORDER-RIGHT-WIDTH: 0px
}
FORM {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; MARGIN: 0px; BORDER-RIGHT-WIDTH: 0px
}

@media All   =20
{
#content {
	BACKGROUND: url(http://www.blogblog.com/snapshot_sable/bg-body.gif) =
#fff repeat-y 0px 0px; MARGIN: 0px auto; WIDTH: 700px; TEXT-ALIGN: left
}
#header {
	BACKGROUND: =
url(http://www.blogblog.com/snapshot_sable/bg-headerdiv.gif) #d8dadc =
repeat-y 0px 0px
}
#header DIV {
	BACKGROUND: url(http://www.blogblog.com/snapshot_sable/header-03.gif) =
no-repeat left bottom
}
#main {
	PADDING-RIGHT: 12px; BORDER-TOP: #fff 1px solid; PADDING-LEFT: 12px; =
FLOAT: left; PADDING-BOTTOM: 10px; WIDTH: 404px; LINE-HEIGHT: 1.4; =
PADDING-TOP: 10px; voice-family: inherit
}

}

@media Handheld   =20
{
#content {
	WIDTH: 90%
}
#header {
	BACKGROUND: #d8dadc
}
#header DIV {
	BACKGROUND: none transparent scroll repeat 0% 0%
}
#main {
	FLOAT: none; WIDTH: 100%
}
    }
#main {
=09
}

@media All   =20
{
#sidebar {
	PADDING-RIGHT: 0px; BORDER-TOP: #fff 1px solid; PADDING-LEFT: 7px; =
BACKGROUND: url(http://www.blogblog.com/snapshot_sable/bg-sidebar3.gif) =
#fff no-repeat 1px 0px; PADDING-BOTTOM: 0px; MARGIN-LEFT: 428px; =
PADDING-TOP: 4px
}
#footer {
	CLEAR: both; BORDER-TOP: #fff 1px solid; BACKGROUND: =
url(http://www.blogblog.com/snapshot_sable/bg-footer.gif) #e9eaeb =
no-repeat left bottom
}

}

@media Handheld   =20
{
#sidebar {
	BACKGROUND: #fff; MARGIN: 0px
}
#footer {
	BACKGROUND: #e9eaeb
}
    }
#header H1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 4px; PADDING-BOTTOM: 92px; WIDTH: =
557px; LINE-HEIGHT: 1; PADDING-TOP: 12px
}
H3.post-title {
	FONT-SIZE: 1.2em; MARGIN-BOTTOM: 0px
}
H3.post-title A {
	COLOR: #ff6a2e
}
.post {
	CLEAR: both; MARGIN-BOTTOM: 4em
}
.post-footer EM {
	FLOAT: left; COLOR: #b4babe; FONT-STYLE: normal
}
.post-footer {
	TEXT-ALIGN: right
}
.comment-link {
	MARGIN-LEFT: 0.6em
}
#main IMG {
	BORDER-RIGHT: #e3e4e4 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: =
#e3e4e4 1px solid; PADDING-LEFT: 2px; BACKGROUND: #fff; PADDING-BOTTOM: =
2px; BORDER-LEFT: #e3e4e4 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: =
#e3e4e4 1px solid
}
.deleted-comment {
	COLOR: gray; FONT-STYLE: italic
}

@media All   =20
{
#sidebar #description {
	BORDER-RIGHT: #62c1fc 1px solid; PADDING-RIGHT: 17px; BORDER-TOP: =
#62c1fc 1px solid; PADDING-LEFT: 17px; FONT-WEIGHT: bold; FONT-SIZE: =
1.2em; BACKGROUND: =
url(http://www.blogblog.com/snapshot_sable/bg-profile3.gif) #81cdfd; =
PADDING-BOTTOM: 10px; MARGIN: 0px 0px 0px -6px; BORDER-LEFT: #62c1fc 1px =
solid; COLOR: #33595e; LINE-HEIGHT: 0.9; PADDING-TOP: 10px; =
BORDER-BOTTOM: #62c1fc 1px solid
}

}

@media Handheld   =20
{
#sidebar #description {
	BACKGROUND: #81cdfd
}
    }
#sidebar H2 {
	FONT-SIZE: 1.3em; MARGIN: 1.3em 0px 0.5em
}
#sidebar DL {
	MARGIN: 0px 0px 10px
}
#sidebar UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#sidebar LI {
	PADDING-BOTTOM: 5px; LINE-HEIGHT: 0.9
}
#profile-container {
	COLOR: #7b8186
}
#profile-container IMG {
	BORDER-RIGHT: #7c78b5 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: =
#7c78b5 1px solid; PADDING-LEFT: 4px; FLOAT: left; PADDING-BOTTOM: 8px; =
MARGIN: 0px 10px 1em 0px; BORDER-LEFT: #7c78b5 1px solid; PADDING-TOP: =
4px; BORDER-BOTTOM: #7c78b5 1px solid
}
.archive-list {
	MARGIN-BOTTOM: 2em
}
#powered-by {
	MARGIN: 10px auto 20px
}
#footer P {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-SIZE: 0.9em; =
PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-TOP: 12px
}
#footer HR {
	DISPLAY: none
}
</STYLE>
<!-- -->
<STYLE type=3Dtext/css>@import url( =
http://www.blogger.com/css/navbar/classic.css );
DIV.b-mobile {
	DISPLAY: none
}
</STYLE>
</HEAD>
<BODY><IFRAME id=3Dnavbar-iframe marginWidth=3D0 marginHeight=3D0=20
src=3D"http://www.blogger.com/navbar.g?targetBlogID=3D20733543&amp;blogNa=
me=3DTIMEDlines+-+A+reason&amp;publishMode=3DPUBLISH_MODE_BLOGSPOT&amp;na=
vbarType=3DBLUE&amp;layoutType=3DCLASSIC&amp;homepageUrl=3Dhttp%3A%2F%2Ft=
imedlines.blogspot.com%2F&amp;searchRoot=3Dhttp%3A%2F%2Ftimedlines.blogsp=
ot.com%2Fsearch"=20
frameBorder=3D0 width=3D"100%" scrolling=3Dno height=3D30></IFRAME>
<DIV id=3Dspace-for-ie></DIV><!-- Begin #content - Centers all content =
and provides edges for floated columns -->
<DIV id=3Dcontent>
<DIV id=3Dheader>
<DIV>
<H1><A href=3D"http://timedlines.blogspot.com/">TIMEDlines - A reason=20
</A></H1></DIV></DIV><!-- Begin #main - Contains main-column blog =
content -->
<DIV id=3Dmain>
<H2 class=3Ddate-header>Saturday, February 16, 2008</H2><!-- Begin .post =
-->
<DIV class=3Dpost><A name=3D7990357494218168639></A>
<H3 class=3Dpost-title>CHRONIC PAIN </H3>
<P>
<DIV style=3D"CLEAR: both"></DIV><A=20
href=3D"http://bp1.blogger.com/_qHAeJQmZP0M/R7cdN_gB-_I/AAAAAAAAAU4/wguFm=
qbCDQQ/s1600-h/03557.photo00.photo.jpg"><IMG=20
id=3DBLOGGER_PHOTO_ID_5167631223652219890=20
style=3D"FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt=3D""=20
src=3D"http://bp1.blogger.com/_qHAeJQmZP0M/R7cdN_gB-_I/AAAAAAAAAU4/wguFmq=
bCDQQ/s320/03557.photo00.photo.jpg"=20
border=3D0></A><BR>
<DIV>Chronic Pain Harms Brain's Wiring<BR>Fri Feb 8, 11:48 PM =
ET<BR>FRIDAY, Feb.=20
8 (HealthDay News) -- Chronic pain can disrupt brain function and cause =
problems=20
such as disturbed sleep, depression, anxiety and difficulty making =
simple=20
decisions, a U.S. study finds. Researchers at Northwestern University's =
Feinberg=20
School of Medicine in Chicago used functional MRI to scan brain activity =
in=20
people with chronic low back pain while they tracked a moving bar on a =
computer=20
screen. They did the same thing with a control group of people with no =
pain. In=20
those with no pain, the brain regions displayed a state of equilibrium. =
When one=20
region was active, the other regions calmed down. But in people with =
chronic=20
pain, the front region of the cortex mostly associated with emotion =
"never shuts=20
up," study author Dante Chialvo, an associate research professor of =
physiology,=20
said in a prepared statement. This region remains highly active, which =
wears out=20
neurons and alters their connections to each other. This constant firing =
of=20
neurons could cause permanent damage. "We know when neurons fire too =
much they=20
may change their connections with other neurons or even die, because =
they can't=20
sustain high activity for so long," Chialvo said. "If you are a chronic =
pain=20
patient, you have pain 24 hours a day, seven days a week, every minute =
of your=20
life. That permanent perception of pain in your brain makes these areas =
in your=20
brain continuously active. This continuous dysfunction in the =
equilibrium of the=20
brain can change the wiring forever and could hurt the brain," Chialvo=20
explained. These changes "may make it harder for you to make a decision =
or be in=20
a good mood to get up in the morning. It could be that pain produces =
depression=20
and the other reported abnormalities, because it disturbs the balance of =
the=20
brain as a whole," he said. The study was published in the Feb. 6 issue =
of The=20
Journal of Neuroscience. Chialvo said the findings show that, along with =
finding=20
new ways to treat pain, it's also important to develop methods to =
evaluate and=20
prevent disruption of brain function caused by chronic pain.<BR>More=20
information<BR>The American Academy of Family Physicians has more about =
chronic=20
pain.</DIV>
<DIV style=3D"CLEAR: both; PADDING-BOTTOM: 0.25em"></DIV>
<P class=3Dblogger-labels>Labels: <A=20
href=3D"http://timedlines.blogspot.com/search/label/chronic%20pain"=20
rel=3Dtag>chronic pain</A>, <A=20
href=3D"http://timedlines.blogspot.com/search/label/medical"=20
rel=3Dtag>medical</A></P>
<P></P>
<P class=3Dpost-footer><EM>posted by spantalk @ <A title=3D"permanent =
link"=20
href=3D"http://timedlines.blogspot.com/2008/02/chronic-pain.html">12:25=20
PM</A></EM> <SPAN class=3Ditem-action><A title=3D"Email Post"=20
href=3D"http://www.blogger.com/email-post.g?blogID=3D20733543&amp;postID=3D=
7990357494218168639"><IMG=20
class=3Dicon-action alt=3D""=20
src=3D"http://www.blogger.com/img/icon18_email.gif"></A></SPAN><SPAN=20
class=3D"item-control blog-admin pid-1291505524"><A title=3D"Edit Post"=20
style=3D"BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"=20
href=3D"http://www.blogger.com/post-edit.g?blogID=3D20733543&amp;postID=3D=
7990357494218168639"><IMG=20
class=3Dicon-action alt=3D""=20
src=3D"http://www.blogger.com/img/icon18_edit_allbkg.gif"></A></SPAN> =
</P></DIV><!-- End .post --><!-- Begin #comments -->
<DIV id=3Dcomments><A name=3Dcomments></A>
<H4>0 Comments:</H4>
<DL id=3Dcomments-block></DL>
<P><A class=3Dcomment-link=20
onclick=3D"window.open(this.href, 'bloggerPopup', =
'toolbar=3D0,scrollbars=3D1,location=3D0,statusbar=3D1,menubar=3D0,resiza=
ble=3D1,width=3D400,height=3D450');return false;"=20
href=3D"http://www.blogger.com/comment.g?blogID=3D20733543&amp;postID=3D7=
990357494218168639&amp;isPopup=3Dtrue">Post=20
a Comment</A> </P><A name=3Dlinks></A>
<H4>Links to this post:</H4>
<DL id=3Dcomments-block>
  <SCRIPT=20
  =
src=3D"http://www.blogger.com/dyn-js/backlink.js?blogID=3D20733543&amp;po=
stID=3D7990357494218168639"=20
  defer type=3Dtext/javascript charset=3Dutf-8>=0A=
</SCRIPT>
  <NOSCRIPT><A=20
  =
href=3D"http://blogsearch.google.com/?ui=3Dblg&amp;q=3Dlink%3Ahttp%3A%2F%=
2Ftimedlines.blogspot.com%2F2008%2F02%2Fchronic-pain.html">See=20
  links to this post</A></NOSCRIPT>=20
  <DIV id=3Dblogger-dcom-block style=3D"DISPLAY: none">
  <DT class=3Dcomment-title><SPAN class=3Dcomment-toggler>&nbsp;</SPAN> =
<A=20
  =
href=3D"http://timedlines.blogspot.com/2008/02/%3C$BlogBacklinkURL$%3E"=20
  rel=3Dnofollow>&lt;$BlogBacklinkTitle$&gt;</A> <SPAN=20
  class=3D"item-control blog-admin"><A title=3D"Remove Link"=20
  style=3D"BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"=20
  =
href=3D"http://www.blogger.com/delete-backlink.g?blogID=3D20733543&amp;po=
stID=3D7990357494218168639&amp;backlinkURL=3D%3C$BlogBacklinkURLEscaped$%=
3E"><SPAN=20
  class=3Ddelete-comment-icon>&nbsp;</SPAN></A></SPAN>=20
  <DD class=3Dcomment-body>&lt;$BlogBacklinkSnippet$&gt; <BR><SPAN=20
  class=3Dcomment-poster><EM>posted by &lt;$BlogBacklinkAuthor$&gt; @=20
  &lt;$BlogBacklinkDateTime$&gt;</EM> </SPAN></DD></DIV>
  <SCRIPT type=3Dtext/javascript>if (typeof BL_addOnLoadEvent =3D=3D =
'function') { BL_addOnLoadEvent(function() { BL_writeBacklinks(); }); =
}</SCRIPT>
</DL>
<P class=3Dcomment-timestamp>
<SCRIPT type=3Dtext/javascript>function BlogThis() {=0A=
Q=3D''; x=3Ddocument; y=3Dwindow;=0A=
if(x.selection) {=0A=
  Q=3Dx.selection.createRange().text;=0A=
} else if (y.getSelection) {=0A=
  Q=3Dy.getSelection();=0A=
} else if (x.getSelection) {=0A=
  Q=3Dx.getSelection();=0A=
}=0A=
popw =3D y.open('http://www.blogger.com/blog-this.g?t=3D' +=0A=
  escape(Q) + '&u=3D' + escape(location.href) + '&n=3D' +=0A=
  escape(document.title),'bloggerForm',=0A=
  =
'scrollbars=3Dno,width=3D475,height=3D300,top=3D175,left=3D75,status=3Dye=
s,resizable=3Dyes');=0A=
void(0);=0A=
}=0A=
</SCRIPT>
<A class=3Dcomment-link id=3Db-backlink =
href=3D"javascript:BlogThis();">Create a=20
Link</A></P>
<P><A href=3D"http://timedlines.blogspot.com/">&lt;&lt; Home</A> =
</P></DIV><!-- End #comments --></DIV><!-- End #main --><!-- Begin =
#sidebar -->
<DIV id=3Dsidebar>
<P id=3Ddescription></P><!-- Begin #profile-container -->
<DIV id=3Dprofile-container>
<H2 class=3Dsidebar-title>About Me</H2>
<DL class=3Dprofile-datablock>
  <DD class=3Dprofile-data><STRONG>Name:</STRONG> spantalk=20
  <DD class=3Dprofile-data><STRONG>Location:</STRONG> Knoxville, =
Tennessee, United=20
  States </DD></DL>
<P class=3Dprofile-textblock>I would like to see the apprehension of the =
man who=20
slew Johnia Hope Berry Knoxville, Tennessee for more info type in johnia =
hope=20
berry in search/ be sure to visit these other sites for more info on the =

timelines - infowars.com/ coasttocoastam/ hal lindsey/ prison planet/=20
http://spaces.msn.com/timedlines/ http://themousecried.blogspot.com/</P>
<P class=3Dprofile-link><A=20
href=3D"http://www.blogger.com/profile/12865275507429381002">View my =
complete=20
profile</A></P></DIV><!-- End #profile -->
<H2 class=3Dsidebar-title>Previous Posts</H2>
<UL id=3Drecently>
  <LI><A=20
  =
href=3D"http://timedlines.blogspot.com/2007/11/iran-will-not-close-nuke-p=
lants.html">IRAN=20
  WILL NOT CLOSE NUKE PLANTS</A>=20
  <LI><A=20
  =
href=3D"http://timedlines.blogspot.com/2007/09/vanishing-america-end-of-a=
merica-naomi.html">VANISHING=20
  AMERICA/ THE END OF AMERICA - NAOMI WOLF...</A>=20
  <LI><A =
href=3D"http://timedlines.blogspot.com/2007/09/nano-nano.html">NANO -=20
  NANO</A>=20
  <LI><A=20
  =
href=3D"http://timedlines.blogspot.com/2007/09/iran-president-ahmadinejad=
-rips-us.html">Iran=20
  President Ahmadinejad rips U.S.</A>=20
  <LI><A=20
  =
href=3D"http://timedlines.blogspot.com/2007/09/meteorite-causes-illnesses=
.html">METEORITE=20
  CAUSES ILLNESSES</A>=20
  <LI><A=20
  =
href=3D"http://timedlines.blogspot.com/2007/09/disgrace-in-science-labora=
tory.html">DISGRACE=20
  IN THE SCIENCE LABORATORY</A>=20
  <LI><A=20
  =
href=3D"http://timedlines.blogspot.com/2007/09/opening-up-iron-death-for-=
this.html">OPENING=20
  UP IRON DEATH FOR THIS GENERATION</A>=20
  <LI><A=20
  =
href=3D"http://timedlines.blogspot.com/2007/09/superbugs-of-infection.htm=
l">SUPERBUGS=20
  OF INFECTION</A>=20
  <LI><A=20
  =
href=3D"http://timedlines.blogspot.com/2007/09/elijah-welcomed-in-saviour=
-of-mankind.html">ELIJAH=20
  WELCOMED IN THE SAVIOUR OF MANKIND</A>=20
  <LI><A=20
  =
href=3D"http://timedlines.blogspot.com/2007/09/top-10-ways-to-destroy-ear=
th.html">TOP=20
  10 WAYS TO DESTROY THE EARTH</A> </LI></UL>
<P id=3Dpowered-by><A href=3D"http://www.blogger.com/"><IMG =
alt=3D"Powered by Blogger"=20
src=3D"http://buttons.blogger.com/bloggerbutton1.gif"></A></P><!--=0A=
  <p>This is a paragraph of text that could go in the sidebar.</p>=0A=
  --></DIV><!-- End #sidebar --><!-- Begin #footer -->
<DIV id=3Dfooter>
<HR>

<P><!-- This is an optional footer. If you want text here, place it =
inside these tags, and remove this comment. -->&nbsp;</P></DIV><!-- End =
#footer --></DIV><!-- End #content --></BODY></HTML>

------=_NextPart_001_0074_01C87162.F6428F30
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/navbar.g?targetBlogID=20733543&blogName=TIMEDlines+-+A+reason&publishMode=PUBLISH_MODE_BLOGSPOT&navbarType=BLUE&layoutType=CLASSIC&homepageUrl=http%3A%2F%2Ftimedlines.blogspot.com%2F&searchRoot=http%3A%2F%2Ftimedlines.blogspot.com%2Fsearch

=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 dir=3Dltr><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dutf-8"><LINK=20
href=3D"http://www.blogger.com/v-css/navbar/2173601441-navbar.css" =
type=3Dtext/css=20
rel=3Dstylesheet><LINK =
href=3D"http://www.blogger.com/v-css/navbar/2795506556-1.css"=20
type=3Dtext/css rel=3Dstylesheet>
<META content=3D"MSHTML 6.00.6000.16608" name=3DGENERATOR></HEAD>
<BODY>
<SCRIPT src=3D"http://www.blogger.com/v-js/3625575137-cookies.common.js" =

type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://www.blogger.com/v-app/scripts/1019856700-common.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://www.blogger.com/v-app/scripts/107652916-dom.common.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
=0A=
  =0A=
   var ID =3D "20733543";=0A=
   var FLAG_COOKIE_NAME =3D 'flaggedBlog';=0A=
   var MAX_FLAGGED_BLOGS =3D 10;=0A=
   var FLAG_BLOG_URL =3D "http://www.blogger.com" +=0A=
                       "/flag-blog.g?nav=3D" +=0A=
                       "1" +=0A=
                       "&toFlag=3D" + ID;=0A=
   var UNFLAG_BLOG_URL =3D "http://www.blogger.com" +=0A=
                       "/unflag-blog.g?nav=3D" +=0A=
                       "1" +=0A=
                       "&toFlag=3D" + ID;=0A=
   var FLAG_IMAGE_URL =3D "http://www.blogger.com" + "/img/navbar/" +=0A=
                        "1" + "/flag.gif";=0A=
   var UNFLAG_IMAGE_URL =3D "http://www.blogger.com" +=0A=
                           "/img/navbar/1/unflag.gif";=0A=
=0A=
   var ncHasFlagged =3D false;=0A=
   var servletTarget =3D new Image();=0A=
=0A=
  =0A=
  function hasFlagged() {=0A=
    if (getCookie(FLAG_COOKIE_NAME)) {=0A=
      var bloglist =3D getCookie(FLAG_COOKIE_NAME);=0A=
      var blogarray =3D bloglist.split(",")=0A=
      if (FindInArray(blogarray, ID) > 0) {=0A=
        return true;=0A=
      }=0A=
    }=0A=
    return ncHasFlagged;=0A=
  }=0A=
  =0A=
=0A=
  function toggleFlag() {=0A=
    var date =3D new Date();=0A=
    if (hasFlagged()) {=0A=
      removeBlogFromFlagCookie();=0A=
      servletTarget.src =3D UNFLAG_BLOG_URL + '&d=3D' + date.getTime();=0A=
      document.getElementById('bt-flag').style.background =3D=0A=
        'url(' + FLAG_IMAGE_URL + ') left no-repeat';=0A=
      ncHasFlagged =3D false;=0A=
      document.getElementById('bt-unflag-body').style.display =3D 'none';=0A=
      document.getElementById('bt-flag-body').style.display =3D 'inline'=0A=
      refreshDrop();=0A=
    } else {=0A=
      setBloggerFlagCookie();=0A=
      servletTarget.src =3D FLAG_BLOG_URL + '&d=3D' + date.getTime();=0A=
      document.getElementById('bt-flag').style.background =3D=0A=
        'url(' + UNFLAG_IMAGE_URL + ') left no-repeat';=0A=
      ncHasFlagged =3D true;=0A=
      document.getElementById('bt-flag-body').style.display =3D 'none'=0A=
      document.getElementById('bt-unflag-body').style.display =3D =
'inline'=0A=
      refreshDrop();=0A=
    }=0A=
  }=0A=
=0A=
  =0A=
  function showDrop() {=0A=
   var overlap =3D 5;=0A=
   var dropdown_position =3D=0A=
     GetPageOffsetRight(document.getElementById('b-flag-this')) - =
overlap + "px";=0A=
=0A=
   document.getElementById('unflagi').style.display =3D 'none';=0A=
   document.getElementById('flagi').style.display =3D 'none';=0A=
=0A=
   if (!hasFlagged()) {=0A=
      document.getElementById('flagi').style.display =3D 'inline';=0A=
      document.getElementById('flagi').style.left =3D dropdown_position;=0A=
      showElement(document.getElementById('flagi'));=0A=
    } else {=0A=
      document.getElementById('unflagi').style.display =3D 'inline';=0A=
      document.getElementById('unflagi').style.left =3D =
dropdown_position;=0A=
      showElement(document.getElementById('unflagi'));=0A=
    }=0A=
  }=0A=
=0A=
  =0A=
  function hideDrop() {=0A=
      hideElement(document.getElementById('flagi'));=0A=
      hideElement(document.getElementById('unflagi'));=0A=
  }=0A=
=0A=
  =0A=
  function refreshDrop() {=0A=
    hideDrop();=0A=
    showDrop();=0A=
  }=0A=
=0A=
  =0A=
  function setBloggerFlagCookie() {=0A=
    var bloglist =3D ""=0A=
    if (getCookie(FLAG_COOKIE_NAME)) {=0A=
      bloglist =3D getCookie(FLAG_COOKIE_NAME)=0A=
      var blogarray =3D bloglist.split(",")=0A=
      if (blogarray.length >=3D MAX_FLAGGED_BLOGS) {=0A=
        blogarray.shift()=0A=
      }=0A=
      InsertArray(blogarray, ID)=0A=
      bloglist =3D blogarray.toString();=0A=
    } else {=0A=
      bloglist =3D ID=0A=
    }=0A=
    setCookie(FLAG_COOKIE_NAME, bloglist, null, null, '/', null)=0A=
   }=0A=
=0A=
  =0A=
  function removeBlogFromFlagCookie(){=0A=
    if (getCookie(FLAG_COOKIE_NAME)) {=0A=
      var bloglist =3D getCookie(FLAG_COOKIE_NAME);=0A=
      var blogarray =3D bloglist.split(",")=0A=
      if (FindInArray(blogarray, ID) > 0) {=0A=
        DeleteArrayElement(blogarray, ID)=0A=
        bloglist =3D blogarray.toString();=0A=
      }=0A=
      setCookie(FLAG_COOKIE_NAME, bloglist, null, null, '/', null);=0A=
    }=0A=
  }=0A=
  =0A=
=0A=
  </SCRIPT>

<DIV id=3Dflagi onmouseover=3DshowDrop() style=3D"POSITION: absolute"=20
onmouseout=3DhideDrop();>
<DIV id=3Dflagi-body>Notify Blogger about <A=20
href=3D"http://help.blogger.com/bin/answer.py?answer=3D42517"=20
target=3D_blank>objectionable content</A> on this page.</DIV></DIV>
<DIV id=3Dunflagi onmouseover=3DshowDrop() style=3D"POSITION: absolute"=20
onmouseout=3DhideDrop()>
<DIV id=3Dunflagi-body>You flagged this blog as having <A=20
href=3D"http://help.blogger.com/bin/answer.py?answer=3D42517"=20
target=3D_blank>objectionable content</A>.</DIV></DIV>
<DIV id=3Db-navbar><A id=3Db-logo title=3D"Go to Blogger.com"=20
href=3D"http://www.blogger.com/">
<DIV id=3Dnavbar-logo></DIV></A>
<DIV class=3Db-mobile id=3Db-sms><A=20
href=3D"sms:?body=3DHi%2C%20check%20out%20TIMEDlines%20-%20A%20reason%20a=
t%20http%3A%2F%2Ftimedlines.blogspot.com%2F">Send=20
As SMS</A></DIV>
<DIV id=3Db-search>
<TABLE cellSpacing=3D0 cellPadding=3D0>
  <TBODY>
  <TR>
    <TD class=3Dnavsearch vAlign=3Dcenter noWrap>
      <FORM id=3Dsearchthis style=3D"DISPLAY: inline"=20
      action=3Dhttp://timedlines.blogspot.com/search method=3Dget>
      <TABLE cellSpacing=3D0 cellPadding=3D0>
        <TBODY>
        <TR>
          <TD vAlign=3Dcenter><INPUT id=3Db-query name=3Dq></TD>
          <TD class=3Dnavbutton vAlign=3Dcenter><NOSCRIPT><INPUT =
id=3Db-searchbtn=20
            title=3D"Search this blog" type=3Dimage alt=3D"Search This =
Blog"=20
            =
src=3D"http://www.blogger.com/img/navbar/1/btn_search_this.png"></NOSCRIP=
T>
            <SCRIPT type=3Dtext/javascript>=0A=
  document.write("\74div id\75\42b-search-this\42 =
onclick\75\42document.getElementById(\47searchthis\47).submit()\42\76\74d=
iv class\75\42bt1\42\76\46nbsp;\74/div\76\n\74div =
class\75\42bt2\42\76Search Blog\74/div\76\n\74div =
class\75\42bt1\42\76\46nbsp;\74/div\76\74/div\076");=0A=
</SCRIPT>
             </TD>
          <TD class=3Dnavbutton vAlign=3Dcenter>
            <SCRIPT type=3Dtext/javascript>=0A=
  document.write("\74div id\75\42b-flag-this\42 =
onclick\75\42toggleFlag();\42 onmouseover\75\42showDrop()\42 =
onmouseout\75\42hideDrop()\42\76\74div =
class\75\42bt1\42\76\46nbsp;\74/div\76\n\74div =
class\75\42bt2\42\76\74div id\75\42bt-flag\42\76\74div =
id\75\42bt-flag-body\42\76Flag Blog\74/div\76\n\74div =
id\75\42bt-unflag-body\42 style\75\42display:none\42\76Unflag =
Blog\74/div\76\74/div\76\74/div\76\n\74div =
class\75\42bt1\42\76\46nbsp;\74/div\76\74/div\076");=0A=
</SCRIPT>
          </TD></TR></TBODY></TABLE></FORM></TD>
    <TD vAlign=3Dcenter noWrap width=3D"100%"><A id=3Db-next=20
      href=3D"http://www.blogger.com/next-blog?navBar=3Dtrue">Next =
Blog=C2=BB</A></TD>
    <TD class=3Dnavbar-right vAlign=3Dcenter noWrap align=3Dright><A =
id=3Db-getorpost=20
      href=3D"http://www.blogger.com/signup.g">Create Blog</A> | <A=20
      href=3D"http://www.blogger.com/">Sign=20
In</A></TD></TR></TBODY></TABLE></DIV></DIV></BODY></HTML>

------=_NextPart_001_0074_01C87162.F6428F30--

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/js/backlink.js

// Global variable which is populated by the dynamic javascript =0A=
// retrieved from a request to the blogger server=0A=
var BL_Backlinks =3D new Array();=0A=
var BL_BacklinkCount =3D new Array();=0A=
=0A=
function BL_processBacklinkTemplate(templateHTML) {=0A=
  var finalHTML =3D "";=0A=
  for (i=3D0; i < BL_Backlinks.length; i++) {=0A=
    var html =3D templateHTML;=0A=
    html =3D =
html.replace(/(<|%3C)\$BlogBacklinkURL\$(>|%3E)/g,BL_Backlinks[i]["BlogBa=
cklinkURL"]);=0A=
    html =3D =
html.replace(/(<|%3C)\$BlogBacklinkURLEscaped\$(>|%3E)/g,escape(BL_Backli=
nks[i]["BlogBacklinkURL"]));=0A=
    html =3D =
html.replace(/&lt;\$BlogBacklinkTitle\$&gt;/g,BL_Backlinks[i]["BlogBackli=
nkTitle"]);=0A=
    html =3D =
html.replace(/&lt;\$BlogBacklinkSnippet\$&gt;/g,BL_Backlinks[i]["BlogBack=
linkSnippet"]);=0A=
    html =3D =
html.replace(/&lt;\$BlogBacklinkAuthor\$&gt;/g,BL_Backlinks[i]["BlogBackl=
inkAuthor"]);=0A=
    html =3D =
html.replace(/&lt;\$BlogBacklinkDateTime\$&gt;/g,BL_Backlinks[i]["BlogBac=
klinkDateTime"]);=0A=
    finalHTML +=3D html;=0A=
  }=0A=
  return finalHTML;=0A=
}=0A=
=0A=
function BL_writeBacklinks() {=0A=
  var dcomDiv =3D document.getElementById('blogger-dcom-block');=0A=
  if (dcomDiv !=3D null && dcomDiv.innerHTML) {=0A=
    var finalHTML =3D BL_processBacklinkTemplate(dcomDiv.innerHTML); =0A=
    // Add a div with a unique id to test if the subsequent write=0A=
    // succeeded=0A=
    if (finalHTML !=3D "") {=0A=
      finalHTML +=3D '<span id=3D"blogger-dcom-ihtest"></span>';=0A=
      dcomDiv.innerHTML =3D finalHTML;=0A=
      if (document.getElementById('blogger-dcom-ihtest')) {=0A=
        dcomDiv.style.display =3D "block";         	=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
function BL_addOnLoadEvent(func) {=0A=
  var oldonload =3D window.onload;=0A=
  if (typeof window.onload !=3D 'function') {=0A=
    window.onload =3D func;=0A=
  } else {=0A=
    window.onload =3D function() {=0A=
      oldonload();=0A=
      func();=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
function BL_loadScript (url) {=0A=
  if (document.getElementById) {=0A=
    var script =3D document.createElement('script');=0A=
    script.defer =3D true;=0A=
    script.src =3D url;=0A=
    document.getElementsByTagName('head')[0].appendChild(script);=0A=
  }=0A=
}=0A=
=0A=
function BL_populateBacklinksCount() {=0A=
  var linkSpans =3D document.getElementsByTagName("span");=0A=
  var postQuery =3D "";=0A=
  for (var i=3D0; i < linkSpans.length; i++) {=0A=
    if (linkSpans[i].className =3D=3D "backlinkcount") {         =0A=
      var postId =3D linkSpans[i].id;	=0A=
      if (postId) {=0A=
        BL_BacklinkCount[postId] =3D linkSpans[i];=0A=
        postQuery +=3D "&postID=3D" + postId;=0A=
      }=0A=
    }=0A=
  }=0A=
  if (postQuery !=3D "") {=0A=
    var url =3D window.BL_backlinkURL + "?blogID=3D" + window.BL_blogId =
+ postQuery; =0A=
    BL_loadScript(url);	=0A=
  }=0A=
}=0A=
=0A=
BL_addOnLoadEvent(function() { BL_populateBacklinksCount(); })=0A=

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/js/backlink_control.js

if (document.getElementById) {=0A=
  var toggle_opened =3D new Image();=0A=
  var toggle_closed =3D new Image();=0A=
  // pre-loading the images=0A=
  toggle_opened.src =3D "http://www.blogger.com/img/triangle_open.gif";=0A=
  toggle_closed.src =3D "http://www.blogger.com/img/triangle_ltr.gif";=0A=
  document.write(['<style type=3D"text/css">',=0A=
                '.comment-toggler {',=0A=
                'background:url(',=0A=
	        toggle_closed.src,=0A=
		') no-repeat left center;',=0A=
	        'padding-right:11px;',=0A=
		'margin-right:0.1em;',=0A=
		'cursor:pointer;',=0A=
                'cursor:hand;',=0A=
	        '}',=0A=
	        '#blogger-dcom-block dd {',=0A=
		'display:none;',=0A=
		'margin-top:1em;',=0A=
		'padding-left:14px;',=0A=
		'margin-left:0.4em;',=0A=
		'}',=0A=
		'</style>'].join(""));=0A=
=0A=
  // Register old onmousedown function=0A=
  var BL_oldonmousedown =3D document.onmousedown; =0A=
=0A=
  document.onmousedown =3D function(e) {  =0A=
   =0A=
    var shouldPropagate =3D true;=0A=
=0A=
    var target =3D window.event ? window.event.srcElement : e.target;=0A=
	    =0A=
    if (target.className =3D=3D "comment-toggler") {=0A=
      var dt =3D target.parentNode;=0A=
      var dd =3D dt.nextSibling;=0A=
		=0A=
      while (dd.tagName !=3D "DD") {=0A=
        dd =3D dd.nextSibling; =0A=
      }=0A=
		=0A=
      if (dd.style.display =3D=3D "block") {=0A=
        dd.style.display =3D "none";=0A=
        target.style.backgroundImage =3D "url(" + toggle_closed.src + =
")";=0A=
      } else {=0A=
        dd.style.display =3D "block";=0A=
        target.style.backgroundImage =3D "url(" + toggle_opened.src + =
")";=0A=
      } =0A=
      shouldPropagate =3D false;	=0A=
    }	    =0A=
    // call old onmousedown function if registered 	=0A=
    if (typeof window.BL_oldonmousedown =3D=3D 'function') {=0A=
      return window.BL_oldonmousedown(e);=0A=
    }=0A=
    return shouldPropagate;    =0A=
  }=0A=
}=0A=
=0A=

------=_NextPart_000_005B_01C87162.F63C74B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/dyn-js/backlink.js?blogID=20733543&postID=7990357494218168639

=0A=
var backlink;=0A=

------=_NextPart_000_005B_01C87162.F63C74B0--

