From: Subject: =?Windows-1252?Q?ECONOM=CDA_AVANZAD@:_BSCP_y_el_grupo_=C1mbito_firman_un_?= =?Windows-1252?Q?acuerdo_para_dise=F1ar_viviendas_sociales_en_Marruecos?= Date: Mon, 16 Jun 2008 11:31:28 +0200 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0074_01C8CFA4.84EE8730" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 This is a multi-part message in MIME format. ------=_NextPart_000_0074_01C8CFA4.84EE8730 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.blogger.com/buttons/blogger-simple-blue.gif R0lGODlhWAAeANUOAAAzZv9mAP///wBNmQAXO7vJ1kRpj/+zgBFBcO7x9d3k63eSraq7zP/Zv/8A AP+MQCJOev+WUIiguDNchZ9TJszW4CA5Wf9wEJmtwmaFo//Gn+9jBv/iz//s3wAiVf+DMP+fYP/1 7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA4ALAAAAABYAB4AAAb/QIdj QCwaj8ikcslsOpHCIWBKrVqv2Kx2y+1eB1KveEwubwkDqoUSaLvfcDfFYq7bq+ipZRPv9zd0d4Jk eQBsfohvFIOMXoWJkG6Nk1qPcREHmZkgF4iUn1aWbhcNAqanAiERfmMGE6Biom2lqLUffVcMBbsM BlMGAgWwjmkAbxG1yRq4VskQAMDCw1yyB6caD9nIph3MVaYACAwCC9DB09TFb9amq20XHaedcFfg ABLk5tIIGKYYCFMmKBAgYQGDKQgKBMtQ4BmABQmCAQTAYEG/DHjUuWFnikMDWqgaPHhTj5yEBAoA RpuiUMFAaQMVRBQwpR9KU74yCFBQ4RwA/1MyfVGplqyogAMkm6GS8OscAgEJECCIiAACVHM0AQyc MFWAr57PBgI0BWHiUI1tOBo9hVSSUgMGejJduRKAQrg+7dm7+5PcgoG+7IVCG0Ctx48NOKBq26Zk U5p0fd6tqzcrX1O7dj0TnHHKulPujrFN+i3rAnArn0btWvUqsKxbu34V8Ko0FqKmsGXbrWG029K7 TB0ElqBcy5dTBlaYWXPnQK8PoRZYPoXzWc9utq09NfI3lZnCJ/Y8KC58wIH4siYM1lPoX+HPEiS4 TTgAyLUN6MGybhd6GVkBkLJdA/N4N0gGBY2jQEAYLJCeQ4TU1wYmmlTYnX6NjGNKAhhFd08KU2YA GIk3jUwAl1kAQAAXhP8Vc8iIfSyCziSF7AFjHIDMSGMxAKxxoxyB6MhIIUIWSY0DHhipJBYeREHA k1BGKeWUVFZp5ZVYZjmlEEEAADs= ------=_NextPart_000_0074_01C8CFA4.84EE8730 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_0074_01C8CFA4.84EE8730 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://photos1.blogger.com/x/blogger2/7284/950756930473513/150/z/354982/gse_multipart76279.jpg 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 ------=_NextPart_000_0074_01C8CFA4.84EE8730 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://bp2.blogger.com/_FMQVEsPBnPE/Ry6MH-zvKlI/AAAAAAAAJ6g/n4KyQeiX2Po/S150/Bandera+de+Espa%C3%B1a+al+viento.jpg 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 ------=_NextPart_000_0074_01C8CFA4.84EE8730 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://bp0.blogger.com/_FMQVEsPBnPE/SFBtwnpEZ1I/AAAAAAAAS5Q/6TTvQDtq0b8/s400/Estrecho+de+Gibraltar+desde+%C3%81frica.jpg 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 ------=_NextPart_000_0074_01C8CFA4.84EE8730 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_0074_01C8CFA4.84EE8730 Content-Type: application/x-css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/widgets/1386163407-newsbar.css .newsBar-status { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: = 4px; MARGIN: 10px; COLOR: #676767; PADDING-TOP: 4px } IMG.gsc-branding-img-noclear { DISPLAY: inline } ------=_NextPart_000_0074_01C8CFA4.84EE8730 Content-Type: application/x-css 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 { FONT-SIZE: 1.7em; LINE-HEIGHT: 0.6em } #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_0074_01C8CFA4.84EE8730 Content-Type: application/x-css 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_0074_01C8CFA4.84EE8730 Content-Type: application/x-css 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_0074_01C8CFA4.84EE8730 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_0074_01C8CFA4.84EE8730 Content-Type: application/x-css 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_0074_01C8CFA4.84EE8730 Content-Type: application/x-css 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_0074_01C8CFA4.84EE8730 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_0074_01C8CFA4.84EE8730 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_0074_01C8CFA4.84EE8730 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_0074_01C8CFA4.84EE8730 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: https://ssl.google-analytics.com/urchin.js //-- Google Analytics Urchin Module=0A= //-- Copyright 2007 Google, All Rights Reserved.=0A= =0A= //-- Urchin On Demand Settings ONLY=0A= var _uacct=3D""; // set up the Urchin Account=0A= var _userv=3D1; // service mode (0=3Dlocal,1=3Dremote,2=3Dboth)=0A= =0A= //-- UTM User Settings=0A= var _ufsc=3D1; // set client info flag (1=3Don|0=3Doff)=0A= var _udn=3D"auto"; // (auto|none|domain) set the domain name for cookies=0A= var _uhash=3D"on"; // (on|off) unique domain hash for cookies=0A= var _utimeout=3D"1800"; // set the inactive session timeout in seconds=0A= var _ugifpath=3D"/__utm.gif"; // set the web path to the __utm.gif file=0A= var _utsp=3D"|"; // transaction field separator=0A= var _uflash=3D1; // set flash version detect option (1=3Don|0=3Doff)=0A= var _utitle=3D1; // set the document title detect option = (1=3Don|0=3Doff)=0A= var _ulink=3D0; // enable linker functionality (1=3Don|0=3Doff)=0A= var _uanchor=3D0; // enable use of anchors for campaign = (1=3Don|0=3Doff)=0A= var _utcp=3D"/"; // the cookie path for tracking=0A= var _usample=3D100; // The sampling % of visitors to track (1-100).=0A= =0A= //-- UTM Campaign Tracking Settings=0A= var _uctm=3D1; // set campaign tracking module (1=3Don|0=3Doff)=0A= var _ucto=3D"15768000"; // set timeout in seconds (6 month default)=0A= var _uccn=3D"utm_campaign"; // name=0A= var _ucmd=3D"utm_medium"; // medium (cpc|cpm|link|email|organic)=0A= var _ucsr=3D"utm_source"; // source=0A= var _uctr=3D"utm_term"; // term/keyword=0A= var _ucct=3D"utm_content"; // content=0A= var _ucid=3D"utm_id"; // id number=0A= var _ucno=3D"utm_nooverride"; // don't override=0A= =0A= //-- Auto/Organic Sources and Keywords=0A= var _uOsr=3Dnew Array();=0A= var _uOkw=3Dnew Array();=0A= _uOsr[0]=3D"google"; _uOkw[0]=3D"q";=0A= _uOsr[1]=3D"yahoo"; _uOkw[1]=3D"p";=0A= _uOsr[2]=3D"msn"; _uOkw[2]=3D"q";=0A= _uOsr[3]=3D"aol"; _uOkw[3]=3D"query";=0A= _uOsr[4]=3D"aol"; _uOkw[4]=3D"encquery";=0A= _uOsr[5]=3D"lycos"; _uOkw[5]=3D"query";=0A= _uOsr[6]=3D"ask"; _uOkw[6]=3D"q";=0A= _uOsr[7]=3D"altavista"; _uOkw[7]=3D"q";=0A= _uOsr[8]=3D"netscape"; _uOkw[8]=3D"query";=0A= _uOsr[9]=3D"cnn"; _uOkw[9]=3D"query";=0A= _uOsr[10]=3D"looksmart"; _uOkw[10]=3D"qt";=0A= _uOsr[11]=3D"about"; _uOkw[11]=3D"terms";=0A= _uOsr[12]=3D"mamma"; _uOkw[12]=3D"query";=0A= _uOsr[13]=3D"alltheweb"; _uOkw[13]=3D"q";=0A= _uOsr[14]=3D"gigablast"; _uOkw[14]=3D"q";=0A= _uOsr[15]=3D"voila"; _uOkw[15]=3D"rdata";=0A= _uOsr[16]=3D"virgilio"; _uOkw[16]=3D"qs";=0A= _uOsr[17]=3D"live"; _uOkw[17]=3D"q";=0A= _uOsr[18]=3D"baidu"; _uOkw[18]=3D"wd";=0A= _uOsr[19]=3D"alice"; _uOkw[19]=3D"qs";=0A= _uOsr[20]=3D"yandex"; _uOkw[20]=3D"text";=0A= _uOsr[21]=3D"najdi"; _uOkw[21]=3D"q";=0A= _uOsr[22]=3D"aol"; _uOkw[22]=3D"q";=0A= _uOsr[23]=3D"club-internet"; _uOkw[23]=3D"query";=0A= _uOsr[24]=3D"mama"; _uOkw[24]=3D"query";=0A= _uOsr[25]=3D"seznam"; _uOkw[25]=3D"q";=0A= _uOsr[26]=3D"search"; _uOkw[26]=3D"q";=0A= _uOsr[27]=3D"wp"; _uOkw[27]=3D"szukaj";=0A= _uOsr[28]=3D"onet"; _uOkw[28]=3D"qt";=0A= _uOsr[29]=3D"netsprint"; _uOkw[29]=3D"q";=0A= _uOsr[30]=3D"google.interia"; _uOkw[30]=3D"q";=0A= _uOsr[31]=3D"szukacz"; _uOkw[31]=3D"q";=0A= _uOsr[32]=3D"yam"; _uOkw[32]=3D"k";=0A= _uOsr[33]=3D"pchome"; _uOkw[33]=3D"q";=0A= _uOsr[34]=3D"kvasir"; _uOkw[34]=3D"searchExpr";=0A= _uOsr[35]=3D"sesam"; _uOkw[35]=3D"q";=0A= _uOsr[36]=3D"ozu"; _uOkw[36]=3D"q";=0A= _uOsr[37]=3D"terra"; _uOkw[37]=3D"query";=0A= _uOsr[38]=3D"nostrum"; _uOkw[38]=3D"query";=0A= _uOsr[39]=3D"mynet"; _uOkw[39]=3D"q";=0A= _uOsr[40]=3D"ekolay"; _uOkw[40]=3D"q";=0A= =0A= //-- Auto/Organic Keywords to Ignore=0A= var _uOno=3Dnew Array();=0A= //_uOno[0]=3D"urchin";=0A= //_uOno[1]=3D"urchin.com";=0A= //_uOno[2]=3D"www.urchin.com";=0A= =0A= //-- Referral domains to Ignore=0A= var _uRno=3Dnew Array();=0A= //_uRno[0]=3D".urchin.com";=0A= =0A= //-- **** Don't modify below this point ***=0A= var = _uff,_udh,_udt,_ubl=3D0,_udo=3D"",_uu,_ufns=3D0,_uns=3D0,_ur=3D"-",_ufno=3D= 0,_ust=3D0,_ubd=3Ddocument,_udl=3D_ubd.location,_udlh=3D"",_uwv=3D"1.2";=0A= var _ugifpath2=3D"http://www.google-analytics.com/__utm.gif";=0A= if (_udl.hash) _udlh=3D_udl.href.substring(_udl.href.indexOf('#'));=0A= if (_udl.protocol=3D=3D"https:") = _ugifpath2=3D"https://ssl.google-analytics.com/__utm.gif";=0A= if (!_utcp || _utcp=3D=3D"") _utcp=3D"/";=0A= function urchinTracker(page) {=0A= if (_udl.protocol=3D=3D"file:") return;=0A= if (_uff && (!page || page=3D=3D"")) return;=0A= var a,b,c,xx,v,z,k,x=3D"",s=3D"",f=3D0,nv=3D0;=0A= var nx=3D" expires=3D"+_uNx()+";";=0A= var dc=3D_ubd.cookie;=0A= _udh=3D_uDomain();=0A= if (!_uVG()) return;=0A= _uu=3DMath.round(Math.random()*2147483647);=0A= _udt=3Dnew Date();=0A= _ust=3DMath.round(_udt.getTime()/1000);=0A= a=3Ddc.indexOf("__utma=3D"+_udh+".");=0A= b=3Ddc.indexOf("__utmb=3D"+_udh);=0A= c=3Ddc.indexOf("__utmc=3D"+_udh);=0A= if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A= if (_utimeout && _utimeout!=3D"") {=0A= x=3Dnew Date(_udt.getTime()+(_utimeout*1000));=0A= x=3D" expires=3D"+x.toGMTString()+";";=0A= }=0A= if (_ulink) {=0A= if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A= s+=3D_udl.search;=0A= if(s && s!=3D"" && s.indexOf("__utma=3D")>=3D0) {=0A= if (!(_uIN(a=3D_uGC(s,"__utma=3D","&")))) a=3D"-";=0A= if (!(_uIN(b=3D_uGC(s,"__utmb=3D","&")))) b=3D"-";=0A= if (!(_uIN(c=3D_uGC(s,"__utmc=3D","&")))) c=3D"-";=0A= v=3D_uGC(s,"__utmv=3D","&");=0A= z=3D_uGC(s,"__utmz=3D","&");=0A= k=3D_uGC(s,"__utmk=3D","&");=0A= xx=3D_uGC(s,"__utmx=3D","&");=0A= if ((k*1) !=3D ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) = {_ubl=3D1;a=3D"-";b=3D"-";c=3D"-";xx=3D"-";z=3D"-";v=3D"-";}=0A= if (a!=3D"-" && b!=3D"-" && c!=3D"-") f=3D1;=0A= else if(a!=3D"-") f=3D2;=0A= }=0A= }=0A= if(f=3D=3D1) {=0A= _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A= _ubd.cookie=3D"__utmb=3D"+b+"; path=3D"+_utcp+";"+x+_udo;=0A= _ubd.cookie=3D"__utmc=3D"+c+"; path=3D"+_utcp+";"+_udo;=0A= } else if (f=3D=3D2) {=0A= a=3D_uFixA(s,"&",_ust);=0A= _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A= _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A= _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A= _ufns=3D1;=0A= } else if (a>=3D0 && b>=3D0 && c>=3D0) {=0A= b =3D _uGC(dc,"__utmb=3D"+_udh,";");=0A= b =3D ("-" =3D=3D b) ? _udh : b; =0A= _ubd.cookie=3D"__utmb=3D"+b+"; path=3D"+_utcp+";"+x+_udo;=0A= } else {=0A= if (a>=3D0) a=3D_uFixA(_ubd.cookie,";",_ust);=0A= else {=0A= a=3D_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1";=0A= nv=3D1;=0A= }=0A= _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A= _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A= _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A= _ufns=3D1;=0A= }=0A= if (_ulink && xx && xx!=3D"" && xx!=3D"-") {=0A= xx=3D_uUES(xx);=0A= if (xx.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmx=3D"+xx+"; = path=3D"+_utcp+";"+nx+_udo;=0A= }=0A= if (_ulink && v && v!=3D"" && v!=3D"-") {=0A= v=3D_uUES(v);=0A= if (v.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmv=3D"+v+"; = path=3D"+_utcp+";"+nx+_udo;=0A= }=0A= var wc=3Dwindow;=0A= var c=3D_ubd.cookie;=0A= if(nv>0 && wc && wc.gaGlobal && !wc.gaGlobal.from_cookie){=0A= var g=3Dwc.gaGlobal;=0A= var ua=3Dc.split("__utma=3D")[1].split(";")[0].split(".");=0A= if(g.sid)ua[4]=3Dg.sid;=0A= ua[3]=3Dua[4];=0A= if(g.vid){=0A= var v=3Dg.vid.split(".");=0A= ua[1]=3Dv[0];=0A= ua[2]=3Dv[1];=0A= }=0A= _ubd.cookie=3D"__utma=3D"+ua.join(".")+"; path=3D"+_utcp+";"+nx+_udo;=0A= }=0A= _uInfo(page);=0A= _ufns=3D0;=0A= _ufno=3D0;=0A= if (!page || page=3D=3D"") _uff=3D1;=0A= }=0A= function _uGH() {=0A= var hid;=0A= var wc=3Dwindow;=0A= if (wc && wc.gaGlobal && wc.gaGlobal.hid) {=0A= hid=3Dwc.gaGlobal.hid;=0A= } else {=0A= hid=3DMath.round(Math.random()*0x7fffffff);=0A= if (!wc.gaGlobal) wc.gaGlobal=3D{};=0A= wc.gaGlobal.hid=3Dhid;=0A= }=0A= return hid;=0A= }=0A= function _uInfo(page) {=0A= var p,s=3D"",dm=3D"",pg=3D_udl.pathname+_udl.search;=0A= if (page && page!=3D"") pg=3D_uES(page,1);=0A= _ur=3D_ubd.referrer;=0A= if (!_ur || _ur=3D=3D"") { _ur=3D"-"; }=0A= else {=0A= dm=3D_ubd.domain;=0A= if(_utcp && _utcp!=3D"/") dm+=3D_utcp;=0A= p=3D_ur.indexOf(dm);=0A= if ((p>=3D0) && (p<=3D8)) { _ur=3D"0"; }=0A= if (_ur.indexOf("[")=3D=3D0 && = _ur.lastIndexOf("]")=3D=3D(_ur.length-1)) { _ur=3D"-"; }=0A= }=0A= s+=3D"&utmn=3D"+_uu;=0A= if (_ufsc) s+=3D_uBInfo();=0A= if (_uctm) s+=3D_uCInfo();=0A= if (_utitle && _ubd.title && _ubd.title!=3D"") = s+=3D"&utmdt=3D"+_uES(_ubd.title);=0A= if (_udl.hostname && _udl.hostname!=3D"") = s+=3D"&utmhn=3D"+_uES(_udl.hostname);=0A= if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A= s+=3D"&utmhid=3D"+_uGH();=0A= s+=3D"&utmr=3D"+_ur;=0A= s+=3D"&utmp=3D"+pg;=0A= if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A= var i=3Dnew Image(1,1);=0A= i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A= i.onload=3Dfunction() { _uVoid(); }=0A= }=0A= if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A= var i2=3Dnew Image(1,1);=0A= = i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+= _uGCS();=0A= i2.onload=3Dfunction() { _uVoid(); }=0A= }=0A= return;=0A= }=0A= function _uVoid() { return; }=0A= function _uCInfo() {=0A= if (!_ucto || _ucto=3D=3D"") { _ucto=3D"15768000"; }=0A= if (!_uVG()) return;=0A= var = c=3D"",t=3D"-",t2=3D"-",t3=3D"-",o=3D0,cs=3D0,cn=3D0,i=3D0,z=3D"-",s=3D""= ;=0A= if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A= s+=3D_udl.search;=0A= var x=3Dnew Date(_udt.getTime()+(_ucto*1000));=0A= var dc=3D_ubd.cookie;=0A= x=3D" expires=3D"+x.toGMTString()+";";=0A= if (_ulink && !_ubl) {=0A= z=3D_uUES(_uGC(s,"__utmz=3D","&"));=0A= if (z!=3D"-" && z.indexOf(";")=3D=3D-1) { = _ubd.cookie=3D"__utmz=3D"+z+"; path=3D"+_utcp+";"+x+_udo; return ""; }=0A= }=0A= z=3Ddc.indexOf("__utmz=3D"+_udh+".");=0A= if (z>-1) { z=3D_uGC(dc,"__utmz=3D"+_udh+".",";"); }=0A= else { z=3D"-"; }=0A= t=3D_uGC(s,_ucid+"=3D","&");=0A= t2=3D_uGC(s,_ucsr+"=3D","&");=0A= t3=3D_uGC(s,"gclid=3D","&");=0A= if ((t!=3D"-" && t!=3D"") || (t2!=3D"-" && t2!=3D"") || (t3!=3D"-" && = t3!=3D"")) {=0A= if (t!=3D"-" && t!=3D"") c+=3D"utmcid=3D"+_uEC(t);=0A= if (t2!=3D"-" && t2!=3D"") { if (c !=3D "") c+=3D"|"; = c+=3D"utmcsr=3D"+_uEC(t2); }=0A= if (t3!=3D"-" && t3!=3D"") { if (c !=3D "") c+=3D"|"; = c+=3D"utmgclid=3D"+_uEC(t3); }=0A= t=3D_uGC(s,_uccn+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmccn=3D"+_uEC(t);=0A= else c+=3D"|utmccn=3D(not+set)";=0A= t=3D_uGC(s,_ucmd+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmcmd=3D"+_uEC(t);=0A= else c+=3D"|utmcmd=3D(not+set)";=0A= t=3D_uGC(s,_uctr+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmctr=3D"+_uEC(t);=0A= else { t=3D_uOrg(1); if (t!=3D"-" && t!=3D"") = c+=3D"|utmctr=3D"+_uEC(t); }=0A= t=3D_uGC(s,_ucct+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmcct=3D"+_uEC(t);=0A= t=3D_uGC(s,_ucno+"=3D","&");=0A= if (t=3D=3D"1") o=3D1;=0A= if (z!=3D"-" && o=3D=3D1) return "";=0A= }=0A= if (c=3D=3D"-" || c=3D=3D"") { c=3D_uOrg(); if (z!=3D"-" && = _ufno=3D=3D1) return ""; }=0A= if (c=3D=3D"-" || c=3D=3D"") { if (_ufns=3D=3D1) c=3D_uRef(); if = (z!=3D"-" && _ufno=3D=3D1) return ""; }=0A= if (c=3D=3D"-" || c=3D=3D"") {=0A= if (z=3D=3D"-" && _ufns=3D=3D1) { = c=3D"utmccn=3D(direct)|utmcsr=3D(direct)|utmcmd=3D(none)"; }=0A= if (c=3D=3D"-" || c=3D=3D"") return "";=0A= }=0A= if (z!=3D"-") {=0A= i=3Dz.indexOf(".");=0A= if (i>-1) i=3Dz.indexOf(".",i+1);=0A= if (i>-1) i=3Dz.indexOf(".",i+1);=0A= if (i>-1) i=3Dz.indexOf(".",i+1);=0A= t=3Dz.substring(i+1,z.length);=0A= if (t.toLowerCase()=3D=3Dc.toLowerCase()) cs=3D1;=0A= t=3Dz.substring(0,i);=0A= if ((i=3Dt.lastIndexOf(".")) > -1) {=0A= t=3Dt.substring(i+1,t.length);=0A= cn=3D(t*1);=0A= }=0A= }=0A= if (cs=3D=3D0 || _ufns=3D=3D1) {=0A= t=3D_uGC(dc,"__utma=3D"+_udh+".",";");=0A= if ((i=3Dt.lastIndexOf(".")) > 9) {=0A= _uns=3Dt.substring(i+1,t.length);=0A= _uns=3D(_uns*1);=0A= }=0A= cn++;=0A= if (_uns=3D=3D0) _uns=3D1;=0A= _ubd.cookie=3D"__utmz=3D"+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; = path=3D"+_utcp+"; "+x+_udo;=0A= }=0A= if (cs=3D=3D0 || _ufns=3D=3D1) return "&utmcn=3D1";=0A= else return "&utmcr=3D1";=0A= }=0A= function _uRef() {=0A= if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A= var i=3D0,h,k,n;=0A= if ((i=3D_ur.indexOf("://"))<0 || _uGCse()) return "";=0A= h=3D_ur.substring(i+3,_ur.length);=0A= if (h.indexOf("/") > -1) {=0A= k=3Dh.substring(h.indexOf("/"),h.length);=0A= if (k.indexOf("?") > -1) k=3Dk.substring(0,k.indexOf("?"));=0A= h=3Dh.substring(0,h.indexOf("/"));=0A= }=0A= h=3Dh.toLowerCase();=0A= n=3Dh;=0A= if ((i=3Dn.indexOf(":")) > -1) n=3Dn.substring(0,i);=0A= for (var ii=3D0;ii<_uRno.length;ii++) {=0A= if ((i=3Dn.indexOf(_uRno[ii].toLowerCase())) > -1 && = n.length=3D=3D(i+_uRno[ii].length)) { _ufno=3D1; break; }=0A= }=0A= if (h.indexOf("www.")=3D=3D0) h=3Dh.substring(4,h.length);=0A= return = "utmccn=3D(referral)|utmcsr=3D"+_uEC(h)+"|"+"utmcct=3D"+_uEC(k)+"|utmcmd=3D= referral";=0A= }=0A= function _uOrg(t) {=0A= if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A= var i=3D0,h,k;=0A= if ((i=3D_ur.indexOf("://"))<0 || _uGCse()) return "";=0A= h=3D_ur.substring(i+3,_ur.length);=0A= if (h.indexOf("/") > -1) {=0A= h=3Dh.substring(0,h.indexOf("/"));=0A= }=0A= for (var ii=3D0;ii<_uOsr.length;ii++) {=0A= if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) {=0A= if ((i=3D_ur.indexOf("?"+_uOkw[ii]+"=3D")) > -1 || = (i=3D_ur.indexOf("&"+_uOkw[ii]+"=3D")) > -1) {=0A= k=3D_ur.substring(i+_uOkw[ii].length+2,_ur.length);=0A= if ((i=3Dk.indexOf("&")) > -1) k=3Dk.substring(0,i);=0A= for (var yy=3D0;yy<_uOno.length;yy++) {=0A= if (_uOno[yy].toLowerCase()=3D=3Dk.toLowerCase()) { _ufno=3D1; = break; }=0A= }=0A= if (t) return _uEC(k);=0A= else return = "utmccn=3D(organic)|utmcsr=3D"+_uEC(_uOsr[ii])+"|"+"utmctr=3D"+_uEC(k)+"|= utmcmd=3Dorganic";=0A= }=0A= }=0A= }=0A= return "";=0A= }=0A= function _uGCse() {=0A= var h,p;=0A= h=3Dp=3D_ur.split("://")[1];=0A= if(h.indexOf("/")>-1) {=0A= h=3Dh.split("/")[0];=0A= p=3Dp.substring(p.indexOf("/")+1,p.length);=0A= }=0A= if(p.indexOf("?")>-1) {=0A= p=3Dp.split("?")[0];=0A= }=0A= if(h.toLowerCase().indexOf("google")>-1) {=0A= if(_ur.indexOf("?q=3D")>-1 || _ur.indexOf("&q=3D")>-1) {=0A= if (p.toLowerCase().indexOf("cse")>-1) {=0A= return true;=0A= }=0A= }=0A= }=0A= }=0A= function _uBInfo() {=0A= var sr=3D"-",sc=3D"-",ul=3D"-",fl=3D"-",cs=3D"-",je=3D1;=0A= var n=3Dnavigator;=0A= if (self.screen) {=0A= sr=3Dscreen.width+"x"+screen.height;=0A= sc=3Dscreen.colorDepth+"-bit";=0A= } else if (self.java) {=0A= var j=3Djava.awt.Toolkit.getDefaultToolkit();=0A= var s=3Dj.getScreenSize();=0A= sr=3Ds.width+"x"+s.height;=0A= }=0A= if (n.language) { ul=3Dn.language.toLowerCase(); }=0A= else if (n.browserLanguage) { ul=3Dn.browserLanguage.toLowerCase(); }=0A= je=3Dn.javaEnabled()?1:0;=0A= if (_uflash) fl=3D_uFlash();=0A= if (_ubd.characterSet) cs=3D_uES(_ubd.characterSet);=0A= else if (_ubd.charset) cs=3D_uES(_ubd.charset);=0A= return = "&utmcs=3D"+cs+"&utmsr=3D"+sr+"&utmsc=3D"+sc+"&utmul=3D"+ul+"&utmje=3D"+j= e+"&utmfl=3D"+fl;=0A= }=0A= function __utmSetTrans() {=0A= var e;=0A= if (_ubd.getElementById) e=3D_ubd.getElementById("utmtrans");=0A= else if (_ubd.utmform && _ubd.utmform.utmtrans) = e=3D_ubd.utmform.utmtrans;=0A= if (!e) return;=0A= var l=3De.value.split("UTM:");=0A= var i,i2,c;=0A= if (_userv=3D=3D0 || _userv=3D=3D2) i=3Dnew Array();=0A= if (_userv=3D=3D1 || _userv=3D=3D2) { i2=3Dnew Array(); c=3D_uGCS(); }=0A= =0A= for (var ii=3D0;ii-1) return;=0A= if (h) { url=3Dl+"#"+p; }=0A= else {=0A= if (iq=3D=3D-1 && ih=3D=3D-1) url=3Dl+"?"+p;=0A= else if (ih=3D=3D-1) url=3Dl+"&"+p;=0A= else if (iq=3D=3D-1) url=3Dl.substring(0,ih-1)+"?"+p+l.substring(ih);=0A= else url=3Dl.substring(0,ih-1)+"&"+p+l.substring(ih);=0A= }=0A= }=0A= return url;=0A= }=0A= function __utmLinker(l,h) {=0A= if (!_ulink || !l || l=3D=3D"") return;=0A= _udl.href=3D__utmLinkerUrl(l,h);=0A= }=0A= function __utmLinkPost(f,h) {=0A= if (!_ulink || !f || !f.action) return;=0A= f.action=3D__utmLinkerUrl(f.action, h);=0A= return;=0A= }=0A= function __utmSetVar(v) {=0A= if (!v || v=3D=3D"") return;=0A= if (!_udo || _udo =3D=3D "") {=0A= _udh=3D_uDomain();=0A= if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A= }=0A= if (!_uVG()) return;=0A= var r=3DMath.round(Math.random() * 2147483647);=0A= _ubd.cookie=3D"__utmv=3D"+_udh+"."+_uES(v)+"; path=3D"+_utcp+"; = expires=3D"+_uNx()+";"+_udo;=0A= var s=3D"&utmt=3Dvar&utmn=3D"+r;=0A= if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A= if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A= var i=3Dnew Image(1,1);=0A= i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A= i.onload=3Dfunction() { _uVoid(); }=0A= }=0A= if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A= var i2=3Dnew Image(1,1);=0A= = i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+= _uGCS();=0A= i2.onload=3Dfunction() { _uVoid(); }=0A= }=0A= }=0A= function _uGCS() {=0A= var t,c=3D"",dc=3D_ubd.cookie;=0A= if ((t=3D_uGC(dc,"__utma=3D"+_udh+".",";"))!=3D"-") = c+=3D_uES("__utma=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmx=3D"+_udh,";"))!=3D"-") = c+=3D_uES("__utmx=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmz=3D"+_udh+".",";"))!=3D"-") = c+=3D_uES("__utmz=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmv=3D"+_udh+".",";"))!=3D"-") = c+=3D_uES("__utmv=3D"+t+";");=0A= if (c.charAt(c.length-1)=3D=3D"+") c=3Dc.substring(0,c.length-1);=0A= return c;=0A= }=0A= function _uGC(l,n,s) {=0A= if (!l || l=3D=3D"" || !n || n=3D=3D"" || !s || s=3D=3D"") return "-";=0A= var i,i2,i3,c=3D"-";=0A= i=3Dl.indexOf(n);=0A= i3=3Dn.indexOf("=3D")+1;=0A= if (i > -1) {=0A= i2=3Dl.indexOf(s,i); if (i2 < 0) { i2=3Dl.length; }=0A= c=3Dl.substring((i+i3),i2);=0A= }=0A= return c;=0A= }=0A= function _uDomain() {=0A= if (!_udn || _udn=3D=3D"" || _udn=3D=3D"none") { _udn=3D""; return 1; }=0A= if (_udn=3D=3D"auto") {=0A= var d=3D_ubd.domain;=0A= if (d.substring(0,4)=3D=3D"www.") {=0A= d=3Dd.substring(4,d.length);=0A= }=0A= _udn=3Dd;=0A= }=0A= _udn =3D _udn.toLowerCase(); =0A= if (_uhash=3D=3D"off") return 1;=0A= return _uHash(_udn);=0A= }=0A= function _uHash(d) {=0A= if (!d || d=3D=3D"") return 1;=0A= var h=3D0,g=3D0;=0A= for (var i=3Dd.length-1;i>=3D0;i--) {=0A= var c=3DparseInt(d.charCodeAt(i));=0A= h=3D((h << 6) & 0xfffffff) + c + (c << 14);=0A= if ((g=3Dh & 0xfe00000)!=3D0) h=3D(h ^ (g >> 21));=0A= }=0A= return h;=0A= }=0A= function _uFixA(c,s,t) {=0A= if (!c || c=3D=3D"" || !s || s=3D=3D"" || !t || t=3D=3D"") return "-";=0A= var a=3D_uGC(c,"__utma=3D"+_udh+".",s);=0A= var lt=3D0,i=3D0;=0A= if ((i=3Da.lastIndexOf(".")) > 9) {=0A= _uns=3Da.substring(i+1,a.length);=0A= _uns=3D(_uns*1)+1;=0A= a=3Da.substring(0,i);=0A= if ((i=3Da.lastIndexOf(".")) > 7) {=0A= lt=3Da.substring(i+1,a.length);=0A= a=3Da.substring(0,i);=0A= }=0A= if ((i=3Da.lastIndexOf(".")) > 5) {=0A= a=3Da.substring(0,i);=0A= }=0A= a+=3D"."+lt+"."+t+"."+_uns;=0A= }=0A= return a;=0A= }=0A= function _uTrim(s) {=0A= if (!s || s=3D=3D"") return "";=0A= while ((s.charAt(0)=3D=3D' ') || (s.charAt(0)=3D=3D'\n') || = (s.charAt(0,1)=3D=3D'\r')) s=3Ds.substring(1,s.length);=0A= while ((s.charAt(s.length-1)=3D=3D' ') || = (s.charAt(s.length-1)=3D=3D'\n') || (s.charAt(s.length-1)=3D=3D'\r')) = s=3Ds.substring(0,s.length-1);=0A= return s;=0A= }=0A= function _uEC(s) {=0A= var n=3D"";=0A= if (!s || s=3D=3D"") return "";=0A= for (var i=3D0;i0) r=3Da.substring(i+1,i2); else return = ""; =0A= if ((i=3Da.indexOf(".",i2+1))>0) t=3Da.substring(i2+1,i); else return = ""; =0A= if (f) {=0A= return r;=0A= } else {=0A= var c=3Dnew = Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T'= ,'U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9');=0A= return = c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r= &7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5= &m]+c[t&m];=0A= }=0A= }=0A= function _uIN(n) {=0A= if (!n) return false;=0A= for (var i=3D0;i"9") && (c!=3D".")) return false;=0A= }=0A= return true;=0A= }=0A= function _uES(s,u) {=0A= if (typeof(encodeURIComponent) =3D=3D 'function') {=0A= if (u) return encodeURI(s);=0A= else return encodeURIComponent(s);=0A= } else {=0A= return escape(s);=0A= }=0A= }=0A= function _uUES(s) {=0A= if (typeof(decodeURIComponent) =3D=3D 'function') {=0A= return decodeURIComponent(s);=0A= } else {=0A= return unescape(s);=0A= }=0A= }=0A= function _uVG() {=0A= if((_udn.indexOf("www.google.") =3D=3D 0 || _udn.indexOf(".google.") = =3D=3D 0 || _udn.indexOf("google.") =3D=3D 0) && _utcp=3D=3D'/' && = _udn.indexOf("google.org")=3D=3D-1) {=0A= return false;=0A= }=0A= return true;=0A= }=0A= function _uSP() {=0A= var s=3D100;=0A= if (_usample) s=3D_usample;=0A= if(s>=3D100 || s<=3D0) return true;=0A= return ((__utmVisitorCode(1)%10000)<(s*100));=0A= }=0A= function urchinPathCopy(p){=0A= var d=3Ddocument,nx,tx,sx,i,c,cs,t,h,o;=0A= cs=3Dnew Array("a","b","c","v","x","z");=0A= h=3D_uDomain(); if (_udn && _udn!=3D"") o=3D" domain=3D"+_udn+";";=0A= nx=3D_uNx()+";";=0A= tx=3Dnew Date(); tx.setTime(tx.getTime()+(_utimeout*1000));=0A= tx=3Dtx.toGMTString()+";";=0A= sx=3Dnew Date(); sx.setTime(sx.getTime()+(_ucto*1000));=0A= sx=3Dsx.toGMTString()+";";=0A= for (i=3D0;i<6;i++){=0A= t=3D" expires=3D";=0A= if (i=3D=3D1) t+=3Dtx; else if (i=3D=3D2) t=3D""; else if (i=3D=3D5) = t+=3Dsx; else t+=3Dnx;=0A= c=3D_uGC(d.cookie,"__utm"+cs[i]+"=3D"+h,";");=0A= if (c!=3D"-") d.cookie=3D"__utm"+cs[i]+"=3D"+c+"; path=3D"+p+";"+t+o;=0A= }=0A= }=0A= function _uCO() {=0A= if (!_utk || _utk=3D=3D"" || _utk.length<10) return;=0A= var d=3D'www.google.com';=0A= if (_utk.charAt(0)=3D=3D'!') d=3D'analytics.corp.google.com';=0A= _ubd.cookie=3D"GASO=3D"+_utk+"; path=3D"+_utcp+";"+_udo;=0A= var sc=3Ddocument.createElement('script');=0A= sc.type=3D'text/javascript';=0A= sc.id=3D"_gasojs";=0A= = sc.src=3D'https://'+d+'/analytics/reporting/overlay_js?gaso=3D'+_utk+'&'+= Math.random();=0A= document.getElementsByTagName('head')[0].appendChild(sc); =0A= }=0A= function _uGT() {=0A= var h=3Dlocation.hash, a;=0A= if (h && h!=3D"" && h.indexOf("#gaso=3D")=3D=3D0) {=0A= a=3D_uGC(h,"gaso=3D","&");=0A= } else {=0A= a=3D_uGC(_ubd.cookie,"GASO=3D",";");=0A= }=0A= return a;=0A= }=0A= var _utk=3D_uGT();=0A= if (_utk && _utk!=3D"" && _utk.length>10 && _utk.indexOf("=3D")=3D=3D-1) = {=0A= if (window.addEventListener) {=0A= window.addEventListener('load', _uCO, false); =0A= } else if (window.attachEvent) { =0A= window.attachEvent('onload', _uCO);=0A= }=0A= }=0A= =0A= function _uNx() {=0A= return (new Date((new Date()).getTime()+63072000000)).toGMTString();=0A= }=0A= ------=_NextPart_000_0074_01C8CFA4.84EE8730 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0097_01C8CFA4.84F82420" ------=_NextPart_001_0097_01C8CFA4.84F82420 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://economiavanzada.blogspot.com/2008/06/bscp-y-el-grupo-mbito-firman-un-acuerdo.html =EF=BB=BF ECONOM=C3=8DA AVANZAD@: BSCP y el grupo = =C3=81mbito firman un acuerdo para dise=C3=B1ar viviendas sociales en = Marruecos

