From: Subject: The Experience with Steve Fox Date: Fri, 5 Oct 2007 12:24:28 -0400 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0000_01C8074A.AC82B280" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3138 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: image/bmp Content-Transfer-Encoding: base64 Content-Location: http://bp3.blogger.com/_u9I83fZyjjI/RvupqKCOXyI/AAAAAAAAABE/ZfGuvlZb_Ys/s1600/test.bmp /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCACTAf4DASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD4yooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKK9F8E/Bfx/wCLdH/tfT9Ljt7J13QSXkoi88eqA8ke5wDng1T1 n4Q/EvSQpuvBuqSZbaPsiC55/wC2RbA9+lAHDUV0/wDwr3x//wBCP4m/8FM//wATR/wr3x//ANCP 4m/8FM//AMTQBzFFdXa/DX4hXM6wx+CPESs2cGTTpY16Z5ZlAH4mptR+F/jzTdAn17U/DlxYadbx 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 S4fFdqVBTSdJns7e6BYBsqyBVwvzDJzkEZOa8RrvLrUvhlpfhS7tdD0nW9Z127iEP2zV1jhgtP70 kUUTsSx7bmOODk8huDoA9p+AVnFffCf4tQzNIFXSYpgEcrlo0uHXJHPVRxnBBIIIrxavc/2bYZJ/ hp8WYoopJnfRVVEQZLMYbnAA7nPSvDKACvT/AIT+DPD9x4R1r4h+NPOn0HSHEEdjA5R7y4IXCFhy q/Og45+bOQAc+YV6Z8LPiHouieDtb8D+LdJub7QNWbzWlsyn2iCXao3KH+UkbEIzjBXvnFAF7Qvi xoh8RW66x8MvAq6G8ojmSHSF8+KI8bhIclmA5PHOD0zkS/F3QNA+E3xnsW0zSodX0vyFvW03Uv3s WHaRDFyOQAMqW3EHGd2DnKsLz4K6VqQ1OGy8aax9nIkg0+/S1jhlcHIWV1YnZ6gL+Y4qtqHi7TPH 3xUTxB8Qpbi00lvlaGxTeY4kBKRDJyAT1brlicDPAB6/e+Afh9rsdj8YdD02d/DkcLXF54ftrIs0 0yHaEVE4Ubh845XCk/dJNfPHjbxBceKvFV/r9zbwW0l5Ju8mFcJGoAVVH0UAZ79a9AX44eINO+IM Ws6CHtPDtqq2ttoW8LALVcfLgDAc4zvwSCcZKjFc/wDGXVvAeueI11TwPpupaetyGlvo7kKEMrHd mNQzbeSwIzt4G0Y6gHDUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVr+FvE3iDwvf/AG7w/q13 p0/G4wvhXxnAZfusOTwQetZFFAHoyfF3WJpXuda8LeCtevZG3S3mo6FE00v+8U2g8YHToKgvPi54 w+zXNnoj6Z4Ysbn/AFttoenxWik/3t6jeDjAzu7VwFFADpZHlkaSR2d3JZmY5JJ6kmm0UUAFFFFA BRRRQAUUUUAFFFFAHS+HPHfizw74fvtB0TWJLHT78lrlI4k3OSoU4crvXgY4IrmqKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/9k= ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://bp0.blogger.com/_u9I83fZyjjI/Rv1H96COX0I/AAAAAAAAABc/z8Jp5oXX05g/s200/ghost.jpg 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 ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://bp3.blogger.com/_u9I83fZyjjI/Rv1WKqCOX2I/AAAAAAAAABs/Sf1Chb_C5to/s200/rodneycluff.jpg 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 ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.rawhits.com/view.php?cid=194&type=2&style=85&digits=5 R0lGODdhUAAUAOcAANrpo+vo8vz2wtL4cG7x8dLQ1fryRkn79ubEv72wyunX6atk4/////Xvkcf1 99OW2cTD+sDX+sy1k8/4k+W7/LXU6fnB5nHO79rq1Py9+rOX8fJx1fj75si927P4xY2nu+Tk5NKW s8RxS6epunmkGrVItPOL8ubU1Lvw8df61PnE09bK9dfrw8baxrvKqauvkYGDhWyJdYuUVIuKkoeJ b6WgpLPPyseUkdi1uKPjzK+rpWyLjZGpl/Ly8nCid6/zlebUwfzEuPCPampnYZ+GnYt6Wou3RK+w 7IVodV11bLy7uq3ElflGup2pgoqdnkxKUEJWWXOws8399NfY1lpjLHGCWGhnk3PritLFvJhFWcjI yVqMl5KBgazlrvHOEquYynKelYWYf2tTfGc5Z/390+HgxY1birCyssit8DcnNUpqU6Hh89fx9rWI sY41e8aydXYWponz+Uyus6SUcHN0eNfYv72gt7ni/ZeVmOn7uL3E5NDSj5OTiHLatqXD+umo8vvn 6MrX3vOXto25xqyYk0WIxcLzuO7+/maj4ly/8qHBuq67epP6wErUreHV9Omzc+rn1NazL4nO8I3q TKLU3qK/2Zs/0XfIyMeKcr3r3lXu0vSlk+Uv8JDQzVWjmdRlqvhX95CK1nePr7Pm5MzXr9trz46p 7cvmSGTDi9Wv0fCV1OrEkJFnq4yR+i2u6tfn5JJ9PtiN97x3u0Mva8T814bFlqn9/kg+Np3YqnH9 3OeIoej37PXxr4PIZaacXMlV0vvb6q/85q5mj8vIbOj61fXVePfkvqK7pNjISLzkeePF6O6ts9z9 55fJgvtw9f3m/ct87fus2pv6JsdOkPfb2FOIbis8NpJRqtnj9v3UxPrl1mPXcanU+1FNbcTh24py jolWc19OTZaIs06hcC7d7enTopz37VvW3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAUAAUAAAI/gABBBAw gACAAgYOIEigYAGDBg4EEjSIUCFDhxAhAmmEoUsGHT9wOGqAgcGhRxOAcTC2p4ayZY4e+bFjg9mo ZhILHky4sOFDBw8gRJAwgUIFCxcGYMigYQOHDUGHFj2adGnTp08hcXCkokMkKYa2hGggadKGT86e QRMQS4WeG9GkETPE4E6uqESNIlXK1OmGDh4mfAARQsQICSRKmDiBIkXXwIMLH068uLEKx5Qs5Kn0 J4elS5hwZEKxBgIEKRbIaFKSAJceVKSmSfiEpRhgwYQNI1bM2PEKFi1cvIARQ8YMGjVs3MChwMTv 4MOLH0++vHlzTZs4cehkxxMPPFHe/nwClYFapwQm6rAyQ6MKEirVrAgr9Ou5cOLGkStnbsJCDh07 8NADAwT2UIMPO0DwAxD+ASgggQwYiKCCQCxYwSZrlBHKDoQQWIAoWIzCRgOtOFMHLFNAqGIBN8jS YIADFnhgggsGIcQQPKgI4QtEFGGEATbiqCOBPPpowI+kcNDHG1bEAKEWRPDgQR4qdIFMIFAM6eEO WASZ45BF/njEC0hAqEMSSkAIwxIBPDBmmQSemSaBa7bZ5gWf6DCEDipqMUMppvyBCzPLtJGElgwU QEgtb5qJpppsPsBEE05A+MQQWRLoRBQ3SDFppQRemikDm3ba6SmonDGkFkh8kooJ/mCQEQERMxAI gjW4WjPLNTZg86mlmEJYqhQVEMEnA1NQUUUSKTKggxVXSFDsscku2+yz0Ubbhx14eAgCgVCeocof sWSTCiHdIouHFn4O4UktykxLYLXMxgmtBFhkoQW4WxjBBRbgzuBRvvsyoEW//wbskUersDICCE6k UbAWMSTQSh3LaAMAHwXr2AMXg2xDML/+AmywwBlIkMTEMRAhw8RVdOCFyiy7DLPMMrvyigSwxKDG xLC0wBY30ZTiybfzNousG4rQDG7LL4MbsxdfgDFxGF+IMfEYCZBR9dVZb9111wSoUEcnsswyMRVa KECLMmuY0gQeM/BBRzdPHMvA/gyifA0u1lqDyzUZZcRA7RhmiNHsGWFI0EPhhye+eOM9OP5HLbak 8MEtE8+AyxoXeMNLC1Z8M4Qa4DgRzhAQmuEC5PMirjiBjDuOBhE1QJiGGk9AWIMOLqxxe+4E7t47 gb8HH3wORxgCCSlFTJyFDV1o4AI1ZYijQw1ajGE6FxB+M87wuvPuO/BrsGEohGc8SqAbb8ARh/qH 0u4+A/DLL38uaOiyixwxmJgVbsCLNkDDGJEgHrLoAIMYUWwJ9GPf/fIXhxXIYQ56U1EN6FAHO2DA ghjU0gY7iAEP7oERjOgFENYlNV/8AhgdwMEedHAMRFmhF5sAYQZ9x0EPpuAO/kvAw4NkNAYX5EEJ evhhEIcYoRoU8Yh6QCIjDoGIYDhCGAXwkB1+EAsTjIIZqrjBOJiILDNsARG7UKIQY9TEJyLxCBPY wx7aEIMZcMFuTeiDFfxwBBfAUY50tCMe9chHP7ogBKrAQA5c8AE4iIELdhhGLYhxBHLkAAc/2AMR YECHGeyABmG4wQeGMYE/zrGOd6RDHvfYxz8AIhA9EMQgXECIQtiBBTiAwBoMcQVXwlKWtLQlLnXJ S17aAgLFMMYuoiCJEnQCFcdYjAqEgIZDGIIFoejADHzhgwRUQgG7oKQvYznLWt4yl7u8QhykQMVE KMIEKWhBGfKwCEMIghEKQ1hnO98Zz3nW854KwOcRfuCAYCAjGauwwA3QsIdY/IEX5TDHM/pQAFUU YwMAKEcpztEKFWjBA/pEhDvhKU962hOfAQEAOw== ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Location: http://www.blogger.com/widgets/3692497862-list.css .quickedit { CURSOR: pointer } ------=_NextPart_000_0000_01C8074A.AC82B280 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 } .quick-edit-icon { PADDING-RIGHT: 9px; PADDING-LEFT: 9px; BACKGROUND: = url(/img/icon18_edit_allbkg.gif) no-repeat left 50%; PADDING-BOTTOM: = 9px; MARGIN: 0px 0px 0px 0.5em; PADDING-TOP: 9px } .widget-item-control .quick-edit-icon { BACKGROUND: url(/img/icon18_wrench_allbkg.gif) no-repeat left 50% } .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 } .email-post-icon { PADDING-RIGHT: 9px; PADDING-LEFT: 9px; BACKGROUND: = url(/img/icon18_email.gif) no-repeat left 50%; PADDING-BOTTOM: 9px; = MARGIN: 0px 0px 0px 0.5em; PADDING-TOP: 9px } @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_0000_01C8074A.AC82B280 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/widgets/2791266615-blog.css .backlink-toggle-zippy { PADDING-RIGHT: 11px; BACKGROUND: = url(http://www.blogger.com/img/triangle.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 } ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.blogger.com/img/navbar/1/btn_search_this.gif R0lGODlhYAAPANUAAB9YjAlCeEN6rneq3VKIuxBKf0uBtWic0C5mmjVsoTxzpwhCeBhRhm+j1ghC d0J3q1mOwkJ4qxJLgD9ypDBikhJKgEN4rD5xozBiky9ikiVckRJKfSZdkSVdkRJJfSZdkj9xo2GV ySZfk36x5BFEd0J4rAlDeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABgAA8AAAb/QA8G 9CgZj8ikcslsOp/Q54VCynQqpqx2y+16v+CweDyWcCgTyYLMbrvfbsmk5FjD7/i8eLF4RBwBWQkD IwkmIiOJIlkGIwZZiCMDhiYADY6HI1kji1kCiSMhmZuLiiaDhVuRIwJZIa2ChI+xIwRZDiZFJoEm AwgFBaNbByEHkJoKmiYNCiYMwpxc0dCLAqK9v8FaiCYIyq9avgwjAM7klVmBEQ+AWQMHnYginQWF I8HyBMYA99uc8tLi/YtmzR08LvmMmQAnDJwChVoCLChhIQAvSyMQZApxzZuJjJkODFjEzR/HaVqm ITpZ7RpGjSYb2FoIqyQ4a5HSmSjxwOIWxgiiSjIaEGLAI24GRPF7doxUwKYfW/681rReOYb8gh1o lqCBsEAlIkjMokAEBFvyRAQLQUAEgaCaxj070JakMpROqZnQF6zsWVWckl1t+6yBAG/PGAxQkExL n4p2khIIBoBjiKvlKle6ZsBQgbfNNC8st+VyFtGmOZaTrO20ZZhJQxgCABRmJaCzAjgI206P7995 Jl6QwAu48eNhHMihoKHCAoskokufTr269evTA2Dfzr379AofMGxAEyGK+fPo05ufkIFEEAA7 ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-css/navbar/1417053854-navbar.css #b-navbar { DISPLAY: block! important; Z-INDEX: 1; MIN-HEIGHT: 24px; LEFT: 0px; = MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 4px; FONT: small "Trebuchet = MS",Verdana,Arial,Sans-serif; WIDTH: 100%; COLOR: #47a; BORDER-BOTTOM: = #024 1px solid; POSITION: absolute! important; TOP: 0px } .bt1 { FONT-SIZE: 1px; MARGIN: 0px 1px; LINE-HEIGHT: 1px; POSITION: relative; = HEIGHT: 1px } .bt2 { PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 83%; PADDING-BOTTOM: = 2px; PADDING-TOP: 2px; POSITION: relative } #b-next { PADDING-LEFT: 5px } #b-search-this { MARGIN: 0px; TEXT-TRANSFORM: uppercase; CURSOR: pointer; WHITE-SPACE: = nowrap; POSITION: relative; TEXT-DECORATION: none } #b-flag-this { PADDING-LEFT: 5px; MARGIN: 0px; TEXT-TRANSFORM: uppercase; CURSOR: = pointer; WHITE-SPACE: nowrap; POSITION: relative; TEXT-DECORATION: none } #b-navbar #b-logo { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; LEFT: 5px; = BORDER-BOTTOM-WIDTH: 0px; POSITION: absolute! important; TOP: 0.15em; = BORDER-RIGHT-WIDTH: 0px } @media All =20 { #b-search { MARGIN: 0px 0px 0px 34px; HEIGHT: 1em; BACKGROUND-COLOR: #147 } #b-search TABLE { PADDING-RIGHT: 5px } #b-search TD { FONT-SIZE: 100%; LINE-HEIGHT: 0.8em } #b-more { FLOAT: right } #b-searchbtn { MARGIN-RIGHT: 5px } #b-more { FLOAT: right } #b-search TABLE { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 2px; PADDING-TOP: 2px; _padding: 1px 2px 1px } #b-search A { LINE-HEIGHT: 1em; TEXT-DECORATION: none } #b-search A:hover { LINE-HEIGHT: 1em; TEXT-DECORATION: none } #b-search TD { LINE-HEIGHT: 0.8; PADDING-TOP: 2px } #b-search TD TD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #b-searchbtn { DISPLAY: block } } @media Handheld =20 { #b-search { DISPLAY: none! important } #b-more { DISPLAY: none! important } } .navbar-right { PADDING-RIGHT: 10px } TD.navbutton { PADDING-RIGHT: 5px; _padding-top: .3em } TD.navsearch { PADDING-LEFT: 5px } #b-query { VERTICAL-ALIGN: top; WIDTH: 12em; MARGIN-RIGHT: 0.25em } #b-query { FONT-SIZE: x-small! important } @media All =20 { BODY DIV.b-mobile { DISPLAY: none } #b-sms { DISPLAY: none! important } } @media Handheld =20 { BODY DIV.b-mobile { DISPLAY: block } #b-sms { PADDING-RIGHT: 7px; DISPLAY: block! important; PADDING-LEFT: 7px; = FONT-SIZE: 100%; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 0px 100px; = LINE-HEIGHT: 1em; PADDING-TOP: 4px; TEXT-ALIGN: left } #b-sms A { LINE-HEIGHT: 1em; MARGIN-RIGHT: 0.5em; WHITE-SPACE: nowrap; = TEXT-DECORATION: none } #b-sms A:hover { COLOR: #fff; TEXT-DECORATION: underline } } @media All =20 { #flagi { PADDING-RIGHT: 1px; DISPLAY: none; PADDING-LEFT: 1px; Z-INDEX: 300; = PADDING-BOTTOM: 1px; PADDING-TOP: 1px; TOP: 7px; BACKGROUND-COLOR: #333 } #unflagi { PADDING-RIGHT: 1px; DISPLAY: none; PADDING-LEFT: 1px; Z-INDEX: 300; = PADDING-BOTTOM: 1px; PADDING-TOP: 1px; TOP: 7px; BACKGROUND-COLOR: #333 } } @media Handheld =20 { #flagi { DISPLAY: none! important } #unflagi { DISPLAY: none! important } } #flagi-body { PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: = 10px; PADDING-BOTTOM: 3px; LINE-HEIGHT: 14px; PADDING-TOP: 3px; = FONT-FAMILY: "Trebuchet MS", Vedana, Arial, Sans-serif; = BACKGROUND-COLOR: #ffff99; TEXT-ALIGN: center } #flagi-body A { FONT-SIZE: 10px; COLOR: #3366cc; TEXT-DECORATION: none } #flagi-body A:hover { TEXT-DECORATION: underline } #unflagi-body { PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: = 10px; PADDING-BOTTOM: 3px; LINE-HEIGHT: 14px; PADDING-TOP: 3px; = FONT-FAMILY: "Trebuchet MS", Vedana, Arial, Sans-serif; = BACKGROUND-COLOR: #ffff99; TEXT-ALIGN: center } #unflagi-body A { FONT-SIZE: 10px; COLOR: #3366cc; TEXT-DECORATION: none } #unflagi-body A:hover { TEXT-DECORATION: underline } ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-css/navbar/2433223533-1.css #b-navbar { COLOR: #47a; BORDER-BOTTOM: #024 1px solid; BACKGROUND-COLOR: #036 } #b-search TABLE { BACKGROUND: url(../../img/navbar/1/corner.gif) #147 no-repeat left = bottom } #b-query { BORDER-RIGHT: #47a 1px solid; BORDER-TOP: #47a 1px solid; BORDER-LEFT: = #47a 1px solid; BORDER-BOTTOM: #47a 1px solid } #b-search A { COLOR: #9cf } #b-search TD { COLOR: #fff } #b-search A:hover { COLOR: #fff } #b-sms A { COLOR: #9cf } #b-sms A:hover { COLOR: #fff } #navbar-logo { BACKGROUND-IMAGE: url(../../img/navbar/1/logobar.gif); WIDTH: 24px; = HEIGHT: 24px } #b-search-this { BACKGROUND: #114477 } .bt1 { BACKGROUND-COLOR: #4477aa } .bt2 { BORDER-RIGHT: #4477aa 1px solid; BORDER-LEFT: #4477aa 1px solid; COLOR: = #99ccff; BACKGROUND-COLOR: #114477 } DIV.bt2:hover { BACKGROUND-COLOR: #4477aa } #bt-flag { PADDING-LEFT: 8px; BACKGROUND: url(../../img/navbar/1/flag.gif) = no-repeat left 50% } ------=_NextPart_000_0000_01C8074A.AC82B280 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_0000_01C8074A.AC82B280 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_0000_01C8074A.AC82B280 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/v-app/scripts/1118085881-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= 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= s=3D""; for (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_0000_01C8074A.AC82B280 Content-Type: multipart/alternative; boundary="----=_NextPart_001_001B_01C8074A.AC876D70" ------=_NextPart_001_001B_01C8074A.AC876D70 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://theexperienceonline.blogspot.com/ =EF=BB=BF The Experience with Steve Fox
skip to main = | skip to = sidebar=20

