From: Subject: THE TROUPE: REVIEW: A Shot in the Dark Date: Mon, 31 Mar 2008 22:01:21 -0600 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0029_01C8937A.C17D32C0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 This is a multi-part message in MIME format. ------=_NextPart_000_0029_01C8937A.C17D32C0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://bp3.blogger.com/_vmSjcY22_CU/RuKvUjaxSQI/AAAAAAAAABo/SJXOpN3p7wQ/s1600/THE+TROUPE+Masthead.jpg /9j/4AAQSkZJRgABAgEASABIAAD/7QCCUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQABOEJJTQPzAAAAAAAIAAAAAAAAAAE4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP0 AAAAAAASADUAAAABAC0AAAAGAAAAAAABOEJJTQQGAAAAAAACAAT/7gAOQWRvYmUAZAAAAAAA/9sA QwAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwM/8AACwgAgAIwAQERAP/EANIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCxAA AgEDAwIEAgYHAwQCBgJzAQIDEQQABSESMUFRBhNhInGBFDKRoQcVsUIjwVLR4TMWYvAkcoLxJUM0 U5KismNzwjVEJ5OjszYXVGR0w9LiCCaDCQoYGYSURUaktFbTVSga8uPzxNTk9GV1hZWltcXV5fVm doaWprbG1ub2N0dXZ3eHl6e3x9fn9zhIWGh4iJiouMjY6PgpOUlZaXmJmam5ydnp+So6Slpqeoqa qrrK2ur6/90ABABG/9oACAEBAAA/APVObNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bN mzZs2bNmzZs2bNmzZEfPfnBdIvND8v2Tj9PeZrsWlimxMUEY9S8uiDt+4gDcB+1O8X7HPjLgM2bN mzZs2bNmzZs2bNn/0PVObNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2 bNmzHPF1l+bNv5i/5yt0nzDPPXRLe9bSdKavwLbyRyWsUgP8ss03rt/xk/yc9o5s2bNmzZs2bNmz Zs2bP//R9U5s2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bNmzZs2bIR+dfm Z/LX5V+ZdWicx3CWbwWzrsVmuiLeJh7o8of/AGOfOQMVYMpKkbgjqCM+hP5I+bfO+u/ltpGsearI NcXCEQ3VuSZpoE+GO4mhYDi8vHl+5Z+fwyLGivxWfJq+mMyobhI5WNBDKfSkqeg9OTi+/wDq4LzY FuNSsoJDE0oacU/0eOsku/8AxWtXp7044jFfXz38UL24ggkjkcc2BlPAoNwtUT7f8z/7DDDNmzZs 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 ------=_NextPart_000_0029_01C8937A.C17D32C0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://bp3.blogger.com/_vmSjcY22_CU/R8CcZdwkG1I/AAAAAAAAAFY/_GAjg4eqTcQ/s400/Jessica+Laulhere+as+Josefa4.jpg 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 cbys1VXH4R3/AA/HmI5fLP/Z ------=_NextPart_000_0029_01C8937A.C17D32C0 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_0029_01C8937A.C17D32C0 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_0029_01C8937A.C17D32C0 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.blogger.com/img/icon18_wrench_allbkg.png iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAA1VBMVEX///9/f38gSoc0ZaTr6efs 6uj+/v6vr691kK5shaFlhKxje5WduNL5+fj09PSRpr7o5+bo5+Tk4+Hj4+Lj4uHX4u3f39/t6+mf n56EnLaNmKWVlZGBk6mOjo7u8/aBipWGhobz8vH49/bt6+pZfatUfK77+/tgdo9gd5Hq6urq6ej/ //+krbaXpbaQpr76+vnBwcGkutDT3+rY2NfA0eL4+Pf6+vqdts7PzcrMzMywxtvc3Nzz8/JbcYmi rryhtMjw9PedsMpFcant8vZfX17y8e/w8PCUA2JZAAAAAXRSTlMAQObYZgAAALRJREFUeF5N0FWu AzEMQNHYgUEoMzPDQ2bY/5LqcVL13c+j2LIi8gBAuMLQyiq5dibXZxsNyVgePSI2nVh69iQvIhoz yTvJUlwClPW+TWIIKCj81utKqQS+UhKu+3BLqU9ZmzC4qxBRptOGuIT+cYdyM4N/cvV2H+GhYs6G zWorihdolHKG773OPPZfEYzWbJh9bFmEgPzdgOjpu28lt9IPzWIQ32QsbC9/IMiCyMrl5xCduE6l mw1pZ6RL9QAAAABJRU5ErkJggg== ------=_NextPart_000_0029_01C8937A.C17D32C0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://bp2.blogger.com/_vmSjcY22_CU/RuKm3TaxSLI/AAAAAAAAABA/f0BwkAGWtW8/S254/Patrick+Dorn+10-06.jpg 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 fhFCknrQrBP/2Q== ------=_NextPart_000_0029_01C8937A.C17D32C0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/widgets/3319451950-blogarchive.css #ArchiveList .toggle { CURSOR: pointer; FONT-FAMILY: Arial, sans-serif } #ArchiveList .toggle-open { LINE-HEIGHT: 0.6em; _font-size: 1.7em } #ArchiveList { TEXT-ALIGN: left } #ArchiveList A.post-count-link { TEXT-DECORATION: none } #ArchiveList A.post-count-link:link { TEXT-DECORATION: none } #ArchiveList A.post-count-link:visited { TEXT-DECORATION: none } #ArchiveList A.toggle { TEXT-DECORATION: none } #ArchiveList A.toggle:link { TEXT-DECORATION: none } #ArchiveList A.toggle:visited { TEXT-DECORATION: none } #ArchiveList A.toggle:hover { TEXT-DECORATION: none } .BlogArchive #ArchiveList UL LI { BORDER-TOP-WIDTH: 0px; LIST-STYLE: none none outside; PADDING-LEFT: = 15px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: none transparent scroll repeat = 0% 0%; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; TEXT-INDENT: -15px; = BORDER-RIGHT-WIDTH: 0px } .BlogArchive #ArchiveList UL UL LI { PADDING-LEFT: 1.2em } .BlogArchive #ArchiveList UL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; LIST-STYLE-IMAGE: none; BORDER-BOTTOM-WIDTH: = 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; = LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px } .BlogArchive #ArchiveList UL UL { MARGIN-TOP: 5px } .BlogArchive #ArchiveList UL.posts LI { PADDING-LEFT: 1.3em } #ArchiveList .collapsed UL { DISPLAY: none } ------=_NextPart_000_0029_01C8937A.C17D32C0 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_0029_01C8937A.C17D32C0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/widgets/3597482671-blog.css .backlink-toggle-zippy { PADDING-RIGHT: 11px; BACKGROUND: = url(http://www.blogger.com/img/triangle_ltr.gif) no-repeat left center; = CURSOR: hand; MARGIN-RIGHT: 0.1em } .expanded-backlink .backlink-toggle-zippy { BACKGROUND-IMAGE: url(http://www.blogger.com/img/triangle_open.gif) } .collapsed-backlink .collapseable { DISPLAY: none } .status-msg-wrap { FONT-SIZE: 110%; MARGIN: 10px auto; WIDTH: 90%; POSITION: relative } .status-msg-border { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FILTER: = alpha(opacity=3D40); BORDER-LEFT: #000000 1px solid; WIDTH: 100%; = BORDER-BOTTOM: #000000 1px solid; POSITION: relative; -moz-opacity: .40; = opacity: .40 } .status-msg-bg { Z-INDEX: 1; FILTER: alpha(opacity=3D30); WIDTH: 100%; POSITION: = relative; BACKGROUND-COLOR: #cccccc; -moz-opacity: .80; opacity: .80 } .status-msg-body { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; Z-INDEX: 4; PADDING-BOTTOM: = 0.3em; WIDTH: 100%; PADDING-TOP: 0.3em; POSITION: absolute; TEXT-ALIGN: = center } .status-msg-hidden { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; VISIBILITY: hidden; = PADDING-BOTTOM: 0.3em; PADDING-TOP: 0.3em } .status-msg-wrap A { PADDING-LEFT: 0.4em; TEXT-DECORATION: underline } #comments .blogger-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/b16-rounded.gif) no-repeat = left 50%; LINE-HEIGHT: 16px } .blogger-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/b16-rounded.gif) no-repeat = left 50%; LINE-HEIGHT: 16px } #comments .openid-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/openid16-rounded.gif) = no-repeat left 50%; LINE-HEIGHT: 16px } .openid-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/openid16-rounded.gif) = no-repeat left 50%; LINE-HEIGHT: 16px } #comments .anon-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/anon16-rounded.gif) no-repeat = left 50%; LINE-HEIGHT: 16px } .anon-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/anon16-rounded.gif) no-repeat = left 50%; LINE-HEIGHT: 16px } .paging-control-container { FONT-SIZE: 80%; FLOAT: right; MARGIN: 0px 6px 0px 0px } .unneeded-paging-control { VISIBILITY: hidden } ------=_NextPart_000_0029_01C8937A.C17D32C0 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_0029_01C8937A.C17D32C0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-css/navbar/3328360018-navbar.css BODY { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 100%; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-FAMILY: "Trebuchet = MS",Verdana,Arial,Sans-serif; WHITE-SPACE: nowrap } A { TEXT-DECORATION: none } #b-navbar { FONT-SIZE: 0.85em; LINE-HEIGHT: 0.85em; BORDER-BOTTOM: #024 1px solid; = HEIGHT: 29px } #b-navbar #b-logo { LEFT: 5px; POSITION: absolute; TOP: 0.15em } #b-navbar #b-logo #navbar-logo { WIDTH: 24px; HEIGHT: 24px } #b-navbar #b-logo SPAN { DISPLAY: block; LEFT: -9000px; POSITION: absolute } #b-search { PADDING-RIGHT: 1em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 3px; MARGIN: = 0px 0px 0px 34px; PADDING-TOP: 4px } #b-search TD { VERTICAL-ALIGN: middle } #b-query { MARGIN: 0px 0.5em 0px 0px } .btn { PADDING-RIGHT: 0px; BORDER-TOP: 1px solid; PADDING-LEFT: 0px; = FONT-SIZE: 0.8em; PADDING-BOTTOM: 0px; MARGIN: 0px 0.5em 0px 1px; = TEXT-TRANSFORM: uppercase; CURSOR: hand; LINE-HEIGHT: 0.85em; = PADDING-TOP: 0px; BORDER-BOTTOM: 1px solid; WHITE-SPACE: nowrap } .btn DIV { BORDER-RIGHT: 1px solid; PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; = PADDING-BOTTOM: 0.21em; MARGIN: 0px -1px; BORDER-LEFT: 1px solid; = PADDING-TOP: 0.21em; POSITION: relative; HEIGHT: 0.85em } .btn DIV IMG { LEFT: 0.3em; POSITION: absolute; TOP: 0.2em } #bt-flag-body { PADDING-LEFT: 1em } #bt-unflag-body { PADDING-LEFT: 1em } #bt-unflag-body { DISPLAY: none } .flagged #bt-flag-body { DISPLAY: none } .flagged #bt-unflag-body { DISPLAY: block } #flagi { BORDER-RIGHT: #333 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #333 1px = solid; DISPLAY: none; PADDING-LEFT: 4px; FONT-SIZE: 0.7em; Z-INDEX: 300; = PADDING-BOTTOM: 4px; BORDER-LEFT: #333 1px solid; COLOR: #000; = LINE-HEIGHT: 0.8em; PADDING-TOP: 4px; BORDER-BOTTOM: #333 1px solid; = TOP: 3px; BACKGROUND-COLOR: #ff9 } #unflagi { BORDER-RIGHT: #333 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #333 1px = solid; DISPLAY: none; PADDING-LEFT: 4px; FONT-SIZE: 0.7em; Z-INDEX: 300; = PADDING-BOTTOM: 4px; BORDER-LEFT: #333 1px solid; COLOR: #000; = LINE-HEIGHT: 0.8em; PADDING-TOP: 4px; BORDER-BOTTOM: #333 1px solid; = TOP: 3px; BACKGROUND-COLOR: #ff9 } #flagi A { COLOR: #3366cc; TEXT-DECORATION: underline } #unflagi A { COLOR: #3366cc; TEXT-DECORATION: underline } .b-mobile { DISPLAY: none } #b-sms { PADDING-RIGHT: 7px; 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 } #b-sms A:hover { TEXT-DECORATION: underline } @media Handheld =20 { BODY .b-mobile { DISPLAY: block } BODY #b-search { DISPLAY: none } BODY #flagi { DISPLAY: none } BODY #unflagi { DISPLAY: none } BODY #b-navbar #b-logo SPAN { DISPLAY: none } } ------=_NextPart_000_0029_01C8937A.C17D32C0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-css/navbar/1297325411-1.css BODY { COLOR: #fff } A { COLOR: #9cf } .btn DIV { COLOR: #9cf } A:hover { COLOR: #fff } #navbar-logo { BACKGROUND-IMAGE: url(../../img/navbar/1/logobar.png) } #b-navbar { BORDER-BOTTOM: #024 1px solid; BACKGROUND-COLOR: #036 } #b-search { 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 } .btn { BORDER-LEFT-COLOR: #47a; BORDER-BOTTOM-COLOR: #47a; BORDER-TOP-COLOR: = #47a; BORDER-RIGHT-COLOR: #47a } .btn DIV { BORDER-LEFT-COLOR: #47a; BORDER-BOTTOM-COLOR: #47a; BORDER-TOP-COLOR: = #47a; BORDER-RIGHT-COLOR: #47a } .btn DIV:hover { BACKGROUND-COLOR: #47a } ------=_NextPart_000_0029_01C8937A.C17D32C0 Content-Type: application/x-js 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_0029_01C8937A.C17D32C0 Content-Type: application/x-js 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 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 "";=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= =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_, "&").replace(lt_re_, "<").=0A= replace(gt_re_, ">").replace(quote_re_, """);=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   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_, "  ");=0A= str =3D str.replace(ret_re_, "");=0A= str =3D str.replace(nl_re_, "
");=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_, """);=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_, "
");=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 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 s into.=0A= // n: The maximum number of consecutive non-space characters to allow = before=0A= // adding a . 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 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 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 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)) + '';=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 "";=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"
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 '