Editor y Director: FRANCISCO POVEDA/ = Versi=C3=B3n en Blog=20 /Publicaci=C3=B3n Trasatl=C3=A1ntica continua en espa=C3=B1ol para el = Progreso de la Sociedad=20 Civil y del Conocimiento/ Edici=C3=B3n semanal mediterr=C3=A1nea para = Almer=C3=ADa, Baleares,=20 Barcelona, Campo de Gibraltar, Ceuta, Comunidad Valenciana, M=C3=A1laga, = Melilla,=20 Regi=C3=B3n de Murcia y Tarragona + Algarve, Andorra, Argel, Gibraltar, = Or=C3=A1n y=20 T=C3=A1nger. economiavanzada@gmail.com/ P. O. Box 3.144 en = E-03080-ESPA=C3=91A / Telf.=20 34-649 13 47 18

=20
3D""=20 =

VENDO PISO EN ZONA RESIDENCIAL DE MURCIA

Zona Universidad-Centrofama, 125 m2 = =C3=BAtiles, todo=20 exterior, sal=C3=B3n-comedor, cuatro dormitorios, dos cuartos de = ba=C3=B1o, cocina,=20 terraza, lavadero amplio, calefacci=C3=B3n central y plaza de garaje. = Directamente=20 del propietario. 480.000 = =E2=82=AC