Friday, September 28, 2007

Do=20 you like a good ghost story?

If you enjoy curling up on the couch during a dark and = stormy night=20 with a good book... Then make sure you listen to The Experience Thursday October = 4th.

My=20 guest will be Carlotta G. Holton, the author of "Touching the Dead". A = wonderful=20 collection of 17 eerie short stories based on ethnic superstitions and = legends,=20 described as a seething sorcerer=E2=80=99s cauldron of madness revenge, = human sacrifice=20 and murder.

Carlotta is an award-winning author, editor and = journalist,=20 who's new book is a must read for anyone looking for a good = scare.
You can=20 pick up your copy below!

Thursday, September 27, 2007

Is=20 The Earth Hollow?

That answer could be answered with proof in 2008 when an = expedition=20 to explore the North Pole takes place.
Join me on Thursday October = 11, 2007=20 at 6pm EST when author Rodney Cluff appears on The Experience. He'll share evidence = that=20 could prove the existence of a Hollow Earth and it's importance on our=20 civilization.

Older=20 Posts

This Weeks Show 10/04/07 - Spooky Stories

Enjoy last weeks show by clicking the media = player=20 below!
  =

What's On Tap

  • Thursday Oct. 11th - Hollow Earth Theory with Rodney Cluff=20
  • Thursday Oct. 18th - Automatic Writing with Irma Slage
 =20