' + new = Date() +=0A= '' + msg + '

';=0A= logPane.innerHTML =3D logText + logPane.innerHTML;=0A= } else {=0A= window.status =3D msg;=0A= }=0A= }=0A= ------=_NextPart_000_0029_01C8937A.C17D32C0 Content-Type: application/x-js 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 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
";=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 '
';=0A= }=0A= var doc =3D getIFrameDocument(iframe);=0A= doc.open();=0A= doc.write(''=0A= + innerHtml + '');=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_0029_01C8937A.C17D32C0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0048_01C8937A.C186A8A0" ------=_NextPart_001_0048_01C8937A.C186A8A0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://thetroupetheatre.blogspot.com/2008/02/review-shot-in-dark.html =EF=BB=BF THE TROUPE: REVIEW: A Shot in the = Dark
skip=20 to main | skip=20 to sidebar

Friday, February 22, 2008

REVIEW:=20 A Shot in the Dark


Jessica Laulhere as Josefa in = Vintage=20 Theatre's "A Shot in the Dark"


Harry Kurnitz' "A Shot in the Dark" is adapted from one of those = well-made=20 French "boulevard comedies" that promises a light evening of flirtatious = frivolity, and delivers much, much more. Vintage Theatre's fast-paced,=20 laugh-a-minute production effectively taps the show=E2=80=99s suggestive = humor, snappy=20 dialogue, well-crafted plot and endearing characters to actually = reinforce the=20 very moral code it purports to dismiss.