Tel=C3=A9fono 649 13 47 18

MANSIONES EN EL CABO = DE LA=20 NAO

Buscamos a su = medida=20 residencia de asueto en el =C3=BAltimo rinc=C3=B3n, virgen y exclusivo, = del Mediterr=C3=A1neo=20 peninsular: entorno del Cabo de la Nao, parque natural del Montg=C3=B3 y = puerto de=20 Moraira, en el norte de la provincia de Alicante, a s=C3=B3lo 450 = kil=C3=B3metros de=20 Madrid por autov=C3=ADa y autopista. A partir de 600.000 =E2=82=AC

Tel=C3=A9fono 649 13 = 47=20 18


FINANCIACI=C3=93N URGENTE PARA=20 EMPRESAS

Si su = empresa=20 necesita financiaci=C3=B3n urgente, se la=20 podemos procurar en funci=C3=B3n de informes de riesgo, viabilidad del = negocio y=20 garant=C3=ADas ejecutables. Absoluta discreci=C3=B3n y = profesionalidad.

Tel=C3=A9fono 649 13 47 = 18


EJECUTIVO SENIOR=20 PARA ALICANTE-ELCHE

Ejecutivo senior en el =C3=A1rea de Marketing = y Comercio=20 Exterior busca colaboraci=C3=B3n externa en empresas de sectores = emergentes de la=20 zona=20 Alicante-Elche.

