From: Subject: Google Image Result for http://blog.reidreport.com/uploaded_images/mccain_bush-hug-713122.jpg Date: Tue, 29 Apr 2008 21:56:59 -0400 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_00C7_01C8AA43.F31E2930" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 This is a multi-part message in MIME format. ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://tbn0.google.com/images?q=tbn:y_jO_OFtEYj04M:http://blog.reidreport.com/uploaded_images/mccain_bush-hug-713122.jpg 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 ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://images.google.com/images/frame_remove.gif R0lGODlhDQAMAPcAAP///wAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAANAAwA AAgxAAEIHEiwoMGDCA0GWMiw4cAACCEKhLhwIsWHFisCkLjxIcePGSWC1FgR5MGPDVMGBAA7 ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: multipart/alternative; boundary="----=_NextPart_001_00CC_01C8AA43.F31E2930" ------=_NextPart_001_00CC_01C8AA43.F31E2930 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://images.google.com/imgres?imgurl=http://blog.reidreport.com/uploaded_images/mccain_bush-hug-713122.jpg&imgrefurl=http://ampal.blogspot.com/2007/01/giuliani-mccain-gop-and-jewish-money.html&h=359&w=300&sz=26&hl=en&start=23&tbnid=y_jO_OFtEYj04M:&tbnh=121&tbnw=101&prev=/images%3Fq%3Dgeorge%2Bbush,%2Baipac%26start%3D20%26gbv%3D2%26ndsp%3D20%26hl%3Den%26sa%3DN =EF=BB=BF Google Image Result for = http://blog.reidreport.com/uploaded_images/mccain_bush-hug-713122.jpg</TI= TLE> <META http-equiv=3Dcontent-type content=3D"text/html; charset=3DUTF-8"> <SCRIPT>function checkTopFrame() {if (frames && frames[0] && = frames[0].document) {try {frames[0].document.domain;} catch(e) {location = =3D "/error";}self.setTimeout('checkTopFrame()', = 3000);}}self.setTimeout('checkTopFrame()', 3000);</SCRIPT> <META content=3D"MSHTML 6.00.6000.16640" = name=3DGENERATOR></HEAD><FRAMESET=20 rows=3D137,*><FRAME marginWidth=3D0 marginHeight=3D0=20 src=3D"http://images.google.com/imgres?imgurl=3Dhttp://blog.reidreport.co= m/uploaded_images/mccain_bush-hug-713122.jpg&imgrefurl=3Dhttp://ampal= .blogspot.com/2007/01/giuliani-mccain-gop-and-jewish-money.html&h=3D3= 59&w=3D300&sz=3D26&tbnid=3Dy_jO_OFtEYj04M:&tbnh=3D121&= ;tbnw=3D101&hl=3Den&prev=3D/images%3Fq%3Dgeorge%2Bbush,%2Baipac%2= 6start%3D20%26gbv%3D2%26ndsp%3D20%26hl%3Den%26sa%3DN&frame=3Dsmall"=20 scrolling=3Dno=20 onload=3D"var d =3D frames[0].document;var l =3D d.links[0];if = (d.getElementById &&d.getElementById('logo')) {l =3D = d.getElementById('logo');}l.target=3D'_top';"><FRAME=20 src=3D"http://ampal.blogspot.com/2007/01/giuliani-mccain-gop-and-jewish-m= oney.html"><NOFRAMES></NOFRAMES></FRAMESET></HTML> ------=_NextPart_001_00CC_01C8AA43.F31E2930 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://images.google.com/imgres?imgurl=http://blog.reidreport.com/uploaded_images/mccain_bush-hug-713122.jpg&imgrefurl=http://ampal.blogspot.com/2007/01/giuliani-mccain-gop-and-jewish-money.html&h=359&w=300&sz=26&tbnid=y_jO_OFtEYj04M:&tbnh=121&tbnw=101&hl=en&prev=/images%3Fq%3Dgeorge%2Bbush,%2Baipac%26start%3D20%26gbv%3D2%26ndsp%3D20%26hl%3Den%26sa%3DN&frame=small =EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>
See full-size image.
3D""
blog.reidreport.com/uploaded_images/mccain_bu...
300=20 x 359 - 26k
Image may be scaled down and subject to=20 copyright.
Remove Frame
3D""
Image Results = =C2=BB
Below is the image in its = original=20 context on the page: ampal.blogspot.com/2007/01/giuliani-mccain-go...
------=_NextPart_001_00CC_01C8AA43.F31E2930-- ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://bp2.blogger.com/_ycSWX-7x2Vc/RZ1ZXFk77BI/AAAAAAAAAFE/M8qnRflMTLk/s200/untitled.jpg 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 ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://blog.reidreport.com/uploaded_images/mccain_bush-hug-713122.jpg /9j/4AAQSkZJRgABAQEASABIAAD/7RNiUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQABOEJJTQQNAAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAA AAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9m ZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAAB AC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA//// /////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD///// ////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4A AAAAAAQAAAAAOEJJTQQaAAAAAAB3AAAABgAAAAAAAAAAAAABZwAAASwAAAALAG0AaQBsAGwAcwA2 ADUAMABbADEAXQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABLAAAAWcAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOEJJTQQRAAAAAAABAQA4QklNBBQAAAAAAAQAAAAB OEJJTQQMAAAAABC7AAAAAQAAAF4AAABwAAABHAAAfEAAABCfABgAAf/Y/+AAEEpGSUYAAQIBAEgA SAAA/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwM DAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwM DAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAcABeAwEiAAIRAQMR Af/dAAQABv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVS 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 W6hx/wAwfkf8qcSr++n+kv/Z ------=_NextPart_000_00C7_01C8AA43.F31E2930 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_00C7_01C8AA43.F31E2930 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://c34.statcounter.com/3044000/0/eb957a8b/0/ R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw== ------=_NextPart_000_00C7_01C8AA43.F31E2930 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_00C7_01C8AA43.F31E2930 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/widgets/3319451950-blogarchive.css #ArchiveList .toggle { CURSOR: pointer; FONT-FAMILY: Arial, sans-serif } #ArchiveList .toggle-open { LINE-HEIGHT: 0.6em; _font-size: 1.7em } #ArchiveList { TEXT-ALIGN: left } #ArchiveList A.post-count-link { TEXT-DECORATION: none } #ArchiveList A.post-count-link:link { TEXT-DECORATION: none } #ArchiveList A.post-count-link:visited { TEXT-DECORATION: none } #ArchiveList A.toggle { TEXT-DECORATION: none } #ArchiveList A.toggle:link { TEXT-DECORATION: none } #ArchiveList A.toggle:visited { TEXT-DECORATION: none } #ArchiveList A.toggle:hover { TEXT-DECORATION: none } .BlogArchive #ArchiveList UL LI { BORDER-TOP-WIDTH: 0px; LIST-STYLE: none none outside; PADDING-LEFT: = 15px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: none transparent scroll repeat = 0% 0%; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; TEXT-INDENT: -15px; = BORDER-RIGHT-WIDTH: 0px } .BlogArchive #ArchiveList UL UL LI { PADDING-LEFT: 1.2em } .BlogArchive #ArchiveList UL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; LIST-STYLE-IMAGE: none; BORDER-BOTTOM-WIDTH: = 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; = LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px } .BlogArchive #ArchiveList UL UL { MARGIN-TOP: 5px } .BlogArchive #ArchiveList UL.posts LI { PADDING-LEFT: 1.3em } #ArchiveList .collapsed UL { DISPLAY: none } ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/css/blog_controls.css .item-control { DISPLAY: none } .item-control A { TEXT-DECORATION: none! important } .item-action A { TEXT-DECORATION: none! important } .widget-item-control { FLOAT: right } .icon-action { MARGIN: 0px 0px -5px 0.5em; BORDER-TOP-STYLE: none! important; = BORDER-RIGHT-STYLE: none! important; BORDER-LEFT-STYLE: none! important; = BORDER-BOTTOM-STYLE: none! important } .delete-comment-icon { PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: = url(/img/icon_delete13.gif) no-repeat left 50%; PADDING-BOTTOM: 7px; = PADDING-TOP: 7px } @media All =20 { .BLOG_mobile_video_class { DISPLAY: none } } @media Handheld =20 { .BLOG_mobile_video_class { DISPLAY: inline } .BLOG_video_class { DISPLAY: none } } ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/widgets/3597482671-blog.css .backlink-toggle-zippy { PADDING-RIGHT: 11px; BACKGROUND: = url(http://www.blogger.com/img/triangle_ltr.gif) no-repeat left center; = CURSOR: hand; MARGIN-RIGHT: 0.1em } .expanded-backlink .backlink-toggle-zippy { BACKGROUND-IMAGE: url(http://www.blogger.com/img/triangle_open.gif) } .collapsed-backlink .collapseable { DISPLAY: none } .status-msg-wrap { FONT-SIZE: 110%; MARGIN: 10px auto; WIDTH: 90%; POSITION: relative } .status-msg-border { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FILTER: = alpha(opacity=3D40); BORDER-LEFT: #000000 1px solid; WIDTH: 100%; = BORDER-BOTTOM: #000000 1px solid; POSITION: relative; -moz-opacity: .40; = opacity: .40 } .status-msg-bg { Z-INDEX: 1; FILTER: alpha(opacity=3D30); WIDTH: 100%; POSITION: = relative; BACKGROUND-COLOR: #cccccc; -moz-opacity: .80; opacity: .80 } .status-msg-body { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; Z-INDEX: 4; PADDING-BOTTOM: = 0.3em; WIDTH: 100%; PADDING-TOP: 0.3em; POSITION: absolute; TEXT-ALIGN: = center } .status-msg-hidden { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; VISIBILITY: hidden; = PADDING-BOTTOM: 0.3em; PADDING-TOP: 0.3em } .status-msg-wrap A { PADDING-LEFT: 0.4em; TEXT-DECORATION: underline } #comments .blogger-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/b16-rounded.gif) no-repeat = left 50%; LINE-HEIGHT: 16px } .blogger-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/b16-rounded.gif) no-repeat = left 50%; LINE-HEIGHT: 16px } #comments .openid-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/openid16-rounded.gif) = no-repeat left 50%; LINE-HEIGHT: 16px } .openid-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/openid16-rounded.gif) = no-repeat left 50%; LINE-HEIGHT: 16px } #comments .anon-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/anon16-rounded.gif) no-repeat = left 50%; LINE-HEIGHT: 16px } .anon-comment-icon { PADDING-LEFT: 20px; BACKGROUND: url(/img/anon16-rounded.gif) no-repeat = left 50%; LINE-HEIGHT: 16px } .paging-control-container { FONT-SIZE: 80%; FLOAT: right; MARGIN: 0px 6px 0px 0px } .unneeded-paging-control { VISIBILITY: hidden } ------=_NextPart_000_00C7_01C8AA43.F31E2930 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_00C7_01C8AA43.F31E2930 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-css/navbar/3328360018-navbar.css BODY { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 100%; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-FAMILY: "Trebuchet = MS",Verdana,Arial,Sans-serif; WHITE-SPACE: nowrap } A { TEXT-DECORATION: none } #b-navbar { FONT-SIZE: 0.85em; LINE-HEIGHT: 0.85em; BORDER-BOTTOM: #024 1px solid; = HEIGHT: 29px } #b-navbar #b-logo { LEFT: 5px; POSITION: absolute; TOP: 0.15em } #b-navbar #b-logo #navbar-logo { WIDTH: 24px; HEIGHT: 24px } #b-navbar #b-logo SPAN { DISPLAY: block; LEFT: -9000px; POSITION: absolute } #b-search { PADDING-RIGHT: 1em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 3px; MARGIN: = 0px 0px 0px 34px; PADDING-TOP: 4px } #b-search TD { VERTICAL-ALIGN: middle } #b-query { MARGIN: 0px 0.5em 0px 0px } .btn { PADDING-RIGHT: 0px; BORDER-TOP: 1px solid; PADDING-LEFT: 0px; = FONT-SIZE: 0.8em; PADDING-BOTTOM: 0px; MARGIN: 0px 0.5em 0px 1px; = TEXT-TRANSFORM: uppercase; CURSOR: hand; LINE-HEIGHT: 0.85em; = PADDING-TOP: 0px; BORDER-BOTTOM: 1px solid; WHITE-SPACE: nowrap } .btn DIV { BORDER-RIGHT: 1px solid; PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; = PADDING-BOTTOM: 0.21em; MARGIN: 0px -1px; BORDER-LEFT: 1px solid; = PADDING-TOP: 0.21em; POSITION: relative; HEIGHT: 0.85em } .btn DIV IMG { LEFT: 0.3em; POSITION: absolute; TOP: 0.2em } #bt-flag-body { PADDING-LEFT: 1em } #bt-unflag-body { PADDING-LEFT: 1em } #bt-unflag-body { DISPLAY: none } .flagged #bt-flag-body { DISPLAY: none } .flagged #bt-unflag-body { DISPLAY: block } #flagi { BORDER-RIGHT: #333 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #333 1px = solid; DISPLAY: none; PADDING-LEFT: 4px; FONT-SIZE: 0.7em; Z-INDEX: 300; = PADDING-BOTTOM: 4px; BORDER-LEFT: #333 1px solid; COLOR: #000; = LINE-HEIGHT: 0.8em; PADDING-TOP: 4px; BORDER-BOTTOM: #333 1px solid; = TOP: 3px; BACKGROUND-COLOR: #ff9 } #unflagi { BORDER-RIGHT: #333 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #333 1px = solid; DISPLAY: none; PADDING-LEFT: 4px; FONT-SIZE: 0.7em; Z-INDEX: 300; = PADDING-BOTTOM: 4px; BORDER-LEFT: #333 1px solid; COLOR: #000; = LINE-HEIGHT: 0.8em; PADDING-TOP: 4px; BORDER-BOTTOM: #333 1px solid; = TOP: 3px; BACKGROUND-COLOR: #ff9 } #flagi A { COLOR: #3366cc; TEXT-DECORATION: underline } #unflagi A { COLOR: #3366cc; TEXT-DECORATION: underline } .b-mobile { DISPLAY: none } #b-sms { PADDING-RIGHT: 7px; PADDING-LEFT: 7px; FONT-SIZE: 100%; PADDING-BOTTOM: = 4px; MARGIN: 0px 0px 0px 100px; LINE-HEIGHT: 1em; PADDING-TOP: 4px; = TEXT-ALIGN: left } #b-sms A { LINE-HEIGHT: 1em; MARGIN-RIGHT: 0.5em } #b-sms A:hover { TEXT-DECORATION: underline } @media Handheld =20 { BODY .b-mobile { DISPLAY: block } BODY #b-search { DISPLAY: none } BODY #flagi { DISPLAY: none } BODY #unflagi { DISPLAY: none } BODY #b-navbar #b-logo SPAN { DISPLAY: none } } ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-css/navbar/1297325411-1.css BODY { COLOR: #fff } A { COLOR: #9cf } .btn DIV { COLOR: #9cf } A:hover { COLOR: #fff } #navbar-logo { BACKGROUND-IMAGE: url(../../img/navbar/1/logobar.png) } #b-navbar { BORDER-BOTTOM: #024 1px solid; BACKGROUND-COLOR: #036 } #b-search { BACKGROUND: url(../../img/navbar/1/corner.gif) #147 no-repeat left = bottom } #b-query { BORDER-RIGHT: #47a 1px solid; BORDER-TOP: #47a 1px solid; BORDER-LEFT: = #47a 1px solid; BORDER-BOTTOM: #47a 1px solid } .btn { BORDER-LEFT-COLOR: #47a; BORDER-BOTTOM-COLOR: #47a; BORDER-TOP-COLOR: = #47a; BORDER-RIGHT-COLOR: #47a } .btn DIV { BORDER-LEFT-COLOR: #47a; BORDER-BOTTOM-COLOR: #47a; BORDER-TOP-COLOR: = #47a; BORDER-RIGHT-COLOR: #47a } .btn DIV:hover { BACKGROUND-COLOR: #47a } ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-js/3625575137-cookies.common.js // Copyright 2005, Google Inc.=0A= // =0A= // Operations on cookies that are common across our pages.=0A= //=0A= // Original Author: Pal Takacsi-Nagy (pal@google.com)=0A= =0A= =0A= /**=0A= * Sets a Cookie with the given name and value.=0A= *=0A= * name Name of the cookie=0A= * value Value of the cookie=0A= * [expires] Expiration date of the cookie (default: end of current = session)=0A= * [path] Path where the cookie is valid (default: path of calling = document)=0A= * [domain] Domain where the cookie is valid=0A= * (default: domain of calling document)=0A= * [secure] Boolean value indicating if the cookie transmission = requires a=0A= * secure transmission=0A= */=0A= function setCookie(name, value, domain, expires, path, secure) {=0A= document.cookie =3D name + "=3D" + escape(value) +=0A= ((expires) ? "; expires=3D" + expires.toGMTString() : "") +=0A= ((path) ? "; path=3D" + path : "") +=0A= ((domain) ? "; domain=3D" + domain : "") +=0A= ((secure) ? "; secure" : "");=0A= }=0A= =0A= /**=0A= * Gets the value of the specified cookie.=0A= *=0A= * name Name of the desired cookie.=0A= *=0A= * Returns a string containing value of specified cookie,=0A= * or null if cookie does not exist.=0A= */=0A= function getCookie(name) {=0A= var dc =3D document.cookie;=0A= var prefix =3D name + "=3D";=0A= var begin =3D dc.indexOf("; " + prefix);=0A= =0A= if (begin =3D=3D -1) {=0A= begin =3D dc.indexOf(prefix);=0A= if (begin !=3D 0) return null;=0A= } else {=0A= begin +=3D 2;=0A= }=0A= =0A= var end =3D document.cookie.indexOf(";", begin);=0A= =0A= if (end =3D=3D -1) {=0A= end =3D dc.length;=0A= }=0A= =0A= return unescape(dc.substring(begin + prefix.length, end));=0A= }=0A= ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-app/scripts/1019856700-common.js // Copied from .../google3/javascript/common.js=0A= =0A= //-----------------------------------------------------------------------= -=0A= // This file contains common utilities and basic javascript = infrastructure.=0A= //=0A= // Notes:=0A= // * Press 'D' to toggle debug mode.=0A= //=0A= // Functions:=0A= //=0A= // - Assertions=0A= // DEPRECATED: Use assert.js=0A= // AssertTrue(): assert an expression. Throws an exception if false.=0A= // Fail(): Throws an exception. (Mark block of code that should be = unreachable)=0A= // AssertEquals(): assert that two values are equal.=0A= // AssertNumArgs(): assert number of arguments for the function=0A= // AssertType(): assert that a value has a particular type=0A= //=0A= // - Cookies=0A= // SetCookie(): Sets a cookie.=0A= // ExpireCookie(): Expires a cookie.=0A= // GetCookie(): Gets a cookie value.=0A= //=0A= // - Dynamic HTML/DOM utilities=0A= // MaybeGetElement(): get an element by its id=0A= // GetElement(): get an element by its id=0A= // GetParentNode(): Get the parent of an element=0A= // GetAttribute(): Get attribute value of a DOM node=0A= // SetInnerHTML(): set the inner HTML of a node=0A= // GetInnerHTML(): get the inner HTML of a node=0A= // ClearInnerHTML(): clear the inner HTML of a node=0A= // SetCssStyle(): Sets a CSS property of a node.=0A= // GetStyleProperty(): Get CSS property from a style attribute string=0A= // ShowElement(): Show/hide element by setting the "display" css = property.=0A= // ShowBlockElement(): Show/hide block element=0A= // SetButtonText(): Set the text of a button element.=0A= // AppendNewElement(): Create and append a html element to a parent node.=0A= // CreateDIV(): Create a DIV element and append to the document.=0A= // CreateIFRAME(): Create an IFRAME and append to the document.=0A= // HasClass(): check if element has a given class=0A= // AddClass(): add a class to an element=0A= // RemoveClass(): remove a class from an element=0A= //=0A= // - Window/Screen utiltiies=0A= // GetPageOffsetLeft(): get the X page offset of an element=0A= // GetPageOffsetTop(): get the Y page offset of an element=0A= // GetPageOffset(): get the X and Y page offsets of an element=0A= // GetPageOffsetRight() : get X page offset of the right side of an = element=0A= // GetPageOffsetRight() : get Y page offset of the bottom of an element=0A= // GetScrollTop(): get the vertical scrolling pos of a window.=0A= // GetScrollLeft(): get the horizontal scrolling pos of a window=0A= // IsScrollAtEnd(): check if window scrollbar has reached its maximum = offset=0A= // ScrollTo(): scroll window to a position=0A= // ScrollIntoView(): scroll window so that an element is in view.=0A= // GetWindowWidth(): get width of a window.=0A= // GetWindowHeight(): get height of a window=0A= // GetAvailScreenWidth(): get available screen width=0A= // GetAvailScreenHeight(): get available screen height=0A= // GetNiceWindowHeight(): get a nice height for a new browser window.=0A= // Open{External/Internal}Window(): open a separate window=0A= // CloseWindow(): close a window=0A= //=0A= // - DOM walking utilities=0A= // AnnotateTerms(): find terms in a node and decorate them with some tag=0A= // AnnotateText(): find terms in a text node and decorate them with some = tag=0A= //=0A= // - String utilties=0A= // HtmlEscape(): html escapes a string=0A= // HtmlUnescape(): remove html-escaping.=0A= // QuoteEscape(): escape " quotes.=0A= // CollapseWhitespace(): collapse multiple whitespace into one = whitespace.=0A= // Trim(): trim whitespace on ends of string=0A= // IsEmpty(): check if CollapseWhiteSpace(String) =3D=3D ""=0A= // IsLetterOrDigit(): check if a character is a letter or a digit=0A= // ConvertEOLToLF(): normalize the new-lines of a string.=0A= // HtmlEscapeInsertWbrs(): HtmlEscapes and inserts 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_00C7_01C8AA43.F31E2930 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-app/scripts/107652916-dom.common.js =0A= // Commonly-used functions, reduced.=0A= =0A= function d(s) {return document.getElementById(s);}=0A= function dE(o,s) {return o.getElementsByTagName(s);}=0A= =0A= /**=0A= * toggleDisplay()=0A= *=0A= * Will toggle the display property of the style object for any=0A= * DOM element or object that supports style as a property.=0A= *=0A= * Warning: This'll wreak havoc if applied to 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_00C7_01C8AA43.F31E2930 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/navbar.g?targetBlogID=32255814&blogName=American+Palestinian+%28AMPAL%29&publishMode=PUBLISH_MODE_BLOGSPOT&navbarType=BLUE&layoutType=LAYOUTS&homepageUrl=http%3A%2F%2Fampal.blogspot.com%2F&searchRoot=http%3A%2F%2Fampal.blogspot.com%2Fsearch =EF=BB=BF
Notify Blogger about objectionable content on this page.
You flagged this blog as having objectionable content.
------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.haloscan.com/load/terryscott var hs =3D new Array(); var hstb =3D new = Array();hs["2493814290991236952"] =3D 1;hs["8466524501949008453"] =3D = 5;hs["5596653558871168338"] =3D 1;hs["6885088725985363988"] =3D = 1;hs["9008824422688023389"] =3D 1;hs["3204082994483740570"] =3D = 1;hs["129561012429611003"] =3D 1;hs["2642179534616798582"] =3D = 6;hs["203008524422564877"] =3D 1;hs["7429359666766447946"] =3D = 5;hs["387905329533571181"] =3D 1;hs["2787869882420108326"] =3D = 3;hs["4135210162000612581"] =3D 1;hs["5304172758765515472"] =3D = 2;hs["3768983692360708922"] =3D 1;hs["2448115668267577638"] =3D = 6;hs["8635224796963316237"] =3D 2;hs["4187928903923636507"] =3D = 1;hs["6594877809808260753"] =3D 2;hs["712600853971668565"] =3D = 1;hs["866692162006523882"] =3D 5;hs["1511787917841560573"] =3D = 4;hs["6106473555944834368"] =3D 4;hs["6533842180077125527"] =3D = 1;hs["4607988129939971372"] =3D 2;hs["610449751939926174"] =3D = 9;hs["2513315512187278105"] =3D 7;hs["7976828081422453548"] =3D = 8;hs["6311705886274065700"] =3D 3;hs["202142225764654386"] =3D = 2;hs["7118585750733553699"] =3D 4;hs["2244099117858513248"] =3D = 1;hs["3373245300909670441"] =3D 2;hs["4074273165690028637"] =3D = 1;hs["8690196976972523136"] =3D 1;hs["1628049006174152921"] =3D = 10;hs["900804518234425661"] =3D 1;hs["4493527787893170621"] =3D = 2;function postCount(id){ var hs_search =3D new RegExp('\\W','gi'); var = hs_id =3D id.replace(hs_search,"_"); id =3D hs_id;if (hs[id]){ if = (hs[id] =3D=3D=3D 1) { document.write("Comment (1)"); } else { = document.write("Comments (" + hs[id] + ")"); } } else { = document.write("Comments"); } }function HaloScan(id) { var hs_search =3D = new RegExp('\\W','gi'); var hs_id =3D id.replace(hs_search,"_"); id =3D = hs_id;window.open('http://www.haloscan.com/comments/terryscott/'+ id + = '/','comments'+ id +'', = 'directories=3D0,height=3D450,width=3D480,location=3D0,resizable=3D1,stat= usbar=3D1,scrollbars=3D1,toolbar=3D0'); }function postCountTB(id){ var = hs_search =3D new RegExp('\\W','gi'); var hs_id =3D = id.replace(hs_search,"_"); id =3D hs_id;if (hstb[id]){ if (hstb[id] = =3D=3D=3D 1) { document.write("Trackback (1)"); } else { = document.write("Trackbacks (" + hstb[id] + ")"); } } else { = document.write("Trackback"); } }function HaloScanTB(id) { var hs_search = =3D new RegExp('\\W','gi'); var hs_id =3D id.replace(hs_search,"_"); id = =3D hs_id;window.open('http://www.haloscan.com/tb/terryscott/'+ id + '', = 'comments'+ id +'', = 'directories=3D0,height=3D450,width=3D480,location=3D0,resizable=3D1,stat= usbar=3D1,scrollbars=3D1,toolbar=3D0'); }function postCountA(id){ var = hs_search =3D new RegExp('\\W','gi'); var hs_id =3D = id.replace(hs_search,"_"); id =3D hs_id;if (hs[id]){ if (hs[id] = =3D=3D=3D 1) { return "Comment (1)"; } else { return "Comments (" + = hs[id] + ")"; } } else { return "Comments"; } }var hsmurl =3D = 'http://www.haloscan.com/load/terryscott/?c=3D';var hsm =3D new = Array();if (typeof(hs_call)=3D=3D"undefined") {var hs_call =3D 0;}if = (typeof(hs_ratings_call)=3D=3D"undefined") {var hs_ratings_call =3D = 0;}function check_dupe(a, e) = {for(j=3D0;j 0) {for (var i =3D 0; i < al.length; i++) {var hsidA =3D = [];if (al[i].href.match(/javascript:HaloScan\('(.+)'\)/)) { var hsidA = =3D al[i].href.match(/javascript:HaloScan\('(.+)'\)/);var hsid =3D = hsidA[1];var hs_search =3D new RegExp('\\W','gi'); hsid =3D = hsid.replace(hs_search,'_');} else if = (al[i].href.match(/haloscan\.com\/comments\/[^\/]+\/([^\/]+)/)) {if ( ! = al[i].title.match(/^Thread:/)) {var hsidA =3D = al[i].href.match(/haloscan\.com\/comments\/[^\/]+\/([^\/]+)/);var hsid = =3D hsidA[1];}} if (hsidA.length) {if (hasRatings && = !hasRatingsTag && !has_class(al[i], "js-kit-norating")) {var cb =3D = get_closest_block(al[i]);if (cb.node) {var jsrD =3D = document.createElement('div');jsrD.innerHTML =3D '
';if (cb.isParent) = {cb.node.insertBefore(jsrD, cb.node.firstChild);} else = {cb.node.parentNode.insertBefore(jsrD, cb.node.nextSibling);}}}var reg = =3D new RegExp("Count\\('(.*?)'");var pc =3D = reg.exec(al[i].innerHTML);if (pc && pc[1]) {var pcs =3D pc[1];pc[1] =3D = escape(pc[1]);if((!hs[pcs]) && (hsm.length < 20) && (!check_dupe(hsm, = pc[1]))) {hsm.push(pc[1]);}}}}if (document.createElement && hsm.length > = 0) {var hsmj =3D hsm.join('+');hsmurl =3D hsmurl + hsmj;if = (hsmurl.length > 400) {hsmurl =3D hsmurl.substr(0,400);}var hsmA =3D = document.createElement('script');hsmA.src =3D hsmurl;hsmA.type =3D = 'text/javascript';if (document.body.appendChild) = {document.body.appendChild(hsmA);hs_call =3D 1;}}}if (hasRatings && = !hasRatingsScript && hs_ratings_call =3D=3D 0) {window.$JSKitViaHaloScan = =3D true;window.$JSKitNoDeferCallIfIE =3D true;var jscA =3D = document.createElement('script');jscA.src =3D = 'http://js-kit.com/ratings.js?y';jscA.type =3D 'text/javascript';if = (document.body.appendChild) = {document.body.appendChild(jscA);}hs_ratings_call =3D = 1;}}}if(window.addEventListener){window.addEventListener('load', = process_before, false);}else = if(window.attachEvent){window.attachEvent('onload', process_before);} = else {} ------=_NextPart_000_00C7_01C8AA43.F31E2930 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.statcounter.com/counter/counter_xhtml.js var sc_width=3Dscreen.width;var sc_height=3Dscreen.height;var = sc_referer=3D""+document.referrer;try{sc_referer=3D""+parent.document.ref= errer}catch(ex){sc_referer=3D""+document.referrer}var sc_os=3D"";var = sc_title=3D"";var sc_url=3D"";var sc_unique=3D0;var sc_returning=3D0;var = sc_returns=3D0;var sc_base_dir;var sc_error=3D0;var sc_remove=3D0;var = sc_http_url=3D"http";var sc_link_back_start=3D"";var = sc_link_back_end=3D"";var = sc_security_code=3D"";if(window.sc_https){if(sc_https=3D=3D1){sc_doc_loc=3D= ''+document.location;myRE=3Dnew = RegExp("^https","i");if(sc_doc_loc.match(myRE)){sc_http_url=3D"https"}els= e{sc_http_url=3D"http"}}else = sc_http_url=3D"http"}if(window.sc_partition){var = sc_counter=3D"";if(window.sc_partition!=3D34){sc_counter=3Dsc_partition+1= }sc_base_dir=3Dsc_http_url+"://c"+sc_counter+".statcounter.com/"}else{sc_= base_dir=3Dsc_http_url+"://c1.statcounter.com/"}if(window.sc_text){sc_bas= e_dir+=3D"text.php?"}else{sc_base_dir+=3D"t.php?"}if(window.sc_project){s= c_base_dir+=3D"sc_project=3D"+sc_project}else = if(window.usr){sc_base_dir+=3D"usr=3D"+usr}else{sc_error=3D1}if(window.sc= _remove_link){sc_link_back_start=3D"";sc_link_back_end=3D""}else{sc_link_= back_start=3D"";sc_link_back_end=3D"<\/a>"}sc_date=3Dnew = Date();sc_time=3Dsc_date.getTime();sc_time_difference=3D60*60*1000;sc_tit= le=3D""+document.title;sc_url=3D""+document.location;sc_referer=3Dsc_refe= rer.substring(0,255);sc_title=3Dsc_title.substring(0,150);sc_url=3Dsc_url= .substring(0,150);sc_referer=3Descape(sc_referer);if(encodeURIComponent){= sc_title=3DencodeURIComponent(sc_title)}else{sc_title=3Descape(sc_title)}= sc_url=3Descape(sc_url);if(window.sc_security){sc_security_code=3Dsc_secu= rity}var = sc_tracking_url=3Dsc_base_dir+"&resolution=3D"+sc_width+"&h=3D"+sc_height= +"&camefrom=3D"+sc_referer+"&u=3D"+sc_url+"&t=3D"+sc_title+"&java=3D1&sec= urity=3D"+sc_security_code+"&sc_random=3D"+Math.random();if(window.sc_par= tition){if(window.sc_project){if((sc_project=3D=3D3512438)||(sc_project=3D= =3D3512576)||(sc_project=3D=3D3512643)||(sc_project=3D=3D3512646)||(sc_pr= oject=3D=3D3512649)||(sc_project=3D=3D3512653)||(sc_project=3D=3D3512659)= ){sc_remove=3D1}}}if(sc_error=3D=3D1){document.writeln("Code corrupted. = Insert fresh copy.")}else if(sc_remove=3D=3D1){}else = if(window.sc_invisible){if(window.sc_invisible=3D=3D1){if(window.sc_call)= {sc_call++}else{sc_call=3D1}eval("var sc_img"+sc_call+" =3D new = Image();sc_img"+sc_call+".src =3D = \""+sc_tracking_url+"\"")}else{document.writeln("
"+sc_link_back_start+"3D\"StatCounter"+sc_link_back_end+"
")}}else = if(window.sc_text){document.writeln('')}else{document= .writeln("
"+sc_link_back_start+"3D\"StatCounter"+sc_link_back_end+"
")}if(window.sc_click_stat){if(w= indow.sc_click_stat=3D=3D1){if(clickstat_done!=3D1){var = clickstat_done=3D1;var clickstat_project=3Dwindow.sc_project;var = clickstat_security=3Dwindow.sc_security_code;var = dlext=3D"7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|p= hps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip";if(typeof(window= .sc_download_type)=3D=3D'string')dlext=3Dwindow.sc_download_type;var = ltype=3D"https?|ftp|telnet|ssh|ssl|mailto";var dl=3Dnew = RegExp("\\.("+dlext+")$","i");var lnk=3Dnew = RegExp("^("+ltype+"):","i");var = host_name=3Dlocation.host.replace(/^www\./i,"");var = host_splitted=3Dhost_name.split(".");var = domain=3Dhost_splitted.pop();domain=3Dhost_splitted.pop()+"."+domain;var = lnklocal_mask=3D"^https?:\/\/(.*)"+domain;var lnklocal=3Dnew = RegExp(lnklocal_mask,"i");if(document.getElementsByTagName){var = anchors=3Ddocument.getElementsByTagName('a');for(var = i=3D0;i0){var = sc_req=3Dsc_http_url+"://c"+sc_counter+".statcounter.com/click.gif?sc_pro= ject=3D"+clickstat_project+"&security=3D"+clickstat_security+"&c=3D"+sc_l= ink+"&m=3D"+clickmode+"&rand=3D"+Math.random();var sc_req_image=3Dnew = Image(1,1);sc_req_image.onload=3Dsc_none;sc_req_image.src=3Dsc_req;var = d=3Dtypeof(window.sc_delay)!=3D"undefined"?sc_delay:250;var n=3Dnew = Date();var t=3Dn.getTime()+d;while(n.getTime()0)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_n(a,b){a.style.display=3Db?"":"none"}function = w_ha(a,b){a.style.display=3Db?"block":=0A= "none"}function w_ia(a,b){a.style.display=3Db?"inline":"none"}function = w_o(a,b){if(a=3D=3Dnull||a.className=3D=3Dnull)return = false;if(a.className=3D=3Db)return true;var c=3Da.className.split(" = ");for(var d=3D0;d/g;function = w_k(a){if(!a)return"";return = a.replace(w_ja,"&").replace(w_ka,"<").replace(w_la,">").replace= (w_ma,""")}var w_ma=3D/\"/g;function w_na(a){return = document.getElementById(a)}function w_oa(a){return document.all[a]}var = w_pa=3Ddocument.getElementById?w_na:=0A= w_oa;function = w_j(a){try{if(window.parent!=3Dwindow&&window.parent.log){window.parent.l= og(window.name+"::"+a);return}}catch(b){}var c=3Dw_pa("log");if(c){var = d=3D"

"+new Date+""+a+"

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

|


Newer = Post=20 Older = Post=20 Home =
3D""=20 =

Blogroll/Links

AMERICA=20 blog
Angry Arab = News=20 Service
Annie's=20 Letters
anti-war.com
Baqa'a Refugee Camp
Bethlehem = Bloggers
CommonDreams
Contemplating = from=20 Gaza
Council for = National=20 Interest
CounterPunch
Democracy Now!
DesertPeace
Electronic = Intifada
Fenian = Rising
Free Free Palestine
From Gaza, With Love
Improvisations: = Arab Woman=20 Progressive Voice
In the=20 Middle: Raed Jarrar's Blog
Informed=20 Comment
Inner = Voice of=20 Crazy Composer
International=20 Solidarity Movement
KABOBfest
Lawrence of = Cyberia
Munich and a little bit of=20 everything
Nation=20 Magazine
Norman=20 G. Finklestein
Noticable=20 Changes
Palestine=20 Blogs
Palestine=20 Chronicle
Palestinian = Pundit
Peace = for=20 Palestine
PeacePalestine
Rafah = Today
Raising = Yousuf
Sabbah's Blog
Saree Makdisi
Selves and Others
Umkahlil
Under the Holly = Tree
We are Wide Awake
Window into = Palestine
Whisper of = Madness
Zionists Out of the Peace=20 Movement
3D""=20 =

Blog Archive

  • =E2=96=BC 2008=20 (13)=20
    • =E2=96=BC April = (1)=20
      • South=20 Africa was a picnic compared to the situatio... =
    • =E2=96=BA March = (12)=20
      • Efraim=20 Diversoli... why not state that he is a Jew...=20
      • Unprecedented=20 influence: Almost 10 percent of supe...=20
      • Good=20 stuff on "Sh'pitz ha' me'luch'lach"=20
      • Ar= e=20 you getting it yet?=20
      • Birth=20 Pangs...=20
      • A=20 total and uncompromising boycott of Israel is ne...=20
      • Smug=20 Mugs: No fundamental difference on foreign po...=20
      • The=20 2008 Candidates and Israel=20
      • The=20 Day the Earth and Sky Traded Places: Gazan Hol...=20
      • Hagee:=20 How stupid can you be?=20
      • Disorganized,=20 disenfranchised, and utterly negligi...=20
      • Nader=20 the Best Antidote to American Imperialism =
  • =E2=96=BA 2007=20 (63)=20
    • =E2=96=BA October = (6)=20
      • Denying= =20 the Holocaust=20
      • Good= =20 bedtime reading=20
      • "The=20 Vanity Fair 100"=20
      • Nader, = Nader, Nader!=20
      • Hate=20 crimes in America, you haven't a clue!=20
      • Hillary,=20 are you surprised?
    • =E2=96=BA February = (3)=20
      • "A=20 mythical and historical narrative"=20
      • Hillary=20 supports war on Iran... Disaster for Ameri...=20
      • Ready,=20 set, go... marching towards Iran
    • =E2=96=BA January = (52)=20
      • Protesters=20 or Supporters? Carter at Brandeis=20
      • If= it=20 quacks like a duck....=20
      • The $770m=20 kiss=20
      • W= MD=20 or WmD, its all the same=20
      • It=20 doesn't matter what Iran says... the neocons wi...=20
      • It=20 could be worse, I could be living in Iran...=20
      • I'm=20 feeling so good to be an American=20
      • A= merica=20 Deserves Better!=20
      • Turkey=20 and Israel, unusual allies=20
      • Why=20 you need to boycott the Oscars this year=20
      • Hillary=20 Rodham Clinton, "Honorary Jew" dishonorabl...=20
      • Oh=20 boy Obama, you in trouble now... Islamophobia e...=20
      • Hill= ary=20 for '08? Never!=20
      • $100=20 million "straight to Abbas"=20
      • Lieberman=20 dubs Peretz stupid, racist (?)=20
      • Senator=20 George McGovern on fire at the Press Club=20
      • Send=20 AG Alberto Gonzales to Gitmo!=20
      • Amazon.com's=20 "correction" Jimmy Carter back at #5=20
      • Jimmy=20 Carter on the NYT Bestsellers list and er, m...=20
      • Destroying=20 the Israeli house of cards=20
      • Demolishing=20 houses, would any American accept this...=20
      • Whats=20 wrong with this Klingon?=20
      • The=20 cradle and the tomb of civilization=20
      • An=20 Unreasonable Man: Ralph Nader, How do you defin...=20
      • Condi=20 Ricee and Tzipi Livnee=20
      • How=20 about we grill you instead Dershowitz! =
3D""=20 =
 
------=_NextPart_000_00C7_01C8AA43.F31E2930--