A guileless parlor maid, = who=20 serves a randy banker and his aristocratic wife, is discovered nude and=20 unconscious in her bedroom, holding a pistol in her hand, with her dead = lover=20 beside her. The fledgling magistrate assigned to the investigation is = pressured=20 to rush to judgment and quickly close this circumstantially open and = shut case,=20 but doggedly pursues justice, even at the risk of his marriage and=20 career.

With nearly every scene an interrogation of one kind or = another,=20 the play is as much a mystery as a comedy, as the magistrate exposes one = dirty=20 little secret after another. The heart of the comedy, and the axis on = which the=20 whole play turns, is the maid Josefa (charmingly played by Jessica = Laulhere).=20 Uneducated and too poor to afford bourgeois morality, but shining with = natural=20 innocence, Josefa has loved unwisely (and often), but is an unlikely = murderess,=20 despite her willingness to confess to the crime.

Everyone = concerned has=20 something to hide, and the magistrate (earnestly played by Scott = Glennon)=20 methodically exposes the sins and their complicated consequences to the = light of=20 truth, whether they be the result of promiscuous human nature, gross=20 insensitivity toward others, or the bitter fruit of cold = malice.

And yet=20 all this morality is packaged in a truly delightful, entertaining, = humorous=20 play. Kudos to Laulhere for giving the play its light, free spirit, and = Craig A.=20 Bond for his insightful, meticulous direction, with special attention to = the=20 delicate timing of a finely-tuned script.

=E2=80=9CA Shot in the = Dark=E2=80=9D dates back=20 to the early 1960s, when sex comedies became in vogue, but despite the = teasing=20 and titillation, this play is firmly rooted in traditional mores. The = play was=20 later ravaged by Hollywood and turned into the second Pink Panther film, = where=20 it was prostituted into a vehicle for Peter Sellers=E2=80=99 inane = Inspector=20 Clouseau.

=E2=80=9CA Shot in the Dark=E2=80=9D plays through = March 16 at the Vintage=20 Theatre (formerly The Avenue Theatre), 2119 E. 17th Avenue in Denver. = For=20 tickets and information, call 303-839-1361 or visit http://www.vintagetheatre.com/.

0 comments:

Newer=20 Post Older=20 Post Home
THE TROUPE is a company and community of = Christian=20 actors, directors, playwrights, designers, technicians and other theatre = artists=20 in the Denver area. In addition to developing and producing quality, = non-preachy=20 Christian theatre for secular and church audiences, we meet for mutual = support,=20 prayer and worship.

Send sincere prayer requests, or join THE = TROUPE'S=20 e-mail list by contacting Fr. Patrick at = thetroupetheatre@yahoo.com
3D""=20 =

Fr. Patrick Dorn

3D"Fr.
3D""=20 =

About Me

Fr. Patrick Dorn=20
Fr. Patrick Dorn is a priest in the = Anglican=20 Mission in America. In addition to leading THE TROUPE, he serves = Epiphany=20 Anglican Fellowship, a traditional Anglican church in Lakewood, = Colorado. Fr.=20 Dorn has a MA in Theatre from the University of Denver. He taught at = Colorado=20 Christian University, wrote and directed plays for Colorado ACTS for = many=20 years, was a theatre critic for a daily newspaper, and has more than = 20=20 published plays.
View my = complete=20 profile=20
3D""=20 =

Blog Archive

  • =E2=96=BC 2008=20 (22)=20
    • =E2=96=BC Mar= ch=20 (7)=20
      • REVIEW:=20 The Lieutenant of Inishmore=20
      • RE= VIEW:=20 '1918'=20
      • CCU's=20 'Godspell' moves to Broomfield=20
      • PREVIEW:=20 Magic Moments' "Stand By Me"=20
      • REVIEW:=20 Beau Jest=20
      • Fr.=20 Patrick's Missionary Schedule for March=20
      • REVIEW:=20 Selggin and the Battle of the Mollinduffs
    • =E2=96=BA Feb= ruary=20 (10)=20
      • REVIEW:=20 Good Night Desdemona, Good Morning Juliet=20
      • Pioneer=20 to publish "Be Careful What You Wish For"=20
      • REVIEW:=20 A Shot in the Dark=20
      • Fr.=20 Patrick's missionary schedule=20
      • REVIEW:=20 Androcles and the Lion and other Aesop Fab...=20
      • REVIEW:=20 Cirque Dreams Jungle Fantasy=20
      • REVIEW:=20 Beauty and the Beast=20
      • 'Everyman'=20 is hot off the press!=20
      • 'Heaven=20 Sent' cast and in rehearsal=20
      • REVIEW:=20 A Walk With Will
    • =E2=96=BA Jan= uary=20 (5)=20
      • REVIEW:=20 The Tender Trap=20
      • AUDITION=20 NOTICE: "Heaven Sent"=20
      • REVIEW=20 x2: Nurses Gone Wild=20
      • 'Polar=20 Bear Prince' to receive warm reception in A...=20
      • REVIEW:=20 The Lion in Winter
  • =E2=96=BA 2007=20 (16)=20
    • =E2=96=BA Dec= ember=20 (6)=20
      • 'Everyman'=20 receives new life=20
      • 'Heaven=20 Sent' scripts now available=20
      • REVIEW:=20 'God With Us'=20
      • 'Imperfections'=20 Fr. Patrick's newest script=20
      • REVIEW:=20 'White Christmas'=20
      • May=20 we pray for you?
    • =E2=96=BA Nov= ember=20 (5)=20
      • REVIEW:=20 Jacob Marley's Christmas Carol=20
      • 'Everyman'=20 on its last legs=20
      • Prayer=20 service every Monday night=20
      • 'Everyman'=20 comes to life at funeral home=20
      • THE=20 TROUPE joins Colorado Theatre Guild
    • =E2=96=BA Sep= tember=20 (3)=20
      • 'Everyman'=20 Flier=20
      • Building=20 a Community of Christian Theatre Artists=20
      • 'Everyman'=20 press release