economiavanzada@
gmail.com
3D""=20 =

Archivo del blog

3D""=20 =

mi=C3=A9rcoles 11 de junio de 2008

BSCP=20 y el grupo =C3=81mbito firman un acuerdo para dise=C3=B1ar viviendas = sociales en=20 Marruecos

T=C3=81NGER.- La = empresa espa=C3=B1ola de=20 ingenier=C3=ADa BSCP ha alcanzado un acuerdo con el grupo =C3=81mbito, = dedicado a la=20 gesti=C3=B3n integral de proyectos, para el dise=C3=B1o de bloques de = viviendas sociales=20 de 50 metros cuadrados en Marruecos, inform=C3=B3 hoy la = compa=C3=B1=C3=ADa.

La=20 compa=C3=B1=C3=ADa explic=C3=B3 que el proyecto contempla edificar 2.000 = viviendas en la=20 primera fase, cantidad que podr=C3=ADa multiplicarse "muy = significativamente" en los=20 pr=C3=B3ximos a=C3=B1os. Asimismo, indic=C3=B3 que se trata de viviendas = sociales de 50 metros=20 cuadrados destinadas a habitantes de la zona o a inversi=C3=B3n de = emigrantes=20 residentes en Europa.

BSCP ofrece un servicio basado en un = sistema=20 patentado para la construcci=C3=B3n industrializada de cualquier tipo de = edificaciones. Seg=C3=BAn explic=C3=B3 la compa=C3=B1=C3=ADa, este = sistema permite simplificar las=20 partidas de obra necesarias para la construcci=C3=B3n, reducir los = costes, tanto de=20 construcci=C3=B3n como de mantenimiento, y el tiempo de = construcci=C3=B3n, y ahorrar=20 energ=C3=ADa.