Stay Informed

Click here to subscribe to our mailing list
  =
  =
 

Market Place

Unleash Your Inner Psychic!
Click=20 Here!

How To Hunt Ghosts! Click Here!

Sound Recordings For Astral Projection, Meditation, Past Life = Regression, and=20 MORE!
Click Here!

The Beginners Guide to Tarot Click=20 Here!

Astrological Natal and Love Charts Click=20 Here!

Reiki Secrets Revealed! Click=20 Here!

Underground Witchcraft Secrets! Click=20 Here!

Everything For Your Intuition: How To Access, Strengthen = And=20 Utilize It. The Tools And Information You Need To Succeed And Improve = Your Life=20 Now! Click=20 Here!

Masonic Secrets Revealed. The Secret Ceremonies And Oaths Of The = Masons=20 Exposed! Click Here!

  =

Thanks For Stopping By

  =
------=_NextPart_001_001B_01C8074A.AC876D70 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/navbar.g?targetBlogID=8867931973556657676&blogName=The+Experience+with+Steve+Fox&publishMode=PUBLISH_MODE_BLOGSPOT&navbarType=BLUE&layoutType=LAYOUTS&homepageUrl=http%3A%2F%2Ftheexperienceonline.blogspot.com%2F&searchRoot=http%3A%2F%2Ftheexperienceonline.blogspot.com%2Fsearch =EF=BB=BF
Notify Blogger about objectionable content on this page.
You flagged this blog as having objectionable content.
Send=20 As SMS
------=_NextPart_001_001B_01C8074A.AC876D70-- ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://rcm-images.amazon.com/images/I/11IQK1GwgyL._SL110_.jpg /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCABuAEgDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5FuFt 20uECKRLuNmMhIOHQ4x9Mc/nWbipmurlgQ1xKQeDlzzUOauclJ6CirCkEYJBAPSkrdtNQtvItkld VeOF41ZogwjYtkNjHPGR7Uk93pUkF2Ui8t2aTyk8odGZSvPbAB/Oq5Fa9yeZ32MZUdgSqk4GTgdB SFWCgkEA9DW+2q2kd3NLblSjxFEX7OoCAupCn1wAeagF/ZRyF4oVBAn2bogQCx+Tg+n6U+SPcFJ9 jGxxSCuo8yxk0W/e3eCF5ZJCqnap2fKQMdc8EADjk1y9TUhy21uOMriUUUVmUFFFFAC496u6Pbw3 N00c3mbRDI42dcqhYfyql+FXYLG8Nq99EjpFHghxkZOQOPxNXBa7XFLY0V0i1uBZCGZ4nmaGN9y5 UFw3I5/2envWdq1pHaXXlRStIpUMCyFSM9uad9g1H7QIPs83mbd4UjnAOM/nx9eKBY301vPeujlI hl3fOSdwXH1yRVy1VlHUiOj1Zn0UUViaBRRRQAtFfoLbfsffC6SCKRrjW8sgJ/0kdx9Kf/wx18Lf +fjW/wDwJH+FXyL+Zfj/AJE8z7H571pwaq8VksCwoXQBVkJOQoffjHTrX3r/AMMdfC3/AJ+db/8A Akf4Uf8ADHXwt/5+Nb/8CR/hVR93aX5ieu6PhT/hILj7ebwwhm2YUGViVO/dkHORzxgdvzqvNqzy Wk0LQR7pQV3gnKqZBJjHTqK+8/8Ahjn4W/8APxrf/gSP8KP+GOPhb/z8a1/4Ej/CqdRveX9fcSkl 9k/Peiv0I/4Y6+Fv/Pxrf/gSP8KP+GOvhb/z8a3/AOBI/wAKz5F/Mvx/yL5n2Pz3or9CP+GOvhb/ AM/Gt/8AgSP8KKORfzL8f8gu+x7zpmp272sCTMsMnlj5XcA+laasGGVII9q4CKOa6haG4iaC1uU2 K5/188uMDA7KtZTWvivRtZltdK12O6s4XQmCYcpuBwrN6nHXpyK+YhnNWD9+HNHut7+nodv1eMtn Znq3ajtXDL40u7NY21PSpoY33HeR242jIyCeT6dK0tG8a6Vqkwit4bzJfZu8klQfcjpXoUc3wtWX KpWfZ6GUsPOKvbQ6iqt9eW9lbm4uW2RBlVmx0yQAT7ZPWp4nEi5AI+oxXnXx4vLiXwqnhTSo2uNX 8Qyi0t4UbDKnWSU+iqOSeOor0JTtFtamL0O9t722ubCO+tZVuLaWMSRyRncHUjII9RisPVPG3h3S Y1k1u/GkQOcLcXymKDPYGU/ICewLA1taZYx2OlW1ghykEKxA4xnAxmqWteGtH1mwnsdWs4r22nAD xzKGU4xjg8dqiTqK3KkNWILXxt4Nutv2XxboM+8Ar5eowtuB6Yw3NFWNO8O6bpthFY2EKwW8ShUj CgqAO2MUVHNW/l/ELI5/xfJrFppNlfaPZebfKygjqpjC9PYZIP4Vwtrqfijwzaz6kmmtqU+pXiiS GVCd4YFnwBjAAHpjmvarVVexhV1DAxLkEZB4FSlF4wq8dOOlebWyh1K3tI1GrapW69zqp4lQhyuN zjry41qSbTLa00VEa7cvcsWBitYurMeMM7dAO2cmumsrc2VuUiiV2Zix2/KP1Jq9TFJz8x7nFd1L CQpvm3ffQwlUclaxRF/cJKVntCi4+UxsZCfqAOPzrzjw/a+Kb74zXurz2j22nrD5YuJFBbyQx2wq Ocbm+Ykdh9K9YpAoGcAc9acsNKck3J2Tv2/Im67DqKKK7SQooooA+Qbf9tfR4oI4z4IvDsULn7Yv Yf7tSf8ADbejf9CPef8AgYv/AMTXxFRWnOv5V+P+ZPK+59u/8Nt6N/0I95/4GL/8TTf+G2NF4J8E XhIOR/pa/wDxNfGFqdOFtKLlJzP/AMsyhG0cd/xqWRtICLsS6ZwV3ZI2t6+4qHUV7co+TzPsv/ht zRf+hHvP/Axf/iaP+G3NF/6Ee8/8DF/+Jr43mk0XEZhhuwd6mQMwxtwMgfjn9KRpNG82MrBdhOd6 lgc9MY/8e/Sj2y/l/r7xcnn/AF9x9lf8Nt6N/wBCPe/+Bi//ABNH/Dbejf8AQj3v/gav/wATXxjP Lp3kssFvNvOcM79Onp/wL86oZqozT+yHJ5n27/w23o3/AEI97/4GL/8AE0V8RUU+dfyr8f8AMOV9 xKKKKzKLMVncyoHjiZlIByPrj+dPGn3RAIj4PQ5GD0/xqJbqdU2LLIFxjAbjrmgXM4UATSADoN3T /OBV6E6jjaXILgxMCkYkbPZT3/WiOznkiEixlkIJyCO1Kt7coXPnNmRNjE8kr6c1Ek8qKVSRlBGC AaPdDUmbT7tWIMJOOuCPTNVKna6uCMGaTH+9UFS7dBq/UKKKKQz/2Q== ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://rcm-images.amazon.com/images/G/01/buttons/buy-from-tan.gif R0lGODlhWgAcAMQaAO/vzQICZw0NC////z4+NaitcMzMmW9vX/f25K+vlpSUf97evjs7lMHApdHR sunpyPepV/5+DfuSLu+5dPHrxu/gsvXFgsfH3vLUnvPs2f///wAAAAAAAAAAAAAAAAAAACH5BAEA ABoALAAAAABaABwAAAX/oCaOZGmeaKqubDsyTCDPdG3feK7vPHwyl4FwSCwaj8ikcsnMGA6MEnCA qFqv2Kx2y+16v4hFQREVTRGAtHrNbrvf8Lh8nhZDzUI1QSAgLOiAgYKCBmR4A3oHCwKKCQALCZB/ DQ6DlpdwBgUBh4mLCgkCAKEAAgqljpiqqpqcGgx5aXt8kKKkBwcNoqu8lq2dsgcABAekpAqMwmwJ s44EewTIBA4PB3zC0sTVfc4Hzw1p3gTg4gkN4greCucAv6+xw8LPoQvIaXynbPN9D9d8e7lMWWvQ QMEeBcgMCljEiNEoPwYNQoomwAGyBswcgHMHC5Gsfw0WPdtlzU09a34c/6oUlsCbAEcO+gwThSwU gVI3caVpQCzYTZ6PCDxI4y4AvDaQ1nhzA5Dfyn4Bib18sOfPHgAJVeZUFi+YMKAL/BDdJMKox6Bc 2VhLxcZpRUZQ+yGsaG0uN2sOBmrF+hPXTQfRft4M+6cdWQ1m1Qx8Q+kNtD26DsRlpKtPMmLPYl4r JYwRQswKwqpjBgCsWMOuOqbJO24BRkfpKkE6Vy9fvUgOKjROUIn3qNDUHEwY/sdiKnOjCDq4vRrU I3CuATxoMBQ1MGSMbKaT6iCUy7ptLEyoMKfCcAkUemU6rDrczVCVTMW7dbNneAkSLFRIv4ZCBQsQ QACgeuulBs9SpKAyn5ooS9nXRgUQRCChBAFCIMGEE1BgAQYEvsHRge/tIp8p9HUFBwUYWChhBBJM gAF//HXYxodnIbhLNrUA0GBaMnbI0QVoxBFdj0SuVwYMQAZZ5JJ0LKDJHWYwUIABVFZp5ZVYZqnl llx26SWVBUD5gpQFlGnmmWimqeaabLbp5pthliFFDDzUaeedeN7ggwt89unnn4AGKuiggoYAADs= ------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://rcm.amazon.com/e/cm?t=theexpe-20&o=1&p=8&l=as1&asins=1563153327&fc1=F7EFEF&IS2=1<1=_blank&lc1=0000FF&bc1=000000&bg1=FFF7F7&f=ifr