3D""=20 =
 
------=_NextPart_001_0048_01C8937A.C186A8A0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/navbar.g?targetBlogID=3336913591933630089&blogName=THE+TROUPE&publishMode=PUBLISH_MODE_BLOGSPOT&navbarType=BLUE&layoutType=LAYOUTS&homepageUrl=http%3A%2F%2Fthetroupetheatre.blogspot.com%2F&searchRoot=http%3A%2F%2Fthetroupetheatre.blogspot.com%2Fsearch =EF=BB=BF
Notify Blogger about objectionable content on this page.
You flagged this blog as having objectionable content.
------=_NextPart_001_0048_01C8937A.C186A8A0-- ------=_NextPart_000_0029_01C8937A.C17D32C0 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/widgets/730735676-widgets.js var w_a=3Dfalse;function w_b(a){try{throw a;}catch(b){w_c(b)}}function = w_c(a,b){var c=3D"Javascript exception: "+(b?b:"")+" "+a;if(w_d())c+=3D" = "+a.name+": "+a.message+" ("+a.number+")";var d=3D"";if(typeof = a=3D=3D"string")d=3Da+"\n";else for(var e in a)try{d+=3De+": = "+a[e]+"\n"}catch(f){}d+=3Dw_e(w_c.caller);w_aa(c+"\n"+d,1)}var = w_ba=3D/function (\w+)/;function w_ca(a){var = b=3Dw_ba.exec(String(a));if(b)return b[1];return""}function = w_e(a){try{if(!w_d()&&!(w_f("safari")||w_f("konqueror"))&&w_f("mozilla"))= return Error().stack;=0A= if(!a)return"";var b=3D"- "+w_ca(a)+"(";for(var = c=3D0;c0)b+=3D", ";var = d=3DString(a.arguments[c]);if(d.length>40)d=3Dd.substr(0,40)+"...";b+=3Dd= }b+=3D")\n";b+=3Dw_e(a.caller);return b}catch(e){return"[Cannot get = stack trace]: "+e+"\n"}}var w_da;var w_g=3Dnull,w_h=3Dfalse;function = w_ea(){if((w_g=3D=3Dnull||w_g.closed)&&!w_h)try{w_h=3Dtrue;w_g=3Dwindow.o= pen("","debug","width=3D700,height=3D500,toolbar=3Dno,resizable=3Dyes,scr= ollbars=3Dyes,left=3D16,top=3D16,screenx=3D16,screeny=3D16");w_g.blur();w= _g.document.open();=0A= w_h=3Dfalse;var a=3D"To turn off this debugging = window,hit 'D' inside the main caribou window, then close this = window.
";w_i(a)}catch(b){}}function = w_aa(a,b){if(!w_a){if(typeof = w_j!=3D"undefined")w_j(w_k(a));return}try{var c=3D(new = Date).getTime()-w_da,d=3D"["+c+"] = "+w_k(a).replace(/\n/g,"
")+"
";if(b=3D=3D1){d=3D"Error: = "+d+"";w_g.focus()}}catch(e){}w_i(d)}function = w_i(a){if(!w_a)return;try{w_ea();w_g.document.write(a);w_g.scrollTo(0,100= 0000)}catch(b){}}=0A= ;function w_f(a){if(a in w_l)return w_l[a];return = w_l[a]=3Dnavigator.userAgent.toLowerCase().indexOf(a)!=3D-1}var = w_l=3D{};function w_d(){return w_f("msie")&&!window.opera}function = w_fa(a){if(typeof Error!=3D"undefined")throw new Error(a||"Assertion = Failed");else throw a;}function w_ga(a){a=3Da||"Assertion = failed";if(typeof w_b!=3D"undefined")w_b(a+"\n");w_fa(a)}function = w_m(a,b){if(!a){b=3Db||"Assertion failed";w_ga(b)}}function = w_n(a,b){a.style.display=3Db?"":"none"}function = w_ha(a,b){a.style.display=3Db?"block":=0A= "none"}function w_ia(a,b){a.style.display=3Db?"inline":"none"}function = w_o(a,b){if(a=3D=3Dnull||a.className=3D=3Dnull)return = false;if(a.className=3D=3Db)return true;var c=3Da.className.split(" = ");for(var d=3D0;d/g;function = w_k(a){if(!a)return"";return = a.replace(w_ja,"&").replace(w_ka,"<").replace(w_la,">").replace= (w_ma,""")}var w_ma=3D/\"/g;function w_na(a){return = document.getElementById(a)}function w_oa(a){return document.all[a]}var = w_pa=3Ddocument.getElementById?w_na:=0A= w_oa;function = w_j(a){try{if(window.parent!=3Dwindow&&window.parent.log){window.parent.l= og(window.name+"::"+a);return}}catch(b){}var c=3Dw_pa("log");if(c){var = d=3D"

"+new Date+""+a+"