Adem=C3=A1s, asegur=C3=B3 que cuenta con una alta = cualificaci=C3=B3n t=C3=A9cnica,=20 avalado por el documento de idoneidad t=C3=A9cnica otorgado por el = Instituto Eduardo=20 Torroja. N=C2=BA 398 R y cumple el nuevo C=C3=B3digo T=C3=A9cnico de la = Edificaci=C3=B3n=20 (CTE).

0 comentarios:

Entrada=20 m=C3=A1s reciente Entradas=20 antiguas P=C3=A1gina principal =

Noticias de Baleares, Valencia, Murcia, Almer=C3=ADa, = M=C3=A1laga,=20 Algeciras, Ceuta, Melilla y Gibraltar

Loading... =
3D""=20 =
------=_NextPart_001_0097_01C8CFA4.84F82420 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/navbar.g?targetBlogID=7788600774439025780&blogName=ECONOM%C3%8DA+AVANZAD%40&publishMode=PUBLISH_MODE_BLOGSPOT&navbarType=BLUE&layoutType=LAYOUTS&homepageUrl=http%3A%2F%2Feconomiavanzada.blogspot.com%2F&searchRoot=http%3A%2F%2Feconomiavanzada.blogspot.com%2Fsearch =EF=BB=BF
Notificar a Blogger la presencia de contenido de dudosa reputaci=C3=B3n en esta = p=C3=A1gina.
Has marcado este blog, indicando que contiene contenido de dudosa reputaci=C3=B3n.
------=_NextPart_001_0097_01C8CFA4.84F82420-- ------=_NextPart_000_0074_01C8CFA4.84EE8730 Content-Type: application/x-js Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/widgets/3444992414-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,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();w_h=3D=0A= false;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_ha(a,b){a.style.display=3Db?"":"none"}function = w_ia(a,b){a.style.display=3Db?"block":=0A= "none"}function w_n(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_ka,"&").replace(w_la,"<").replace(w_ma,">").replace= (w_na,""")}var w_na=3D/\"/g;function w_oa(a){return = document.getElementById(a)}function w_pa(a){return document.all[a]}var = w_qa=3Ddocument.getElementById?w_oa:=0A= w_pa;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_qa("log");if(c){var = d=3D"

"+new Date+""+a+"

";c.innerHTML=3Dd+c.innerHTML}else = window.status=3Da};function w_s(){}w_s.raise=3Dfunction(a){if(typeof = Error!=3D"undefined")throw new Error(a||"Assertion Failed");else throw = a;};w_s.fail=3Dfunction(a){a=3Da||"Assertion failed";if(!(typeof = w_b=3D=3D"undefined"))w_b(a+"\n");w_s.raise(a)};w_s.isTrue=3Dfunction(a,b= ){if(!a){if(b=3D=3D=3Dundefined)b=3D"Assertion = failed";w_s.fail(b)}};w_s.equals=3Dfunction(a,b,c){if(a!=3Db){if(c=3D=3D=3D= undefined)c=3D"AS_Assert.equals failed: <"+a+"> !=3D = <"+b+">";w_s.fail(c)}};w_s.typeOf=3Dfunction(a,b,c){if(typeof = a=3D=3Db)return;if(a||a=3D=3D"")try{if(b=3D=3Dw_s.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_s.fail(c)};w_s.TYPE_MAP=3D{string:String,number:Number,"boolean":Bo= olean};w_s.numArgs=3Dfunction(a,b){var = c=3Dw_s.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_s.fail(b)}};var w_t;function w_ra(){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_u=3D0;if("undefined"=3D=3Dtypeof = w_j)w_j=3Dfunction(){};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_u}}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_u;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;b--)this[b+a]=3Dthis[b];for(var = c=3D0;c"+a.template+"\n",c=3D= this.Cb(b);a.parsedTemplate=3Dthis.O(c);return = a};w_x.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_A.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_.$b=3Da;w_.Ia=3Db;w_.Sc=3Dc;w= _.fc=3Dnull;if(!w_.ab)w_.ab=3D{}};w_.TrapClicks=3Dfunction(a){var = b=3Dw_.CreateTransparentClickTrappingDiv(a.document);document.body.append= Child(b)};w_._SetupPreview=3Dfunction(){w_.TrapClicks(window)};w_.NEW_WID= GET_WINDOW_NAME=3D"chooseWidget";w_.CHOOSE_WIDGET_ACTION=3D"chooseWidget"= ;w_.EDIT_WIDGET_ACTION=3D"editWidget";w_.GetCallbackUrl=3Dfunction(){retu= rn = w_.Ia};w_.SetPageActionUrl=3Dfunction(a,b){w_.Ua=3Da;w_.Kc=3Db};w_.GetPag= eActionUrl=3Dfunction(){return w_.Ua};=0A= w_.SetWidgetRefreshUrl=3Dfunction(a){w_.Pc=3Da};w_.GetWidgetRefreshUrl=3D= function(){return = w_.Pc};w_._SetDataContext=3Dfunction(a){w_.fc=3Da};w_._SetSystemMarkup=3D= function(a){w_.ab=3Da};w_._RegisterWidget=3Dfunction(a,b,c){var d=3Dnew = w_x(b);if(!c)c=3Dwindow[a];var e=3Dnew = c(d);d.Nb(e);w_.L[b.instanceId]=3De;w_.DisplayWidget(e);return = e};w_._RegisterNewWidget=3Dfunction(a,b,c){var = d=3Dw_._RegisterWidget(a,b,c),e=3Dd.b();e.Mb(true);return = d};w_.DisplayWidget=3Dfunction(a,b){var = c=3Da.b();if(c.N()=3D=3Dw_w.DISPLAY_MODE_NONE)return;if(b||=0A= a.f&&a.f())c.hb();if(c.N()=3D=3Dw_w.DISPLAY_MODE_FULL)if(a.g)a.g();a.b().= Fc=3Dfalse};w_.GetWidget=3Dfunction(a){if(w_.L)return w_.L[a];return = null};w_._PopupPaneFromParams=3Dfunction(a,b,c,d,e){var = f=3D"";if(d)f=3D"&widgetId=3D"+d;var = g=3Dw_.$b+"&action=3D"+a+"§ionId=3D"+b+"&widgetType=3D"+c+f;if(window= .name=3D=3De){window.location.replace(g);window.focus();return = window}var = h=3Dwindow.open(g,e,"width=3D570,height=3D600,left=3D75,top=3D20,resizabl= e=3Dyes,scrollbars=3Dyes");h.focus();return = h};w_._PopupConfig=3Dfunction(a){var b=3Da.getAttribute("id"),=0A= c=3Dw_.GetWidget(b);if(c){var = d=3Dc.b().configWin;if(d!=3Dnull&&!d.closed){d.focus();return false}}var = e=3D"config"+b,f=3Dw_._PopupPaneFromParams(w_.EDIT_WIDGET_ACTION,a.parent= Node.getAttribute("id"),a.getAttribute("widgetType"),b,e);if(c)c.b().conf= igWin=3Df;return = false};w_._PopupToolbox=3Dfunction(a){w_._PopupPaneFromParams(w_.CHOOSE_W= IDGET_ACTION,a.parentNode.getAttribute("id"),a.getAttribute("widgetType")= ,a.getAttribute("id"),w_.NEW_WIDGET_WINDOW_NAME);return = false};w_.DeleteWidgetFromPage=3Dfunction(a,b){w_.p(b,=0A= b.LayoutsMessages.DELETING,w_.STATUS_MESSAGE_PENDING_CLASS);w_.RunPageAct= ion("delete",{},a,b)};w_x.prototype.Lb=3Dfunction(a,b){w_.p(b,b.LayoutsMe= ssages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);this.w("configure",a)};w_.= SaveNewWidget=3Dfunction(a,b,c){var = d=3Ddocument.getElementById("sectionId").value;a.sectionid=3Dd;w_.p(c,c.L= ayoutsMessages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);w_.RunPageAction("= addnew",a,"",b)};w_.SaveWidget=3Dfunction(a,b,c){w_m(c!=3Dnull,"no = type");var d=3D_WidgetManager._GetWidget(b);w_m(d!=3D=0A= null,"no widget for "+b);if(d.b().zb())w_.SaveNewWidget(a,c,window);else = d.a.Lb(a,window)};w_._RunInitialAction=3Dfunction(a){var = b=3Dw_._GetWidget(a);if(b)b.b().w("initial")};w_.w=3Dfunction(a,b,c,d,e){= w_.RunAction(w_.Ia,a,b,c,d,e)};w_.RunPageAction=3Dfunction(a,b,c,d,e){if(= !w_.Ua){w_j("RunPageAction error: pageActionUrl_ is undefined. = widgetid: "+c+" action: = "+a);return}b.pageToken=3Dw_.Kc;w_.RunAction(w_.Ua,a,b,c,d,e)};w_.RunActi= on=3Dfunction(a,b,c,d,e,f){var = g=3D["action",b,"widgetId",d,"widgetType",e,"responseType",=0A= "js"];for(var h in c)if(typeof c[h]=3D=3D"object")for(var = i=3D0;i0&&a.substring(0,4)!=3D"htt= p")a=3D"http://"+a;return = a};w_.GetFirstElementInElementWithClass=3Dfunction(a,b){if(w_o(a,b))retur= n a;=0A= if(a){var c=3Da.childNodes.length;for(var d=3D0;db)return = LayoutsMessages.NUMBER_TOO_LARGE+" "+b;return undefined}};function = w_z(){this.q=3D[];for(var a in = w_.fc)this.q[this.q.length]=3Da}w_z.DEFAULT_DICTIONARY_KEY=3D=0A= "";w_z.MAX_DICTIONARY_DEPTH=3D50;w_z.SEPARATOR_CHAR=3D".";w_z.prototype.M= =3Dfunction(a,b){if(this.q.length>=3Dw_z.MAX_DICTIONARY_DEPTH)w_s.raise("= Cannot add another dictionary: = "+a);if(a.indexOf(w_z.SEPARATOR_CHAR)>-1)w_s.raise("Cannot add = dictionary name containing '.': "+a);var = c=3D{};c.name=3Da;c.data=3Db;this.q[this.q.length]=3Dc};w_z.prototype.xa=3D= function(a){var = b=3Dthis.q[this.q.length-1];if(b.name!=3Da)w_s.raise("Dictionary "+a+" = is not the last one, and can't be deleted: = "+b.name);this.q.splice(this.q.length-=0A= 1,1)};w_z.prototype.W=3Dfunction(a){if(a=3D=3Dnull)a=3Dw_z.DEFAULT_DICTIO= NARY_KEY;for(var = b=3Dthis.q.length-1;b>=3D0;--b)if(this.q[b].name=3D=3Da)return = this.q[b].data;return null};w_z.prototype.ma=3Dfunction(){return = this.W(w_z.DEFAULT_DICTIONARY_KEY)};w_z.prototype.db=3Dfunction(a){this.M= (w_z.DEFAULT_DICTIONARY_KEY,a)};w_z.prototype.j=3Dfunction(a){var = b=3Dthis.W(a);if(b)return b;var = c=3Da.split(w_z.SEPARATOR_CHAR);if(c.length=3D=3D1){b=3Dthis.ma();return = b[a]}b=3Dthis.W(c[0]);var d=3D0;if(b)d=3D1;else b=3Dthis.ma();for(var = e=3Dd;e=3D500){if(b.responseText.length)document.body.innerHTML= =3Db.responseText;else alert(LayoutsMessages.SERVER_ERROR);return = false}return a?a(b):true}};function = w_C(a){this.a=3Da}w_C.WIDGET_TYPE_NAME=3D"AdSense";w_C.prototype.d=3Dfunc= tion(){return w_C.WIDGET_TYPE_NAME};w_C.prototype.b=3Dfunction(){return = this.a};w_C.prototype.c=3Dfunction(a,b){this.a.h(b)};var = _AdSenseView=3Dw_C;function = w_D(a){this.a=3Da;this.e=3Da.k()}w_D.WIDGET_TYPE_NAME=3D"BlogArchive";w_D= .POST_LIST_CLASS=3D"posts";w_D.INTERVAL_EXPANDED_VALUE=3D"expanded";w_D.I= NTERVAL_COLLAPSED_VALUE=3D"collapsed";w_D.LOADING_MSG=3D"loading...";w_D.= POST_COUNT_CLASS=3D"post-count";w_D.POST_COUNT_LINK_CLASS=3D"post-count-l= ink";w_D.MENU_ROOT_ID=3D"ArchiveMenu";w_D.TOGGLE_OPEN_CLASS=3D"toggle-ope= n";w_D.Ec=3D"▼ ";w_D.ac=3D"► ";w_D.prototype.d=3Dfu= nction(){return = w_D.WIDGET_TYPE_NAME};w_D.prototype.b=3Dfunction(){return = this.a};w_D.prototype.f=3D=0A= function(){return = false};w_D.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b);= else = if(a=3D=3D"getTitles")this.Sb(b);else{this.widgetInfo.data=3Db;w_.Display= Widget(this)}};w_D.prototype.g=3Dfunction(){var = a=3D{};a.select=3Dfunction(i){return i&&w_o(i,"toggle")};var = b=3Dthis.a.s("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_D.prototype.pb=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_D.prototype.Ab=3Dfunction(a){var = b=3Da.getElementsByTagName("UL");if(b.length>0&&!w_o(b[0],"posts"))return= ;var c=3Dthis.rb(a),d=3Da.getElementsByTagName("LI"),e=3Dd.length;return = e-1};w_E.prototype.sa=3Dfunction(a){a=3Da||window.ev= ent;var b=3Da.target||a.srcElement;this.a.w("nextposts",{path:b.href});=0A= return false};w_E.prototype.fb=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_E;w_F.Id=3D{BLOGS:"blogs",CONTAINER:"container",SHOW_ALL:"s= how-all",SHOW_N:"show-n"};function = w_F(a){this.a=3Da;this.e=3Da.k()}w_F.WIDGET_TYPE_NAME=3D"BlogList";w_F.pr= ototype.ha=3Dnull;w_F.prototype.S=3Dnull;w_F.prototype.d=3Dfunction(){ret= urn w_F.WIDGET_TYPE_NAME};w_F.prototype.b=3Dfunction(){return = this.a};w_F.prototype.f=3Dfunction(){return = false};w_F.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)}= ;w_F.prototype.g=3Dfunction(){var = a=3Dthis.a.j();this.ha=3Da.totalItems;this.S=3Da.numItemsToShow;if(this.S= !=3D0&&this.ha>=0A= this.S){var = b=3Dthis.a.n(w_F.Id.SHOW_ALL);b.onclick=3Dthis.bb.bind(this);var = c=3Dthis.a.n(w_F.Id.SHOW_N);c.onclick=3Dthis.bb.bind(this)}var = d=3Dthis.bc.bind(this),e=3Dwindow;if(e.addEventListener)e.addEventListene= r("load",d,false);else if(e.attachEvent)e.attachEvent("onload",d);else = e.onload=3Dd};w_F.prototype.bb=3Dfunction(){var = a=3Dthis.a.n(w_F.Id.BLOGS),b=3Da.getElementsByTagName("li");for(var = c=3Dthis.S;cc){a.height=3DMath.round(c/a.width*a.height);a.width=3D= c}a.style.visibility=3D"visible"};w_L.prototype.c=3Dfunction(a,b){if(a=3D= =3D"configure")this.a.h(b)};var _ImageView=3Dw_L;function = w_M(a,b,c,d,e,f,g,h){this.o=3Da;this.Xb=3Db!=3D"null"?b:null;this.kc=3Dc;= this.ic=3Dd;this.jc=3De;this.vc=3Df;this.lc=3Dg;this.Lc=3Dh;this.v=3D-1;t= his.B=3D-1;this.C=3Dnull;this.r=3Ddocument.getElementById(this.o+"_picImg= ");this.aa=3Ddocument.getElementById(this.o+"_changeImageLink");this.ea=3D= document.getElementById(this.o+"_imageChoiceTable");this.gc=3Ddocument.ge= tElementById(this.o+"_imgSrcFromPCRadio");this.hc=3Ddocument.getElementBy= Id(this.o+"_imgSrcFromWebRadio");this.i=3Ddocument.getElementById(this.o+= "_imgFileNameInput");=0A= this.R=3Ddocument.getElementById(this.o+"_imgUrlTextInput");this.Vb=3Dwin= dow.frames[this.o+"_asynchronousFileUploadIframe"];this.Na=3D0;this.l=3Dn= ew = Image;this.l.onload=3Dthis.hitch(this,this.sc);this.l.onerror=3Dthis.hitc= h(this,this.rc);this.cc=3Dfalse;this.Ra=3Dnull;this.m=3Dnull;this.H=3Dnul= l;this.Va=3Dfalse}w_M.prototype.Qa=3Dfunction(){return = this.gc.checked};w_M.prototype.sc=3Dfunction(){this.Na=3D0;w_A.ClearError= (this.o+"_imgUrlTextError");w_A.ClearError(this.o+"_imgFileNameError");if= (!this.Qa()||this.v=3D=3D0){this.v=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.r.style.width=3DMath.round(this.l.width*c)+"px";th= is.r.style.height=3DMath.round(this.l.height*c)+"px";this.r.src=3Dthis.l.= src;this.r.style.display=3D"";this.ea.style.display=3D"none";this.aa.styl= e.display=3D"";this.i.disabled=3Dtrue;if(this.kc)this.kc.call({},this.r.s= rc,this.C,this.v,this.B)};w_M.prototype.J=3Dfunction(a,b,c,d){if(a){w_A.S= etError(this.o+"_imgFileNameError",=0A= b);w_A.ClearError(this.o+"_imgUrlTextError")}else{w_A.SetError(this.o+"_i= mgUrlTextError",b);w_A.ClearError(this.o+"_imgFileNameError")}this.r.styl= e.display=3D"none";this.ea.style.display=3D"";this.aa.style.display=3D"no= ne";this.i.disabled=3Dfalse;if(this.ic)this.ic.call({},c,d)};w_M.prototyp= e.rc=3Dfunction(){if(this.Na<2){this.Na++;var = a=3Dthis.l.src;this.l.src=3D"";this.D(a)}else = this.J(this.Qa(),WidgetMessages.SIV_INVALID_URL,this.r.src)};w_M.prototyp= e.hitch=3Dfunction(a,b){return function(){b.apply(a,arguments)}};=0A= w_M.prototype.D=3Dfunction(a){this.Za();this.l.src=3Da};w_M.prototype.Ja=3D= function(a){var = b=3Da||window.event;if(window.event){b.returnValue=3Dfalse;b.cancelBubble= =3Dtrue}else{b.preventDefault();b.stopPropagation()}this.r.style.display=3D= "none";this.aa.style.display=3D"none";this.ea.style.display=3D"";this.i.d= isabled=3Dfalse;this.R.value=3D"";this.Wa();this.Va=3Dtrue;if(this.jc)thi= s.jc.call({})};w_M.prototype.Oa=3Dfunction(){this.gc.checked=3D"true";thi= s.R.value=3D"";this.Za();this.nc();this.cc=3Dtrue;try{this.m.submit()}cat= ch(a){this.J(true,=0A= WidgetMessages.SIV_INVALID_URL,this.m.value)}this.mc()};w_M.prototype.G=3D= function(){var = a=3Dthis.Vb.document.result;if(!a)this.J(true,WidgetMessages.SIV_INVALID_= URL,this.i.value);if(a.hasErrors)if(a.errors.length>0)this.J(true,a.error= s[0].message,this.i.value,a.Gc);else = this.J(true,WidgetMessages.SIV_INVALID_URL,this.i.value,a.Gc);else{var = b=3DMath.max(a.origWidth,a.origHeight),c=3Dthis.Ma();if(this.v!=3D0&&c!=3D= -1&&b>c){var = d=3Dc/b;this.v=3DMath.round(a.origWidth*d);this.B=3DMath.round(a.origHeig= ht*d)}else{this.v=3D=0A= a.origWidth;this.B=3Da.origHeight}this.C=3Da.mainSrc;this.D(a.thumbSrc)}}= ;w_M.prototype.Pa=3Dfunction(a){var = b=3Da||window.event;if(b.keyCode=3D=3D9)return;this.hc.checked=3D"true";i= f(this.Ra!=3Dnull)window.clearTimeout(this.Ra);var = c=3Dthis.hitch(this,function(){if(this.Va||this.l.src!=3Dthis.R.value.toL= owerCase()){this.Wa();this.D(this.R.value.toLowerCase())}this.Va=3Dfalse}= );this.Ra=3Dwindow.setTimeout(c,1000)};w_M.prototype.Sa=3Dfunction(a){thi= s.hc.checked=3Dtrue;this.R.value=3Da;this.D(a)};w_M.prototype.Za=3Dfuncti= on(){this.r.src=3D=0A= "img/icon_inprogress.gif";this.r.style.width=3D"200px";this.r.style.heigh= t=3D"200px";this.r.style.display=3D"";this.ea.style.display=3D"none";this= .aa.style.display=3D"none"};w_M.prototype.nc=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.Vb.name;this.m.encoding=3D"multi= part/form-data";this.m.style.display=3D"none";if(this.Xb){var = a=3Ddocument.createElement("input");a.type=3D"hidden";a.name=3D"blogID";a= .value=3Dthis.Xb;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.Lc;this.m.appendChild(c);document.body.ap= pendChild(this.m)}var = d=3Dthis.Ma();if(d=3D=3D-1)d=3D1600;document.getElementById("sectionWidth= ").value=3Dd;this.H=3D{parent:this.i.parentNode,nextSibling:this.i.nextSi= bling};this.i.parentNode.removeChild(this.i);this.m.appendChild(this.i)};= w_M.prototype.mc=3Dfunction(){this.m.removeChild(this.i);=0A= if(this.H&&this.H.nextSibling)this.H.parent.insertBefore(this.i,this.H.ne= xtSibling);else = this.H.parent.appendChild(this.i)};w_M.prototype.Wa=3Dfunction(){var = a=3Ddocument.createElement("input");a.type=3D"file";a.name=3Dthis.i.name;= a.id=3Dthis.i.id;a.onchange=3Dthis.i.onchange;var = b=3Dthis.i.nextSibling;if(b=3D=3Dnull)this.i.parentNode.appendChild(a);el= se = this.i.parentNode.insertBefore(a,b);this.i.parentNode.removeChild(this.i)= ;this.i=3Da};w_M.prototype.Ma=3Dfunction(){return = this.vc=3D=3D-1&&this.lc?this.lc():this.vc};function = w_N(){this.usiContainers=3D=0A= []}var w_Ga=3Dnew = w_N;w_N.prototype.Ka=3Dfunction(a,b,c,d,e,f,g,h){this.usiContainers[a]=3D= new w_M(a,b,eval(c),eval(d),eval(e),f,eval(g),h);return = this.usiContainers[a]};w_N.prototype.da=3Dfunction(a){return = this.usiContainers[a]};w_N.prototype.G=3Dfunction(a){var = b=3Dthis.da(a);if(b&&b.cc)b.G()};var = _UploadSimpleImage=3Dw_Ga;w_N.prototype._createUsiContainer=3Dw_N.prototy= pe.Ka;w_N.prototype._getUsiContainer=3Dw_N.prototype.da;w_N.prototype._ch= annelResultArrived=3Dw_N.prototype.G;w_M.prototype._changeImage=3Dw_M.pro= totype.Ja;=0A= w_M.prototype._imgUrlFileOnChange=3Dw_M.prototype.Oa;w_M.prototype._imgUr= lTextOnKeyUp=3Dw_M.prototype.Pa;w_M.prototype._loadInitialUrl=3Dw_M.proto= type.Sa;w_M.prototype._loadImageFromUrl=3Dw_M.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(){return = document.getElementById("checkShrink").checked?=0A= _SIV_getContainerWidth():-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_.p(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,lin= k:document.getElementById("link").value,=0A= securityToken:document.forms.config.securityToken.value};w_.SaveWidget(g,= a,w_L.WIDGET_TYPE_NAME)};function = w_O(a){this.a=3Da;this.e=3Da.k()}w_O.successfulUploadCallback=3Dfunction(= a,b,c,d){w_O.Mc=3Da;w_O.C=3Db;w_O.v=3Dc;w_O.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_O.resetCallback=3Dfunction(){w_O.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_O.getScaledContainerWidth=3D=0A= function(){return = document.getElementById("checkShrink").checked?w_O.getContainerWidth():-1= };w_O.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_O.WIDGET_TYPE_NAME=3D"Header";w_O.prototype.d=3Dfunction(){return = w_O.WIDGET_TYPE_NAME};w_O.prototype.f=3Dfunction(){return = false};w_O.prototype.b=3Dfunction(){return this.a};w_O.prototype.c=3D=0A= function(a,b){this.a.h(b)};w_O.FilterMap=3D{title:w_A.GetRequiredStringFi= lter(),description:null,imagePlacement:null,useImage:null,securityToken:n= ull};w_O.ConfigureWidget=3Dfunction(){var = a=3Ddocument.forms.config.widgetId.value,b=3Ddocument.forms.config.widget= Type.value,c=3Dw_A.ProcessForm(document.forms.config,w_O.FilterMap),d=3Dw= _O.getContainerWidth();if(c.success){if(w_O.C){var = e=3Dw_O.v,f=3Dw_O.B,g=3Ddocument.getElementById("checkShrink").checked;if= (g){var = h=3D1;if(e>d){h=3Dd/e;e=3Dd;f=3DMath.round(f*h)}}c.values.originalUrl=3D=0A= w_O.C;c.values.originalWidth=3Dw_O.v;c.values.originalHeight=3Dw_O.B;c.va= lues.displayUrl=3Dw_O.Mc;c.values.displayWidth=3De;c.values.displayHeight= =3Df;c.values.sectionWidth=3Dd;c.values.shrinkToFit=3Dg}c.values.security= Token=3Ddocument.forms.config.securityToken.value;w_.SaveWidget(c.values,= a,b);return true}else return = false};w_O.hideImageOptions=3Dfunction(){document.getElementById("imageOp= tions").style.display=3D"none";return = false};w_O.showImageOptions=3Dfunction(){document.getElementById("imageOp= tions").style.display=3D=0A= "";return false};var = _HeaderView=3Dw_O;_HeaderView.prototype=3Dw_O.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_P(a,b){this.a=3Da;this.e=3Da.k();this.Oc=3Db}w_P.prototype.b=3Dfunction= (){return this.a};w_P.prototype.d=3Dfunction(){return = this.Oc};w_P.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b= )};w_P.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_Q(a){w_P.call(this,a,"Text")}w_Q.inherits(w_P);w_Q.ConfigureWidget=3Dfu= nction(){w_P.ConfigureWidget("Text")};function = w_R(a){w_P.call(this,a,"HTML")}w_R.inherits(w_P);w_R.ConfigureWidget=3Dfu= nction(){w_P.ConfigureWidget("HTML")};var = _TextView=3Dw_Q;_TextView.prototype=3Dw_Q.prototype;_TextView._ConfigureW= idget=3D_TextView.ConfigureWidget;var = _HTMLView=3Dw_R;_HTMLView.prototype=3Dw_R.prototype;_HTMLView._ConfigureW= idget=3D_HTMLView.ConfigureWidget;function = w_H(a){document.write('