Touching the Dead

Carlotta G. Holton...

Best Price $9.14
or Buy New = $11.01

=20

Privacy Information

------=_NextPart_000_0000_01C8074A.AC82B280 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.blogger.com/widgets/2927639132-widgets.js var = w__a=3Dthis;if(!Function.prototype.apply){Function.prototype.apply=3Dfunc= tion(a,b){var c=3D[],d,e;if(!a)a=3Dw__a;var f=3Db||[];for(var = g=3D0;g=3D0;c--){this[c+b]=3Dthis[c]}for(var = d=3D0;d0)b+=3D", ";var = d=3DString(a.arguments[c]);if(d.length>40){d=3Dd.substr(0,40)+"..."}b+=3D= d}b+=3D")\n";b+=3Dw_ea(a.caller);return b}catch(e){return"[Cannot get = stack trace]: "+e+"\n"}}var w_Ca;var w_w=3Dnull,w_1=3Dfalse;function = w_Aa(){if((w_w=3D=3Dnull||w_w.closed)&&!w_1){try{w_1=3Dtrue;w_w=3Dwindow.= open("","debug","width=3D700,height=3D500,toolbar=3Dno,resizable=3Dyes,sc= rollbars=3Dyes,left=3D16,top=3D16,screenx=3D16,screeny=3D16");w_w.blur();= w_w.document.open();w_1=3Dfalse;=0A= var a=3D"To turn off this debugging window,hit = 'D' inside the main caribou window, then close this = window.
";w_fa(a)}catch(b){}}}function = w_Ba(a,b){if(!w_ga){if(typeof = w_k!=3D"undefined"){w_k(w_la(a))}return}try{var c=3D(new = Date).getTime()-w_Ca,d=3D"["+c+"] = "+w_la(a).replace(/\n/g,"
")+"
";if(b=3D=3D1){d=3D"Error: = "+d+"";w_w.focus()}}catch(e){}w_fa(d)}function = w_fa(a){if(!w_ga){return}try{w_Aa();w_w.document.write(a);w_w.scrollTo(0,= 1000000)}catch(b){}}=0A= ;function w_S(a){if(a in w__){return w__[a]}return = w__[a]=3Dnavigator.userAgent.toLowerCase().indexOf(a)!=3D-1}var = w__=3D{};function w_ca(){return w_S("msie")&&!window.opera}function = w_4a(a){if(typeof Error!=3D"undefined"){throw new Error(a||"Assertion = Failed");}else{throw a;}}function = w_Ia(a){if(a=3D=3D=3Dundefined)a=3D"Assertion failed";if(typeof = w_U!=3D"undefined")w_U(a+"\n");w_4a(a)}function = w_R(a,b){if(!a){if(b=3D=3D=3Dundefined)b=3D"Assertion = failed";w_Ia(b)}}function = w_sa(a,b){a.style.display=3Db?"":"none"}function w_Oa(a,=0A= b){a.style.display=3Db?"block":"none"}function = w_Pa(a,b){a.style.display=3Db?"inline":"none"}function = w_l(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_la(a){if(!a)return"";return = a.replace(w_Va,"&").replace(w_2a,"<").replace(w_1a,">").replace= (w_3a,""")}var w_3a=3D/\"/g;function w_Xa(a){return = document.getElementById(a)}function w_Ya(a){return document.all[a]}var = w_Wa=3D=0A= document.getElementById?w_Xa:w_Ya;function = w_k(a){try{if(window.parent!=3Dwindow&&window.parent.log){window.parent.l= og(window.name+"::"+a);return}}catch(b){}var c=3Dw_Wa("log");if(c){var = d=3D"

"+new Date+""+a+"

";c.innerHTML=3Dd+c.innerHTML}else{window.= status=3Da}};function w_g(){}w_g.raise=3Dfunction(a){if(typeof = Error!=3D"undefined"){throw new Error(a||"Assertion Failed");}else{throw = a;}};w_g.fail=3Dfunction(a){if(a=3D=3D=3Dundefined)a=3D"Assertion = failed";if(!(w_U=3D=3D=3Dundefined))w_U(a+"\n");w_g.raise(a)};w_g.isTrue=3D= function(a,b){if(!a){if(b=3D=3D=3Dundefined)b=3D"Assertion = failed";w_g.fail(b)}};w_g.equals=3Dfunction(a,b,c){if(a!=3Db){if(c=3D=3D=3D= undefined){c=3D"AS_Assert.equals failed: <"+a+"> !=3D = <"+b+">"}w_g.fail(c)}};w_g.typeOf=3Dfunction(a,b,c){if(typeof = a=3D=3Db)return;if(a||a=3D=3D""){try{if(b=3D=3D=0A= w_g.TYPE_MAP[typeof a]||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_g.fail(c)};w_g.TYPE_MAP=3D{string:String,number:Number,"boolean":Bo= olean};w_g.numArgs=3Dfunction(a,b){var = c=3Dw_g.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_g.fail(b)}};var w_Z;function w_Sa(){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_0a=3D0,w_aa=3D0;if("undefined"=3D=3Dtypeof = w_k){w_k=3Dfunction(){}}function w_ka(a){var = b=3D-1;try{b=3Da.status}catch(c){}return b}function w_Ja(a){var = b=3Dnull;try{b=3Da.statusText}catch(c){}return b}function = w_Ka(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_k("Message = ("+b+") handling failed: "+f);throw f;}}var = g=3Dw_ka(a);if(200=3D=3D=3Dg){w_k("Message ("+b+") received after = "+((new Date).getTime()-c)+" ms");try{var h=3D(new = Date).getTime();if(e&&a.responseText.length){eval(a.responseText)}w_k("Me= ssage ("+=0A= b+") processing took "+((new Date).getTime()-h)+" = ms")}catch(f){w_k("Message ("+b+") processing failed: = "+f);alert(f+"\n"+f.stack+"\n\n"+a.responseText);throw f;}}else = if(204=3D=3Dg){w_k("Message ("+b+") received after "+((new = Date).getTime()-c)+" ms")}else{w_k("Message ("+b+") failed with response = "+g+" "+w_Ja(a)+" after "+((new Date).getTime()-c)+" = ms.")}}finally{--w_aa}}}function w_La(a,b,c){var d=3D"";if(b){var = e=3D"";for(var f=3D0;f=3D0;){l=3Dl.substring(0,m)+"= &"+l.substring(m+1)}w_k("Message ("+i+") sent: POST = "+l+".");++w_aa;w_Ta(j,a,d,n)};function = w_j(a,b,c,d,e,f){this.instanceId=3Da;this.sectionId=3Db;this.markups=3Dc;= if(d){this.rootElement=3Dd}if(e){this.data=3De}if(f){this.q=3Df;if(!w_j.I= sValidDisplayMode(f)){throw"bad display mode: = "+f;}}else{this.q=3Dw_j.DISPLAY_MODE_NONE}this.isNew=3Dfalse}w_j.IsValidD= isplayMode=3Dfunction(a){return = a=3D=3Dw_j.DISPLAY_MODE_SNIPPET||a=3D=3Dw_j.DISPLAY_MODE_FULL||a=3D=3Dw_j= .DISPLAY_MODE_LAYOUT||a=3D=3Dw_j.DISPLAY_MODE_NONE};w_j.DISPLAY_MODE_FULL= =3D"displayModeFull";w_j.DISPLAY_MODE_SNIPPET=3D"displayModeSnippet";w_j.= DISPLAY_MODE_LAYOUT=3D=0A= "displayModeLayout";w_j.DISPLAY_MODE_NONE=3D"displayModeNone";function = w_b(a){this.Jb=3Dtrue;this.ya=3Dnew = w_u(this);this.e=3Da;this.s=3Dnull}w_b.DATA_NAMESPACE_PREFIX=3D"data";w_b= .ACTION_NAMESPACE_PREFIX=3D"b";w_b.INTERPRET_ATTR_NAMESPACE_PREFIX=3D"exp= r";w_b.prototype.Da=3Dfunction(){var = a=3Dthis.e.rootElement;a.innerHTML=3D"";if(this.z()=3D=3Dw_j.DISPLAY_MODE= _LAYOUT){a.appendChild(this.L("layout"))}else{a.appendChild(this.L("main"= ))}return = a};w_b.prototype.ib=3Dfunction(a){this.s=3Da};w_b.prototype.j=3Dfunction(= ){return this.e};=0A= w_b.prototype.m=3Dfunction(a){return = document.getElementById(this.e.instanceId+"_"+a)};w_b.prototype.A=3Dfunct= ion(a){var b=3Dthis.m(a);if(!b){throw"did not find element for id = "+a;}return b};w_b.prototype.i=3Dfunction(){return = this.e.data};w_b.prototype.ia=3Dfunction(a){return = this.e.data=3Da};w_b.prototype.Va=3Dfunction(){return = this.e.isNew};w_b.prototype.hb=3Dfunction(a){return = this.e.isNew=3Da};w_b.prototype.L=3Dfunction(a,b){var = c=3Db;if(!c){c=3Dthis.i()}if(!c){c=3D{}}var d=3Dnew = w_i;d.w("widget",this.Ka());d.za(c);var e=3D=0A= this.Z(a,d,w_i.DEFAULT_DICTIONARY_KEY);return = this.Y(e,document)};w_b.prototype.Ka=3Dfunction(){var = a=3D{};a.type=3Dthis.s.d();a.instanceId=3Dthis.e.instanceId;a.sectionId=3D= this.e.sectionId;a.actionUrl=3Dw_.qa;var = b=3Dw_.sb+"&widgetType=3D"+this.s.d()+"&widgetId=3D"+this.e.instanceId+"&= action=3D"+w_.EDIT_WIDGET_ACTION;a.quickEditUrl=3Db;return = a};w_b.prototype.Z=3Dfunction(a,b,c){var = d=3Dthis.Pa(a);w_g.isTrue(d!=3Dnull,"Markup chunk not found for "+a);var = e=3Dd.varName?d.varName:"",f=3Db.i(c);w_g.isTrue(f!=3Dnull,"No data = found for call: "+=0A= c);b.w(e,f);var g=3Dthis.D(d.rootNode,b);b.fa(e);return = g};w_b.prototype.D=3Dfunction(a,b){w_g.isTrue(a!=3Dnull,"Null node");var = c=3Da;if(a.attributes){var d=3D[],e=3D[];for(var = f=3D0;f"+a.template+"\n",c=3D= this.Ya(b);a.parsedTemplate=3Dthis.C(c);return = a};w_b.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_e.ProcessForm(document.forms[b],a);if(e.success){w_.SaveWidget(e= .values,c,d)}};function = w_(){}w_.Init=3Dfunction(a,b,c){w_.v=3D{};w_.sb=3Da;=0A= w_.qa=3Db;w_.Ub=3Dc;w_.ub=3Dnull;if(!w_.xa){w_.xa=3D{}}};w_.TrapClicks=3D= function(a){var = b;try{b=3Da.document.getElementsByTagName("A")}catch(c){return}for(var = d=3D0;d0&&a.substring(0,4)!=3D"h= ttp"){a=3D"http://"+a}return a};=0A= w_.GetFirstElementInElementWithClass=3Dfunction(a,b){if(w_l(a,b)){return = a}if(a){var c=3Da.childNodes.length;for(var d=3D0;db){return = LayoutsMessages.NUMBER_TOO_LARGE+" "+b}return undefined}};function = w_i(){this.k=3D=0A= [];for(var a in = w_.ub){this.k[this.k.length]=3Da}}w_i.DEFAULT_DICTIONARY_KEY=3D"";w_i.MAX= _DICTIONARY_DEPTH=3D50;w_i.SEPARATOR_CHAR=3D".";w_i.prototype.w=3Dfunctio= n(a,b){if(this.k.length>=3Dw_i.MAX_DICTIONARY_DEPTH){w_g.raise("Cannot = add another dictionary: = "+a)}if(a.indexOf(w_i.SEPARATOR_CHAR)>-1){w_g.raise("Cannot add = dictionary name containing '.': "+a)}var = c=3D{};c.name=3Da;c.data=3Db;this.k[this.k.length]=3Dc};w_i.prototype.fa=3D= function(a){var = b=3Dthis.k[this.k.length-1];if(b.name!=3Da){w_g.raise("Dictionary "+a+" = is not the last one, and can't be deleted: "+=0A= b.name)}this.k.splice(this.k.length-1,1)};w_i.prototype.J=3Dfunction(a){i= f(a=3D=3Dnull)a=3Dw_i.DEFAULT_DICTIONARY_KEY;for(var = b=3Dthis.k.length-1;b>=3D0;--b){if(this.k[b].name=3D=3Da){return = this.k[b].data}}return null};w_i.prototype.W=3Dfunction(){return = this.J(w_i.DEFAULT_DICTIONARY_KEY)};w_i.prototype.za=3Dfunction(a){this.w= (w_i.DEFAULT_DICTIONARY_KEY,a)};w_i.prototype.i=3Dfunction(a){var = b=3Dthis.J(a);if(b)return b;var = c=3Da.split(w_i.SEPARATOR_CHAR);if(c.length=3D=3D1){b=3Dthis.W();return = b[a]}b=3Dthis.J(c[0]);var d=3D0;if(b){d=3D=0A= 1}else{b=3Dthis.W()}for(var e=3Dd;e=3D500){if(b.responseText.length){document.body.innerHTM= L=3Db.responseText}else{alert(LayoutsMessages.SERVER_ERROR)}return = false}if(a){return a(b)}else{return true}}};function = w_M(a){this.a=3Da}w_M.WIDGET_TYPE_NAME=3D"AdSense";w_M.prototype.d=3Dfunc= tion(){return w_M.WIDGET_TYPE_NAME};w_M.prototype.b=3Dfunction(){return = this.a};w_M.prototype.c=3Dfunction(a,b){this.a.g(b)};var = _AdSenseView=3Dw_M;function = w_d(a){this.a=3Da;this.e=3Da.j()}w_d.WIDGET_TYPE_NAME=3D"BlogArchive";w_d= .POST_LIST_CLASS=3D"posts";w_d.INTERVAL_EXPANDED_VALUE=3D"expanded";w_d.I= NTERVAL_COLLAPSED_VALUE=3D"collapsed";w_d.LOADING_MSG=3D"loading...";w_d.= POST_COUNT_CLASS=3D"post-count";w_d.POST_COUNT_LINK_CLASS=3D"post-count-l= ink";w_d.MENU_ROOT_ID=3D"ArchiveMenu";w_d.TOGGLE_OPEN_CLASS=3D"toggle-ope= n";w_d.Ib=3D"▼ ";w_d.Kb=3D"► ";w_d.prototype.d=3Dfu= nction(){return = w_d.WIDGET_TYPE_NAME};w_d.prototype.b=3Dfunction(){return = this.a};w_d.prototype.f=3D=0A= function(){return = false};w_d.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure"){this.a.g(b)= }else = if(a=3D=3D"getTitles"){this.nb(b)}else{this.widgetInfo.data=3Db;w_.Displa= yWidget(this)}};w_d.prototype.h=3Dfunction(){var = a=3D{};a.select=3Dfunction(i){return i&&w_l(i,"toggle")};var = b=3Dthis.a.m("ArchiveList");if(!b)return;var = c=3Dw_3(this.e.rootElement,a),d;if(c.length>0&&c[0].currentStyle){d=3Dc[0= ].parentNode.currentStyle.color}for(var e=3D0;e"+e.title+"";c.appendChild(f)}};w_d.prototype.La=3Df= unction(a){var b=3Dthis.e.rootElement.getElementsByTagName("A");for(var = c in b){var d=3Db[c];if(d.href=3D=3Da)return = d.parentNode}};w_d.prototype.Wa=3Dfunction(a){var = b=3Da.getElementsByTagName("UL");if(b.length>0&&!w_l(b[0],"posts")){retur= n}var = c=3Dthis.Na(a),d=3Da.getElementsByTagName("LI"),e=3Dd.length;return = e-1};w_f.prototype.aa=3Dfunction(a){a=3Da||window.ev= ent;var b=3Da.target||=0A= a.srcElement;this.a.p("nextposts",{path:b.href});return = false};w_f.prototype.Ba=3Dfunction(a){var = b=3D"";if(document.selection){b=3Ddocument.selection.createRange().text}e= lse 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};=0A= var _BlogView=3Dw_f;function = w_v(a){this.a=3Da}w_v.WIDGET_TYPE_NAME=3D"CustomSearch";w_v.prototype.d=3D= function(){return = w_v.WIDGET_TYPE_NAME};w_v.prototype.b=3Dfunction(){return = this.a};w_v.prototype.f=3Dfunction(){return = false};w_v.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure"){this.a.g(b)= }};w_v.prototype.h=3Dfunction(){if(!window._UDS_bootstrapped){var = a;if(window.location.host.match(/blogger\.com$/)){a=3D"ABQIAAAAVBJEtyJuLx= gUs8KlzeA1lRQpkWYODHKIJGlKH8M-8R98XOejsxRkHYkMWejKfPos1RBuAqHID9wA9Q"}els= e{a=3Dthis.a.i().key}w_$("http://www.google.com/uds/api?file=3Duds.js&v=3D= 1.0&source=3Duds-vbpe&key=3D"+=0A= a);w_Y(w_ua);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.getElementsByTagN= ame("body")[0]}e.insertBefore(b,e.firstChild)}var f=3Dthis.b();=0A= if(!w_9()){w_Y(w_da.bind(f))}else{window.setTimeout(w_da.bind(f),0)}};fun= ction 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=3Dc}a.style.visibility=3D"visible"};w_s.prototype= .c=3Dfunction(a,b){if(a=3D=3D"configure"){this.a.g(b)}};var = _ImageView=3Dw_s;var = w_5=3D"changeImageLink",w_Q=3D"imageChoiceTable",w_E=3D"imgUrlText",w_F=3D= "picDiv",w_4=3D"bufferImage",w_h=3Dnull,w_I,w_G,w_J,w_H,w_A,w_t,_SIV_sect= ionWidth;function = _SIV_setConfigurationOptions(){if(w_h=3D=3Dnull){w_e.SetError(w_E,WidgetM= essages.SIV_NO_IMAGE);return}var = a=3Ddocument.forms.config.widgetId.value,b=3D_SIV_createConfigurationOpti= ons(document.getElementById("title").value,document.getElementById("image= Caption").value);w_.SaveWidget(b,a,w_s.WIDGET_TYPE_NAME)}function = _SIV_createConfigurationOptions(a,=0A= b){var = c=3Ddocument.forms.config.securityToken.value;if(w_h=3D=3Dnull){return}va= r d=3Dw_h.src;d=3Dw_.MaybePrependHttp(d);var = e=3Dw_h.height,f=3Dw_h.width;if(w_G!=3D""&&w_t=3D=3D-1){w_t=3De}if(w_I!=3D= ""&&w_A=3D=3D-1){if(w_H_SIV_sectionWidth){e=3D=0A= (e*_SIV_sectionWidth/f).toFixed();f=3D_SIV_sectionWidth}}}else{if(w_I!=3D= ""){d=3Dw_I;f=3Dw_J;e=3Dw_A}}var = i=3D{sourceUrl:d,height:e,width:f,shrinkToFit:h,securityToken:c,uploadedP= hotoUrl:w_I,uploadedPhotoWidth:w_J,uploadedPhotoHeight:w_A,resizedPhotoUr= l:w_G,resizedPhotoWidth:w_H,resizedPhotoHeight:w_t,sectionWidth:_SIV_sect= ionWidth};if(a){i.title=3Da}if(b){i.caption=3Db}return i}function = _SIV_preloadImageFromWeb(){var = a=3Ddocument.getElementById(w_E),b=3Da.value;if(!b||b.length=3D=3D0||b=3D= =3D"http://"){return}if(b.substring(0,=0A= 4)!=3D"http"){b=3D"http://"+b}_SIV_startAnimation();_SIV_preLoadImage(b)}= var w_6,w_7;function _SIV_imgUrlTextOnKeyUp(a,b){var = c=3Da||window.event;if(c.keyCode=3D=3D9)return;document.getElementById("f= romWeb").checked=3D"true";if(w_7!=3Dnull){window.clearTimeout(w_7)}w_7=3D= window.setTimeout(function(){var = d=3Ddocument.getElementById(w_E).value;if(w_6!=3Dd.toLowerCase()){_SIV_pr= eloadImageFromWeb();w_6=3Dd.toLowerCase();_SIV_resetUploadedPhotoMetadata= ()}},1000)}function _SIV_startAnimation(){var = a=3Ddocument.getElementById("picImg");=0A= a.src=3D"img/icon_inprogress.gif";a.style.width=3D"200px";a.style.height=3D= "200px";document.getElementById(w_F).style.height=3Da.style.height;_SIV_m= akeVisible(w_F);_SIV_makeInvisible(w_Q)}function = _SIV_stopAnimation(){_SIV_makeInvisible(w_F);_SIV_makeVisible(w_Q);_SIV_m= akeInvisible(w_5)}function = _SIV_processUploadedImage(a,b,c,d){w_I=3Da;w_G=3Db;w_J=3Dc;w_H=3Dd;w_A=3D= -1;w_t=3D-1;_SIV_preLoadImage(b)}var w_8=3D0;function = _SIV_preLoadImage(a,b){if(typeof b=3D=3D"undefined")b=3Dtrue;var = c=3Ddocument.getElementById(w_4),d;if(b){d=3D=0A= c.onLoad}c.onload=3Dfunction(){_SIV_imgOnLoad(d)};c.onerror=3D_SIV_imgOnE= rror;c.src=3Da}function = _SIV_changeImage(a){_SIV_makeVisible(w_Q);_SIV_makeInvisible(w_F);a.style= .display=3D"none";document.getElementById(w_E).value=3D"http://";w_h=3Dnu= ll;var = b=3Ddocument.getElementById("uploadFrame").contentWindow;b.location.href=3D= b.location.href}function = _SIV_imgOnLoad(a){w_8=3D0;w_h=3Ddocument.getElementById(w_4);w_e.ClearErr= or(w_E);var = b=3Ddocument.getElementById("picImg");if(w_h.width<300&&w_h.height<300){b= .style.height=3D_SIV_px(w_h.height);=0A= b.style.width=3D_SIV_px(w_h.width)}else = if(w_h.height>w_h.width){b.style.height=3D_SIV_px(300);b.style.width=3D_S= IV_px(300*w_h.width/w_h.height)}else{b.style.width=3D_SIV_px(300);b.style= .height=3D_SIV_px(300*w_h.height/w_h.width)}b.margin=3D5;document.getElem= entById(w_F).style.height=3D_SIV_px(b.height);b.src=3Dw_h.src;_SIV_makeVi= sible(w_F);_SIV_makeInvisible(w_Q);_SIV_makeVisible(w_5);if(typeof = a=3D=3D"function"){a()}}function = _SIV_imgOnError(){if(w_8++<2){window.setTimeout(function(){_SIV_preLoadIm= age(document.getElementById(w_4).src,=0A= false)},2000);return}w_8=3D0;w_e.SetError(w_E,WidgetMessages.SIV_INVALID_= URL);_SIV_makeInvisible(w_F);_SIV_makeVisible(w_Q);_SIV_makeInvisible(w_5= )}function = _SIV_initializeWindow(a,b,c,d,e,f,g){w_I=3Da;w_J=3Db;w_A=3Dc;w_G=3Dd;w_H=3D= e;w_t=3Df;_SIV_sectionWidth=3Dg;var = h=3Ddocument.getElementById(w_E);if(h.value!=3D""){_SIV_preloadImageFromW= eb();w_6=3Dh.value;document.getElementById("title").focus()}}function = _SIV_initFrame(){var = a=3Ddocument.getElementById("uploadFrame");a.height=3Da.contentWindow.doc= ument.body.scrollHeight;=0A= a.allowTransparency=3Dtrue}function _SIV_px(a){return = Math.round(a)+"px"}function = _SIV_makeVisible(a){document.getElementById(a).style.display=3D"block"}fu= nction = _SIV_makeInvisible(a){document.getElementById(a).style.display=3D"none"}f= unction = _SIV_resetUploadedPhotoMetadata(){w_I=3D"";w_G=3D"";w_J=3D-1;w_H=3D-1;w_A= =3D-1;w_t=3D-1}function _SIV_hasLoadedImage(){return w_h}function = _SIV_fromPCTabHandler(a){var = b=3Da||window.event;if(b.keyCode=3D=3D9&&!b.shiftKey){w_ra(document.getEl= ementById("uploadFrame")).getElementById("imageFileName").focus();=0A= return false}return true}function _SIV_fromWebTabHandler(a){var = b=3Da||window.event;if(b.keyCode=3D=3D9&&b.shiftKey){w_ra(document.getEle= mentById("uploadFrame")).getElementById("imageFileName").focus();return = false}return true}function w_ra(a){var = b=3Da.contentWindow||a.contentDocument;if(b.document){b=3Db.document}retu= rn b};function = w_m(a){this.a=3Da;this.e=3Da.j()}w_m.WIDGET_TYPE_NAME=3D"Header";w_m.prot= otype.d=3Dfunction(){return = w_m.WIDGET_TYPE_NAME};w_m.prototype.f=3Dfunction(){return = false};w_m.prototype.b=3Dfunction(){return = this.a};w_m.prototype.c=3Dfunction(a,b){this.a.g(b)};w_m.FilterMap=3D{tit= le:w_e.GetRequiredStringFilter(),description:null,imagePlacement:null,use= Image:null,securityToken:null};w_m.ConfigureWidget=3Dfunction(){var = a;if(_SIV_hasLoadedImage()){a=3D_SIV_createConfigurationOptions()}var = b=3Ddocument.forms.config.widgetId.value,=0A= c=3Ddocument.forms.config.widgetType.value,d=3Dw_e.ProcessForm(document.f= orms.config,w_m.FilterMap);if(d.success){for(var e in = a){d.values[e]=3Da[e]}w_.SaveWidget(d.values,b,c);return = true}else{return = false}};w_m.hideImageOptions=3Dfunction(){document.getElementById("imageO= ptions").style.display=3D"none";return = false};w_m.showImageOptions=3Dfunction(){document.getElementById("imageOp= tions").style.display=3D"";return = false};w_m.removeImage=3Dfunction(a){_SIV_makeInvisible("imagePlacementTa= ble");_SIV_changeImage(a);=0A= _SIV_resetUploadedPhotoMetadata()};var = _HeaderView=3Dw_m;_HeaderView.prototype=3Dw_m.prototype;_HeaderView._Conf= igureWidget=3D_HeaderView.ConfigureWidget;_HeaderView._hideImageOptions=3D= _HeaderView.hideImageOptions;_HeaderView._showImageOptions=3D_HeaderView.= showImageOptions;_HeaderView._removeImage=3D_HeaderView.removeImage;funct= ion = w_p(a,b){this.a=3Da;this.e=3Da.j();this.Qb=3Db}w_p.prototype.b=3Dfunction= (){return this.a};w_p.prototype.d=3Dfunction(){return = this.Qb};w_p.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure"){this.a.g(= b)}};w_p.ConfigureWidget=3Dfunction(a){setFormAndSubmit();var = b=3Ddocument.forms.stuffform.widgetId.value,c=3Ddocument.forms.stuffform.= securityToken.value,d=3Ddocument.getElementById("textarea"),e=3Ddocument.= getElementById("title"),f=3Dd.value;if(a=3D=3D"Text"){f=3Df.replace(/\n/g= ,"
")}var g=3D{content:f,title:e.value,securityToken:c};=0A= w_.SaveWidget(g,b,a)};function = w_X(a){w_p.call(this,a,"Text")}w_X.inherits(w_p);w_X.ConfigureWidget=3Dfu= nction(){w_p.ConfigureWidget("Text")};function = w_W(a){w_p.call(this,a,"HTML")}w_W.inherits(w_p);w_W.ConfigureWidget=3Dfu= nction(){w_p.ConfigureWidget("HTML")};var = _TextView=3Dw_X;_TextView.prototype=3Dw_X.prototype;_TextView._ConfigureW= idget=3D_TextView.ConfigureWidget;var = _HTMLView=3Dw_W;_HTMLView.prototype=3Dw_W.prototype;_HTMLView._ConfigureW= idget=3D_HTMLView.ConfigureWidget;function = w_$(a){document.write('