";c.innerHTML=3Dd+c.innerHTML}else = window.status=3Da};function w_t(){}w_t.raise=3Dfunction(a){if(typeof = Error!=3D"undefined")throw new Error(a||"Assertion Failed");else throw = a;};w_t.fail=3Dfunction(a){a=3Da||"Assertion failed";if(!(typeof = w_b=3D=3D"undefined"))w_b(a+"\n");w_t.raise(a)};w_t.isTrue=3Dfunction(a,b= ){if(!a){if(b=3D=3D=3Dundefined)b=3D"Assertion = failed";w_t.fail(b)}};w_t.equals=3Dfunction(a,b,c){if(a!=3Db){if(c=3D=3D=3D= undefined)c=3D"AS_Assert.equals failed: <"+a+"> !=3D = <"+b+">";w_t.fail(c)}};w_t.typeOf=3Dfunction(a,b,c){if(typeof = a=3D=3Db)return;if(a||a=3D=3D"")try{if(b=3D=3Dw_t.TYPE_MAP[typeof a]||=0A= a instanceof b)return}catch(d){}if(c=3D=3D=3Dundefined){if(typeof = b=3D=3D"function"){var = e=3Db.toString().match(/^\s*function\s+([^\s\{]+)/);if(e)b=3De[1]}c=3D"AS= _Assert.typeOf failed: <"+a+"> not typeof = "+b}w_t.fail(c)};w_t.TYPE_MAP=3D{string:String,number:Number,"boolean":Bo= olean};w_t.numArgs=3Dfunction(a,b){var = c=3Dw_t.numArgs.caller;if(c&&c.arguments.length!=3Da){if(b=3D=3D=3Dundefi= ned)b=3Dc.name+" expected "+a+" arguments but received = "+c.arguments.length;w_t.fail(b)}};var w_u;function w_qa(){var = a=3D["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsof= t.XMLHTTP"];if(typeof XMLHttpRequest=3D=3D"undefined"&&typeof = ActiveXObject!=3D"undefined"){for(var b=3D0;b"+c.stack);throw c;}};var = w_ua=3D0,w_v=3D0;if("undefined"=3D=3Dtypeof = w_j)w_j=3Dfunction(a){};function w_va(a){var = b=3D-1;try{b=3Da.status}catch(c){}return b}function w_wa(a){var = b=3Dnull;try{b=3Da.statusText}catch(c){}return b}function = w_xa(a,b,c,d){if(a.readyState=3D=3D4)try{var = e=3Dtrue;if(d)try{e=3D!(false=3D=3D=3Dd(a))}catch(f){w_j("Message = ("+b+") handling failed: "+f);throw f;}var = g=3Dw_va(a);if(200=3D=3D=3Dg){w_j("Message ("+b+") received after = "+((new Date).getTime()-c)+" ms");try{var h=3D(new = Date).getTime();if(e&&a.responseText.length)eval(a.responseText);=0A= w_j("Message ("+b+") processing took "+((new Date).getTime()-h)+" = ms")}catch(f){w_j("Message ("+b+") processing failed: = "+f);alert(f+"\n"+f.stack+"\n\n"+a.responseText);throw f;}}else = if(204=3D=3Dg)w_j("Message ("+b+") received after "+((new = Date).getTime()-c)+" ms");else w_j("Message ("+b+") failed with response = "+g+" "+w_wa(a)+" after "+((new Date).getTime()-c)+" = ms.")}finally{--w_v}}function w_ya(a,b,c){var d=3D"";if(b){var = e=3D"";for(var f=3D0;f=3D0;)m=3Dm.substring(0,n)+"&= amp;"+m.substring(n+1);w_j("Message ("+i+") sent: POST = "+m+".");++w_v;w_sa(j,a,d,l)};var = w_za=3Dthis;if(!Function.prototype.apply)Function.prototype.apply=3Dfunct= ion(a,b){var c=3D[],d,e;if(!a)a=3Dw_za;var f=3Db||[];for(var = g=3D0;g=3D0;c--)this[c+b]=3Dthis[c];for(var = d=3D0;d"+a.template+"\n",c=3D= this.zb(b);a.parsedTemplate=3Dthis.P(c);return = a};w_y.ConfigureWidget=3Dfunction(a,b){if(!b)b=3D"config";var = c=3Ddocument.forms[b].widgetId.value,d=3Ddocument.forms[b].widgetType.val= ue,e=3Dw_B.ProcessForm(document.forms[b],a);if(e.success)w_.SaveWidget(e.= values,=0A= c,d)};function = w_(){}w_.Init=3Dfunction(a,b,c){w_.L=3D{};w_.Wb=3Da;w_.Ga=3Db;w_.Mc=3Dc;w= _.$b=3Dnull;if(!w_.Za)w_.Za=3D{}};w_.TrapClicks=3Dfunction(a){var = b;try{b=3Da.document.getElementsByTagName("A")}catch(c){return}for(var = d=3D0;d0&= &a.substring(0,4)!=3D"http")a=3D"http://"+a;return = a};w_.GetFirstElementInElementWithClass=3Dfunction(a,b){if(w_o(a,b))retur= n a;if(a){var c=3Da.childNodes.length;for(var d=3D0;db)return LayoutsMessages.NUMBER_TOO_LARGE+" "+b;return = undefined}};function w_A(){this.p=3D[];for(var a in = w_.$b)this.p[this.p.length]=3Da}w_A.DEFAULT_DICTIONARY_KEY=3D"";w_A.MAX_D= ICTIONARY_DEPTH=3D50;w_A.SEPARATOR_CHAR=3D".";w_A.prototype.M=3Dfunction(= a,b){if(this.p.length>=3Dw_A.MAX_DICTIONARY_DEPTH)w_t.raise("Cannot add = another dictionary: = "+a);if(a.indexOf(w_A.SEPARATOR_CHAR)>-1)w_t.raise("Cannot add = dictionary name containing '.': "+a);var = c=3D{};c.name=3Da;c.data=3Db;this.p[this.p.length]=3Dc};w_A.prototype.va=3D=0A= function(a){var = b=3Dthis.p[this.p.length-1];if(b.name!=3Da)w_t.raise("Dictionary "+a+" = is not the last one, and can't be deleted: = "+b.name);this.p.splice(this.p.length-1,1)};w_A.prototype.W=3Dfunction(a)= {if(a=3D=3Dnull)a=3Dw_A.DEFAULT_DICTIONARY_KEY;for(var = b=3Dthis.p.length-1;b>=3D0;--b)if(this.p[b].name=3D=3Da)return = this.p[b].data;return null};w_A.prototype.la=3Dfunction(){return = this.W(w_A.DEFAULT_DICTIONARY_KEY)};w_A.prototype.ab=3Dfunction(a){this.M= (w_A.DEFAULT_DICTIONARY_KEY,a)};w_A.prototype.i=3Dfunction(a){var b=3D=0A= this.W(a);if(b)return b;var = c=3Da.split(w_A.SEPARATOR_CHAR);if(c.length=3D=3D1){b=3Dthis.la();return = b[a]}b=3Dthis.W(c[0]);var d=3D0;if(b)d=3D1;else b=3Dthis.la();for(var = e=3Dd;e=3D500){if(b.responseText.length)document.body.innerHTML= =3Db.responseText;else alert(LayoutsMessages.SERVER_ERROR);return = false}if(a)return a(b);else return true}};function = w_D(a){this.a=3Da}w_D.WIDGET_TYPE_NAME=3D"AdSense";w_D.prototype.d=3Dfunc= tion(){return w_D.WIDGET_TYPE_NAME};w_D.prototype.b=3Dfunction(){return = this.a};w_D.prototype.c=3Dfunction(a,b){this.a.h(b)};var = _AdSenseView=3Dw_D;function = w_E(a){this.a=3Da;this.e=3Da.k()}w_E.WIDGET_TYPE_NAME=3D"BlogArchive";w_E= .POST_LIST_CLASS=3D"posts";w_E.INTERVAL_EXPANDED_VALUE=3D"expanded";w_E.I= NTERVAL_COLLAPSED_VALUE=3D"collapsed";w_E.LOADING_MSG=3D"loading...";w_E.= POST_COUNT_CLASS=3D"post-count";w_E.POST_COUNT_LINK_CLASS=3D"post-count-l= ink";w_E.MENU_ROOT_ID=3D"ArchiveMenu";w_E.TOGGLE_OPEN_CLASS=3D"toggle-ope= n";w_E.yc=3D"▼ ";w_E.Xb=3D"► ";w_E.prototype.d=3Dfu= nction(){return = w_E.WIDGET_TYPE_NAME};w_E.prototype.b=3Dfunction(){return = this.a};w_E.prototype.f=3D=0A= function(){return = false};w_E.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b);= else = if(a=3D=3D"getTitles")this.Pb(b);else{this.widgetInfo.data=3Db;w_.Display= Widget(this)}};w_E.prototype.j=3Dfunction(){var = a=3D{};a.select=3Dfunction(i){return i&&w_o(i,"toggle")};var = b=3Dthis.a.r("ArchiveList");if(!b)return;var = c=3Dw_r(this.e.rootElement,a),d;if(c.length>0&&c[0].currentStyle)d=3Dc[0]= .parentNode.currentStyle.color;for(var e=3D0;e"+e.title+"";c.appendChild(f)}};w_E.prototype.mb=3Df= unction(a){var b=3Dthis.e.rootElement.getElementsByTagName("A");for(var = c in b){var d=3Db[c];if(d.href=3D=3Da)return = d.parentNode}};w_E.prototype.xb=3Dfunction(a){var = b=3Da.getElementsByTagName("UL");if(b.length>0&&!w_o(b[0],"posts"))return= ;var c=3Dthis.ob(a),d=3Da.getElementsByTagName("LI"),e=3Dd.length;return = e-1};w_F.prototype.qa=3Dfunction(a){a=3Da||window.ev= ent;var b=3Da.target||a.srcElement;this.a.v("nextposts",{path:b.href});=0A= return false};w_F.prototype.cb=3Dfunction(a){var = b=3D"";if(document.selection)b=3Ddocument.selection.createRange().text;el= se if(window.getSelection)b=3Dwindow.getSelection();else = if(document.getSelection)b=3Ddocument.getSelection();window.open(a+"?t=3D= "+encodeURIComponent(b)+"&u=3D"+encodeURIComponent(window.location.href)+= "&n=3D"+encodeURIComponent(document.title),"bloggerForm","scrollbars=3Dno= ,width=3D475,height=3D300,top=3D175,left=3D75,status=3Dyes,resizable=3Dye= s");return false};var _BlogView=3Dw_F;function = w_G(a){this.a=3Da;this.e=3Da.k()}w_G.WIDGET_TYPE_NAME=3D"BlogList";w_G.pr= ototype.d=3Dfunction(){return = w_G.WIDGET_TYPE_NAME};w_G.prototype.b=3Dfunction(){return = this.a};w_G.prototype.f=3Dfunction(){return = false};w_G.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)}= ;var = _BlogListView=3Dw_G;_BlogListView._Configure=3D_BlogListView.Configure;fu= nction = w_H(a){this.a=3Da}w_H.WIDGET_TYPE_NAME=3D"CustomSearch";w_H.prototype.d=3D= function(){return = w_H.WIDGET_TYPE_NAME};w_H.prototype.b=3Dfunction(){return = this.a};w_H.prototype.f=3Dfunction(){return = false};w_H.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)}= ;w_H.prototype.j=3Dfunction(){if(!window._UDS_bootstrapped){var = a;if(window.location.host.match(/blogger\.com$/))a=3D"ABQIAAAAVBJEtyJuLxg= Us8KlzeA1lRQpkWYODHKIJGlKH8M-8R98XOejsxRkHYkMWejKfPos1RBuAqHID9wA9Q";else= = a=3Dthis.a.i().key;w_I("http://www.google.com/uds/api?file=3Duds.js&v=3D1= .0&source=3Duds-vbpe&key=3D"+=0A= a);w_J(w_Ca);window._UDS_bootstrapped=3Dtrue}var = b=3Ddocument.getElementById("uds-searchControl");if(!b){b=3Ddocument.crea= teElement("DIV");b.id=3D"uds-searchControl";var = c=3Ddocument.createElement("DIV");c.id=3D"uds-searchResults";b.appendChil= d(c);var = d=3Ddocument.createElement("DIV");d.id=3D"uds-searchClearResults";d.class= Name=3D"gsc-clear-button";d.innerHTML=3D" ";b.appendChild(d);var = e=3Ddocument.getElementById("main");if(!e)e=3Ddocument.getElementsByTagNa= me("body")[0];e.insertBefore(b,e.firstChild)}var f=3Dthis.b();=0A= if(!w_K())w_J(w_Da.bind(f));else = window.setTimeout(w_Da.bind(f),0)};function w_Da(){var a=3Dnew = GSearchControl,b=3Dthis.i();if(b.includeBlog){var c=3Dnew = GblogSearch;c.setUserDefinedLabel(b.thisBlogMsg);c.setSiteRestriction(b.b= logUrl);a.addSearcher(c)}if(b.includePostLinks){var d=3Dnew = GwebSearch;d.setUserDefinedLabel(b.linkedFromHereMsg);d.setSiteRestrictio= n({crefUrl:b.blogUrl+"cse.xml"});a.addSearcher(d)}var = e=3Db.linkLists;for(var f=3D0;fc){a.height=3DMath.round(c/a.width*a.height);a.width=3D= c}a.style.visibility=3D"visible"};w_M.prototype.c=3Dfunction(a,b){if(a=3D= =3D"configure")this.a.h(b)};var _ImageView=3Dw_M;function = w_N(a,b,c,d,e,f,g,h){this.n=3Da;this.Tb=3Db!=3D"null"?b:null;this.ec=3Dc;= this.cc=3Dd;this.dc=3De;this.pc=3Df;this.fc=3Dg;this.Fc=3Dh;this.u=3D-1;t= his.B=3D-1;this.C=3Dnull;this.q=3Ddocument.getElementById(this.n+"_picImg= ");this.aa=3Ddocument.getElementById(this.n+"_changeImageLink");this.ea=3D= document.getElementById(this.n+"_imageChoiceTable");this.ac=3Ddocument.ge= tElementById(this.n+"_imgSrcFromPCRadio");this.bc=3Ddocument.getElementBy= Id(this.n+"_imgSrcFromWebRadio");this.g=3Ddocument.getElementById(this.n+= "_imgFileNameInput");=0A= this.S=3Ddocument.getElementById(this.n+"_imgUrlTextInput");this.Rb=3Dwin= dow.frames[this.n+"_asynchronousFileUploadIframe"];this.La=3D0;this.l=3Dn= ew = Image;this.l.onload=3Dthis.hitch(this,this.mc);this.l.onerror=3Dthis.hitc= h(this,this.lc);this.Yb=3Dfalse;this.Pa=3Dnull;this.m=3Dnull;this.H=3Dnul= l;this.Ta=3Dfalse}w_N.prototype.Oa=3Dfunction(){return = this.ac.checked};w_N.prototype.mc=3Dfunction(){this.La=3D0;w_B.ClearError= (this.n+"_imgUrlTextError");w_B.ClearError(this.n+"_imgFileNameError");if= (!this.Oa()||this.u=3D=3D0){this.u=3Dthis.l.width;=0A= this.B=3Dthis.l.height;this.C=3Dthis.l.src}var = a=3D1,b=3D1;if(this.l.width>300)a=3D300/this.l.width;if(this.l.height>300= )b=3D300/this.l.height;var = c=3DMath.min(a,b);this.q.style.width=3DMath.round(this.l.width*c)+"px";th= is.q.style.height=3DMath.round(this.l.height*c)+"px";this.q.src=3Dthis.l.= src;this.q.style.display=3D"";this.ea.style.display=3D"none";this.aa.styl= e.display=3D"";this.g.disabled=3Dtrue;if(this.ec)this.ec.call({},this.q.s= rc,this.C,this.u,this.B)};w_N.prototype.J=3Dfunction(a,b,c,d){if(a){w_B.S= etError(this.n+"_imgFileNameError",=0A= b);w_B.ClearError(this.n+"_imgUrlTextError")}else{w_B.SetError(this.n+"_i= mgUrlTextError",b);w_B.ClearError(this.n+"_imgFileNameError")}this.q.styl= e.display=3D"none";this.ea.style.display=3D"";this.aa.style.display=3D"no= ne";this.g.disabled=3Dfalse;if(this.cc)this.cc.call({},c,d)};w_N.prototyp= e.lc=3Dfunction(){if(this.La<2){this.La++;var = a=3Dthis.l.src;this.l.src=3D"";this.D(a)}else = this.J(this.Oa(),WidgetMessages.SIV_INVALID_URL,this.q.src)};w_N.prototyp= e.hitch=3Dfunction(a,b){return function(){b.apply(a,arguments)}};=0A= w_N.prototype.D=3Dfunction(a){this.Xa();this.l.src=3Da};w_N.prototype.Ha=3D= function(a){var = b=3Da||window.event;if(window.event){b.returnValue=3Dfalse;b.cancelBubble= =3Dtrue}else{b.preventDefault();b.stopPropagation()}this.q.style.display=3D= "none";this.aa.style.display=3D"none";this.ea.style.display=3D"";this.g.d= isabled=3Dfalse;this.S.value=3D"";this.Ua();this.Ta=3Dtrue;if(this.dc)thi= s.dc.call({})};w_N.prototype.Ma=3Dfunction(){this.ac.checked=3D"true";thi= s.S.value=3D"";this.Xa();this.hc();this.Yb=3Dtrue;try{this.m.submit()}cat= ch(a){this.J(true,=0A= WidgetMessages.SIV_INVALID_URL,this.m.value)}this.gc()};w_N.prototype.G=3D= function(){var = a=3Dthis.Rb.document.result;if(!a)this.J(true,WidgetMessages.SIV_INVALID_= URL,this.g.value);if(a.hasErrors)if(a.errors.length>0)this.J(true,a.error= s[0].message,this.g.value,a.Ac);else = this.J(true,WidgetMessages.SIV_INVALID_URL,this.g.value,a.Ac);else{var = b=3DMath.max(a.origWidth,a.origHeight),c=3Dthis.Ka();if(this.u!=3D0&&c!=3D= -1&&b>c){var = d=3Dc/b;this.u=3DMath.round(a.origWidth*d);this.B=3DMath.round(a.origHeig= ht*d)}else{this.u=3D=0A= a.origWidth;this.B=3Da.origHeight}this.C=3Da.mainSrc;this.D(a.thumbSrc)}}= ;w_N.prototype.Na=3Dfunction(a){var = b=3Da||window.event;if(b.keyCode=3D=3D9)return;this.bc.checked=3D"true";i= f(this.Pa!=3Dnull)window.clearTimeout(this.Pa);var = c=3Dthis.hitch(this,function(){if(this.Ta||this.l.src!=3Dthis.S.value.toL= owerCase()){this.Ua();this.D(this.S.value.toLowerCase())}this.Ta=3Dfalse}= );this.Pa=3Dwindow.setTimeout(c,1000)};w_N.prototype.Qa=3Dfunction(a){thi= s.bc.checked=3Dtrue;this.S.value=3Da;this.D(a)};w_N.prototype.Xa=3Dfuncti= on(){this.q.src=3D=0A= "img/icon_inprogress.gif";this.q.style.width=3D"200px";this.q.style.heigh= t=3D"200px";this.q.style.display=3D"";this.ea.style.display=3D"none";this= .aa.style.display=3D"none"};w_N.prototype.hc=3Dfunction(){if(!this.m){thi= s.m=3Ddocument.createElement("form");this.m.action=3D"imageUpload.do";thi= s.m.method=3D"POST";this.m.target=3Dthis.Rb.name;this.m.encoding=3D"multi= part/form-data";this.m.style.display=3D"none";if(this.Tb){var = a=3Ddocument.createElement("input");a.type=3D"hidden";a.name=3D"blogID";a= .value=3Dthis.Tb;this.m.appendChild(a)}var b=3D=0A= document.createElement("input");b.type=3D"hidden";b.name=3D"sectionWidth"= ;b.id=3D"sectionWidth";this.m.appendChild(b);var = c=3Ddocument.createElement("input");c.type=3D"hidden";c.name=3D"photoUplo= adSecurityToken";c.value=3Dthis.Fc;this.m.appendChild(c);document.body.ap= pendChild(this.m)}var = d=3Dthis.Ka();if(d=3D=3D-1)d=3D1600;document.getElementById("sectionWidth= ").value=3Dd;this.H=3D{parent:this.g.parentNode,nextSibling:this.g.nextSi= bling};this.g.parentNode.removeChild(this.g);this.m.appendChild(this.g)};= w_N.prototype.gc=3Dfunction(){this.m.removeChild(this.g);=0A= if(this.H&&this.H.nextSibling)this.H.parent.insertBefore(this.g,this.H.ne= xtSibling);else = this.H.parent.appendChild(this.g)};w_N.prototype.Ua=3Dfunction(){var = a=3Ddocument.createElement("input");a.type=3D"file";a.name=3Dthis.g.name;= a.id=3Dthis.g.id;a.onchange=3Dthis.g.onchange;var = b=3Dthis.g.nextSibling;if(b=3D=3Dnull)this.g.parentNode.appendChild(a);el= se = this.g.parentNode.insertBefore(a,b);this.g.parentNode.removeChild(this.g)= ;this.g=3Da};w_N.prototype.Ka=3Dfunction(){if(this.pc=3D=3D-1&&this.fc)re= turn this.fc();else return this.pc};=0A= function w_O(){this.usiContainers=3D[]}var w_Ga=3Dnew = w_O;w_O.prototype.Ia=3Dfunction(a,b,c,d,e,f,g,h){this.usiContainers[a]=3D= new w_N(a,b,eval(c),eval(d),eval(e),f,eval(g),h);return = this.usiContainers[a]};w_O.prototype.da=3Dfunction(a){return = this.usiContainers[a]};w_O.prototype.G=3Dfunction(a){var = b=3Dthis.da(a);if(b&&b.Yb)b.G()};var = _UploadSimpleImage=3Dw_Ga;w_O.prototype._createUsiContainer=3Dw_O.prototy= pe.Ia;w_O.prototype._getUsiContainer=3Dw_O.prototype.da;w_O.prototype._ch= annelResultArrived=3Dw_O.prototype.G;w_N.prototype._changeImage=3D=0A= w_N.prototype.Ha;w_N.prototype._imgUrlFileOnChange=3Dw_N.prototype.Ma;w_N= .prototype._imgUrlTextOnKeyUp=3Dw_N.prototype.Na;w_N.prototype._loadIniti= alUrl=3Dw_N.prototype.Qa;w_N.prototype._loadImageFromUrl=3Dw_N.prototype.= D;function = _singleImageConfig_successfulUploadCallback(a,b,c,d){window.singleImageCo= nfig_thumbImageUrl=3Da;window.singleImageConfig_imageUrl=3Db;window.singl= eImageConfig_imageWidth=3Dc;window.singleImageConfig_imageHeight=3Dd;var = e=3Ddocument.getElementById("shrinkToFitRow");if(e)e.style.visibility=3D"= hidden"}function = _singleImageConfig_resetCallback(){window.singleImageConfig_imageUrl=3Dnu= ll;var = a=3Ddocument.getElementById("shrinkToFitRow");if(a)a.style.visibility=3D"= visible"}function = _SIV_getScaledContainerWidth(){if(document.getElementById("checkShrink").= checked)return _SIV_getContainerWidth();=0A= else return-1}function _SIV_getContainerWidth(){var = a=3Ddocument.getElementById("sectionId").value,b=3D150;if(w_.IsOpenerReac= hable(window)&&window.opener.document.getElementById(a))b=3Dwindow.opener= .document.getElementById(a).clientWidth;return b}function = _SIV_setConfigurationOptions(){if(window.singleImageConfig_imageUrl=3D=3D= null){w_.o(window,WidgetMessages.SIV_NO_IMAGE,w_.STATUS_MESSAGE_BAD_CLASS= );return}var = a=3Ddocument.forms.config.widgetId.value,b=3D_SIV_getContainerWidth(),c=3D= document.getElementById("checkShrink").checked,=0A= d=3Dwindow.singleImageConfig_imageWidth,e=3Dwindow.singleImageConfig_imag= eHeight;if(c){var f=3D1;if(d>b){f=3Db/d;d=3Db;e=3DMath.round(e*f)}}var = g=3D{originalUrl:window.singleImageConfig_imageUrl,originalWidth:window.s= ingleImageConfig_imageWidth,originalHeight:window.singleImageConfig_image= Height,displayUrl:window.singleImageConfig_thumbImageUrl,displayWidth:d,d= isplayHeight:e,sectionWidth:b,shrinkToFit:c,title:document.getElementById= ("title").value,caption:document.getElementById("imageCaption").value,sec= urityToken:document.forms.config.securityToken.value};=0A= w_.SaveWidget(g,a,w_M.WIDGET_TYPE_NAME)};function = w_P(a){this.a=3Da;this.e=3Da.k()}w_P.successfulUploadCallback=3Dfunction(= a,b,c,d){w_P.Gc=3Da;w_P.C=3Db;w_P.u=3Dc;w_P.B=3Dd;var = e=3Ddocument.getElementById("shrinkToFitRow");if(e)e.style.visibility=3D"= hidden";e=3Ddocument.getElementById("shrinkToFitMessageRow");if(e)e.style= .visibility=3D"hidden"};w_P.resetCallback=3Dfunction(){w_P.C=3Dnull;var = a=3Ddocument.getElementById("shrinkToFitRow");if(a)a.style.visibility=3D"= visible";a=3Ddocument.getElementById("shrinkToFitMessageRow");if(a)a.styl= e.visibility=3D"visible"};w_P.getScaledContainerWidth=3D=0A= function(){if(document.getElementById("checkShrink").checked)return = w_P.getContainerWidth();else = return-1};w_P.getContainerWidth=3Dfunction(){var = a=3Ddocument.getElementById("sectionId").value,b=3D600;if(w_.IsOpenerReac= hable(window)&&window.opener.document.getElementById(a))b=3Dwindow.opener= .document.getElementById(a).clientWidth;return = b};w_P.WIDGET_TYPE_NAME=3D"Header";w_P.prototype.d=3Dfunction(){return = w_P.WIDGET_TYPE_NAME};w_P.prototype.f=3Dfunction(){return = false};w_P.prototype.b=3Dfunction(){return this.a};=0A= w_P.prototype.c=3Dfunction(a,b){this.a.h(b)};w_P.FilterMap=3D{title:w_B.G= etRequiredStringFilter(),description:null,imagePlacement:null,useImage:nu= ll,securityToken:null};w_P.ConfigureWidget=3Dfunction(){var = a=3Ddocument.forms.config.widgetId.value,b=3Ddocument.forms.config.widget= Type.value,c=3Dw_B.ProcessForm(document.forms.config,w_P.FilterMap),d=3Dw= _P.getContainerWidth();if(c.success){if(w_P.C){var = e=3Dw_P.u,f=3Dw_P.B,g=3Ddocument.getElementById("checkShrink").checked;if= (g){var h=3D1;if(e>d){h=3Dd/e;e=3Dd;f=3DMath.round(f*=0A= h)}}c.values.originalUrl=3Dw_P.C;c.values.originalWidth=3Dw_P.u;c.values.= originalHeight=3Dw_P.B;c.values.displayUrl=3Dw_P.Gc;c.values.displayWidth= =3De;c.values.displayHeight=3Df;c.values.sectionWidth=3Dd;c.values.shrink= ToFit=3Dg}c.values.securityToken=3Ddocument.forms.config.securityToken.va= lue;w_.SaveWidget(c.values,a,b);return true}else return = false};w_P.hideImageOptions=3Dfunction(){document.getElementById("imageOp= tions").style.display=3D"none";return = false};w_P.showImageOptions=3Dfunction(){document.getElementById("imageOp= tions").style.display=3D=0A= "";return false};var = _HeaderView=3Dw_P;_HeaderView.prototype=3Dw_P.prototype;_HeaderView._Conf= igureWidget=3D_HeaderView.ConfigureWidget;_HeaderView._hideImageOptions=3D= _HeaderView.hideImageOptions;_HeaderView._showImageOptions=3D_HeaderView.= showImageOptions;_HeaderView._successfulUploadCallback=3D_HeaderView.succ= essfulUploadCallback;_HeaderView._resetCallback=3D_HeaderView.resetCallba= ck;_HeaderView._getScaledContainerWidth=3D_HeaderView.getScaledContainerW= idth;_HeaderView._getContainerWidth=3D_HeaderView.getContainerWidth;funct= ion = w_Q(a,b){this.a=3Da;this.e=3Da.k();this.Ic=3Db}w_Q.prototype.b=3Dfunction= (){return this.a};w_Q.prototype.d=3Dfunction(){return = this.Ic};w_Q.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b= )};w_Q.ConfigureWidget=3Dfunction(a){setFormAndSubmit();var = b=3Ddocument.forms.stuffform.widgetId.value,c=3Ddocument.forms.stuffform.= securityToken.value,d=3Ddocument.getElementById("textarea"),e=3Ddocument.= getElementById("title"),f=3Dd.value;if(a=3D=3D"Text")f=3Df.replace(/\n/g,= "
");var g=3D{content:f,title:e.value,securityToken:c};=0A= w_.SaveWidget(g,b,a)};function = w_R(a){w_Q.call(this,a,"Text")}w_R.inherits(w_Q);w_R.ConfigureWidget=3Dfu= nction(){w_Q.ConfigureWidget("Text")};function = w_S(a){w_Q.call(this,a,"HTML")}w_S.inherits(w_Q);w_S.ConfigureWidget=3Dfu= nction(){w_Q.ConfigureWidget("HTML")};var = _TextView=3Dw_R;_TextView.prototype=3Dw_R.prototype;_TextView._ConfigureW= idget=3D_TextView.ConfigureWidget;var = _HTMLView=3Dw_S;_HTMLView.prototype=3Dw_S.prototype;_HTMLView._ConfigureW= idget=3D_HTMLView.ConfigureWidget;function = w_I(a){document.write('