bplist006>_WebSubresources_WebMainResource_WebSubframeArchives %)-2 _WebResourceResponse_WebResourceData^WebResourceURL_WebResourceMIMETypeOPbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP _Content-EncodingVServer]Last-Modified]Cache-ControlTDate^Content-LengthWExpires\Content-TypeTgzipWGFE/1.3_Thu, 12 Jun 2008 22:28:18 GMTVpublic_Mon, 23 Jun 2008 07:00:43 GMTS570_Wed, 23 Jul 2008 07:00:43 GMT12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13ot} .<APXejr -26JlXO/** * Copyright 2005 Google Inc. * Author: Lexi Baugher * * CSS for collapsible hierarchy of archive links */ #ArchiveList .toggle { cursor: pointer; font-family: Arial, sans-serif; /* this font has support for the dingbats */ } #ArchiveList .toggle-open { /* Work around IE's differently-sized dingbat by resizing up to look like the rest of the characters for this font size. */ _font-size: 1.7em; line-height: 0.6em; } #ArchiveList { text-align: left; } #ArchiveList a.post-count-link, #ArchiveList a.post-count-link:link, #ArchiveList a.post-count-link:visited { text-decoration: none; } #ArchiveList a.toggle, #ArchiveList a.toggle:link, #ArchiveList a.toggle:visited, #ArchiveList a.toggle:hover { color: inherit; /* done in JS for IE */ text-decoration: none; } .BlogArchive #ArchiveList ul li { background: none; list-style: none; list-style-image: none; list-style-position: outside; border-width: 0; padding-left: 15px; text-indent: -15px; margin-left: 0; background-image: none; } .BlogArchive #ArchiveList ul ul li { padding-left: 1.2em; } .BlogArchive #ArchiveList ul { margin: 0; padding: 0; list-style: none; list-style-image: none; border-width: 0; } .BlogArchive #ArchiveList ul ul { margin-top: 5px; } .BlogArchive #ArchiveList ul.posts li { padding-left: 1.3em; } #ArchiveList .collapsed ul { display: none; } _9http://www.blogger.com/widgets/3319451950-blogarchive.cssXtext/css  OIbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP _Content-EncodingVServer]Last-Modified]Cache-ControlTDate^Content-LengthWExpires\Content-TypeTgzipWGFE/1.3_Thu, 12 Jun 2008 22:28:18 GMTVpublic_Mon, 23 Jun 2008 07:00:43 GMTS638_Wed, 23 Jul 2008 07:00:43 GMT12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13hmv'5:IQ^ck &+/ClQO/* backlinks controls */ .backlink-toggle-zippy { padding-right: 11px; margin-right: 0.1em; cursor: pointer; cursor: hand; background: url(http://www.blogger.com/img/triangle_ltr.gif) no-repeat left center; } .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%; width: 90%; margin: 10px auto; position: relative; } .status-msg-border { border: 1px solid #000000; filter:alpha(opacity=40); -moz-opacity:.40; opacity:.40; width: 100%; position: relative; } .status-msg-bg { background-color: #cccccc; opacity:.80; filter:alpha(opacity=30); -moz-opacity:.80; width: 100%; position: relative; z-index: 1; } .status-msg-body { text-align: center; padding: .3em 0; width: 100%; position: absolute; z-index: 4; } .status-msg-hidden { visibility: hidden; padding: .3em 0; } .status-msg-wrap a { padding-left: .4em; text-decoration: underline; } #comments .blogger-comment-icon, .blogger-comment-icon { line-height:16px; background:url(/img/b16-rounded.gif) left no-repeat; padding-left:20px; } #comments .openid-comment-icon, .openid-comment-icon { line-height:16px; background:url(/img/openid16-rounded.gif) left no-repeat; padding-left:20px; } #comments .anon-comment-icon, .anon-comment-icon { line-height:16px; background:url(/img/anon16-rounded.gif) left no-repeat; padding-left:20px; } /* Paging Controls for comments -----------------------------*/ .paging-control-container { float: right; margin: 0px 6px 0px 0px; font-size: 80%; } .unneeded-paging-control { visibility: hidden; } _2http://www.blogger.com/widgets/3597482671-blog.css  Ovbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?ISZNS.objectsWNS.keys@ABCDEFGHJKLMNOPQR VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthZKeep-AliveTEtag\Content-Type_Apache/1.3.41 (Unix)_Sun, 10 Feb 2008 23:17:54 GMTUbytes_Mon, 23 Jun 2008 07:04:52 GMTT5787_timeout=15, max=99_"417cbc-169b-47af8622"12effg6_NSMutableDictionary\NSDictionary12ijj6_NSHTTPURLResponseInternal12lmmn6_NSHTTPURLResponse]NSURLResponse$)2DILbd #/135qv  #1<AP[`m).1MRVjoxO#lbOverlay { position: fixed; top: 0; left: 0; z-index: 99998; width: 100%; height: 500px; } #lbOverlay.grey { background-color: #000000; } #lbOverlay.red { background-color: #330000; } #lbOverlay.green { background-color: #003300; } #lbOverlay.blue { background-color: #011D50; } #lbOverlay.gold { background-color: #666600; } #lbMain { position: absolute; left: 0; width: 100%; z-index: 99999; text-align: center; line-height: 0; } #lbMain a img { border: none; } #lbOuterContainer { position: relative; background-color: #fff; width: 200px; height: 200px; margin: 0 auto; } #lbOuterContainer.grey { border: 3px solid #888888; } #lbOuterContainer.red { border: 3px solid #DD0000; } #lbOuterContainer.green { border: 3px solid #00B000; } #lbOuterContainer.blue { border: 3px solid #5F89D8; } #lbOuterContainer.gold { border: 3px solid #B0B000; } #lbDetailsContainer { font: 10px Verdana, Helvetica, sans-serif; background-color: #fff; width: 100%; line-height: 1.4em; overflow: auto; margin: 0 auto; } #lbDetailsContainer.grey { border: 3px solid #888888; border-top: none; } #lbDetailsContainer.red { border: 3px solid #DD0000; border-top: none; } #lbDetailsContainer.green { border: 3px solid #00B000; border-top: none; } #lbDetailsContainer.blue { border: 3px solid #5F89D8; border-top: none; } #lbDetailsContainer.gold { border: 3px solid #B0B000; border-top: none; } #lbImageContainer, #lbIframeContainer { padding: 10px; } #lbLoading { position: absolute; top: 45%; left: 0%; height: 32px; width: 100%; text-align: center; line-height: 0; background: url(images/loading.gif) center no-repeat; } #lbHoverNav { position: absolute; top: 0; left: 0; height: 100%; width: 100%; z-index: 10; } #lbImageContainer>#lbHoverNav { left: 0; } #lbHoverNav a { outline: none; } #lbPrev { width: 49%; height: 100%; background: transparent url(images/blank.gif) no-repeat; display: block; left: 0; float: left; } #lbPrev.grey:hover, #lbPrev.grey:visited:hover { background: url(images/prev_grey.gif) left 15% no-repeat; } #lbPrev.red:hover, #lbPrev.red:visited:hover { background: url(images/prev_red.gif) left 15% no-repeat; } #lbPrev.green:hover, #lbPrev.green:visited:hover { background: url(images/prev_green.gif) left 15% no-repeat; } #lbPrev.blue:hover, #lbPrev.blue:visited:hover { background: url(images/prev_blue.gif) left 15% no-repeat; } #lbPrev.gold:hover, #lbPrev.gold:visited:hover { background: url(images/prev_gold.gif) left 15% no-repeat; } #lbNext { width: 49%; height: 100%; background: transparent url(images/blank.gif) no-repeat; display: block; right: 0; float: right; } #lbNext.grey:hover, #lbNext.grey:visited:hover { background: url(images/next_grey.gif) right 15% no-repeat; } #lbNext.red:hover, #lbNext.red:visited:hover { background: url(images/next_red.gif) right 15% no-repeat; } #lbNext.green:hover, #lbNext.green:visited:hover { background: url(images/next_green.gif) right 15% no-repeat; } #lbNext.blue:hover, #lbNext.blue:visited:hover { background: url(images/next_blue.gif) right 15% no-repeat; } #lbNext.gold:hover, #lbNext.gold:visited:hover { background: url(images/next_gold.gif) right 15% no-repeat; } #lbPrev2, #lbNext2 { text-decoration: none; font-weight: bold; } #lbPrev2.grey, #lbNext2.grey, #lbSpacer.grey { color: #333333; } #lbPrev2.red, #lbNext2.red, #lbSpacer.red { color: #620000; } #lbPrev2.green, #lbNext2.green, #lbSpacer.green { color: #003300; } #lbPrev2.blue, #lbNext2.blue, #lbSpacer.blue { color: #01379E; } #lbPrev2.gold, #lbNext2.gold, #lbSpacer.gold { color: #666600; } #lbPrev2_Off, #lbNext2_Off { font-weight: bold; } #lbPrev2_Off.grey, #lbNext2_Off.grey { color: #CCCCCC; } #lbPrev2_Off.red, #lbNext2_Off.red { color: #FFCCCC; } #lbPrev2_Off.green, #lbNext2_Off.green { color: #82FF82; } #lbPrev2_Off.blue, #lbNext2_Off.blue { color: #B7CAEE; } #lbPrev2_Off.gold, #lbNext2_Off.gold { color: #E1E100; } #lbDetailsData { padding: 0 10px; } #lbDetailsData.grey { color: #333333; } #lbDetailsData.red { color: #620000; } #lbDetailsData.green { color: #003300; } #lbDetailsData.blue { color: #01379E; } #lbDetailsData.gold { color: #666600; } #lbDetails { width: 60%; float: left; text-align: left; } #lbCaption { display: block; font: 11pt Verdana, Helvetica, sans-serif; font-weight: normal; } #lbNumberDisplay { float: left; display: block; padding-bottom: 1.0em; } #lbNavDisplay { float: left; display: block; padding-bottom: 1.0em; } #lbClose { width: 64px; height: 28px; float: right; margin-bottom: 1px; } #lbClose.grey { background: url(images/close_grey.png) no-repeat; } #lbClose.red { background: url(images/close_red.png) no-repeat; } #lbClose.green { background: url(images/close_green.png) no-repeat; } #lbClose.blue { background: url(images/close_blue.png) no-repeat; } #lbClose.gold { background: url(images/close_gold.png) no-repeat; } #lbPlay { width: 64px; height: 28px; float: right; margin-bottom: 1px; } #lbPlay.grey { background: url(images/play_grey.png) no-repeat; } #lbPlay.red { background: url(images/play_red.png) no-repeat; } #lbPlay.green { background: url(images/play_green.png) no-repeat; } #lbPlay.blue { background: url(images/play_blue.png) no-repeat; } #lbPlay.gold { background: url(images/play_gold.png) no-repeat; } #lbPause { width: 64px; height: 28px; float: right; margin-bottom: 1px; } #lbPause.grey { background: url(images/pause_grey.png) no-repeat; } #lbPause.red { background: url(images/pause_red.png) no-repeat; } #lbPause.green { background: url(images/pause_green.png) no-repeat; } #lbPause.blue { background: url(images/pause_blue.png) no-repeat; } #lbPause.gold { background: url(images/pause_gold.png) no-repeat; }_9http://wang-jheng-dao.myweb.hinet.net/lytebox/lytebox.css Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP VServer]Cache-Control_Content-DispositionTDateWExpires^Content-LengthTEtag\Content-TypeTfife]max-age=86400_)attachment;filename=maandchu_thumb[7].jpg_Mon, 23 Jun 2008 07:04:52 GMT_Tue, 24 Jun 2008 07:04:52 GMTU32826V"bf30"12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13    "$&(*,.5CY^fuz 2?DGchllO:JFIF``C      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?쵵m.ٚ&cLc';O,k\W >-bLQE}^N[

nK!x%2D 2]AMTrBb+ko?(~"nX~VZٚ=Vt1,$ +FTd7O,gP56MO/Q2R$ QV 8Ou"Rn<-'s}}abϬ?W㏊3RFMc{;[K&PiLH%YG$`gBjME'pJ~v}}ab/ %ۯ/muaXʦ=IRH5$ⷅ!|MԼMM_ G5%{d^{kO )(r@e-mo;O>i>߱_X]sD5׽ѯ<ln䙋ď;$Y.HcP ?ÿ[Q2ú͔fQy#;Ɇ!< Bc*ҏK?_Ϭ?Q;Og/i^nSe:N\J`s(*bX~a*:^xöϥ>Ե+$Э$0Y?۲]MVPrv!$Si_?(~~?UΡ)iUee+dBGA cض}KJ m[^%v\{c6&N)|3G*)]J#sv}}ab3?g2' kd]>F<ÐnA2 jrkW%v0ʵ>u+H}abϬ?Wŭ66񪼐FK{v0sd^m7O>ӾۥAݢ9QG zxol[_9cNOtn~}abϬ?WVaia{졶A0ǽ~`3V. *r//-;^[y'}K~@QX> +?Btm~\xx~j\]-KH@`ik\W :#dFHGkM " yXrQW{]7joi5cSwO췡E;ViGIQ{mY)Vn<:mNgO2RLH

!iZEj^{k&E.xIZn&uUgkX Ghmm$²xZ=GP+x 1U!|#n+cgsT-}KE3ܵh.n.dyF* yïoڇmKC_4=<`c2Sbmt~1<7,yC8Xm 9IfjB |=`,f-B,kqSEe E:4Xމ̎X|0[OƯlEč#tZ}ͥ3¾WEۜɼG=ٸhVYʀ%e\:p1vӥo&tUfOKm}_COi񇍼$4{r/ؒPS>n۹av#}kf<=UM˲es Krݽ_yՏ5&G4OA/bHZ᷉ao VՇ%=vd$׏5/ڸHF@}<24+' gCHq]TTz<ʹ}L#Z=[?ѧo[_ ZhOi>XFldѼBt]_,˝ĭy{?it5" +[ilt]͢!VuFĠmazW'b_ _^[ݛ4۸ 4wra|q$u5|mҴ>1ZjFBmI0v̛gO5ŃFoa9O zߑslMmvXp@dUG^.=!~ ?'On&ms:Gbݜw}Eŝ(GKKdqj5L}WxΑk7#:xlE u5n|8޶4&ѬRv: E~`W]e^0hwV(?6]LDb3HQvIjv?u૵[LLkV|s8?x_Þ6/}8XOvY`l:p {$ w1ksƦ-./,,\(Տ~+F٤'}Œ?ͤIwg}guo;xֽž0#xKGk=L6aXO͒F3_$|_MGO/tUXVHI݈a>r!Ux;hb؊ԮP+"|LMZ3G;[lr0(5]_dxiom[x+ ykgLu7Bm GؑpG'B?{Ć何.޻nro /d--JHmfK?UAMJdˆSo"$F0k{Qh:,t{e8$R4jCbw/IW^ |>Ҿ+jV'_I¼Y'R2Gϑ]&S-;@Ӭ|5 <ɤHm1""1.R_b#RRwۥ[{#.l[2-5]H4 ;01G ~U5/>..55[UA>@cKH̠H> xQn4+xX:kMpۚ 0K&@]VgԿe|Ib{H5 :-b[o0l6s1p;k,\=aM}n?W erzvI+/^I߫kvzg4yy8b" ڿde]^D$׸=+|Iu7cq;XujV,#/XIJdtZEgӢt ĴL pF {W觌YZkYJ.u ,$ʍU\D߼,s}񞥪j_h>a_xģvjiU m#=J+1_&?5ߋ>}p #Iw'|#45b҄fb28m:9t+U*ps_C !t$LcD{.&vɯCWv/Z65C"G6ߝ50R/vZ?cD>(r0 mWszwR_Uyĭ? ]0"|4d)@At?n?ڿ|O8qGfH=@DU[b9#T"Fz:i(r^ eFf5_PJ#S֮.@ Sw+WS5D@kb20t׫LJFWָ1|R]?렟+F5 }V宭4DQmqfK:d>kwN66ۦMXk.q5$DвYiOh ghWOi:O;;4э60)?b[s3(GJt3j7z[Ko{otLNeœ1 ^o5[NZ#Y 69c=+ۜ/+ Y]VP&PѺǒX|83/Sӥ:_9s8+$*;6 '"uacv6ZՖxiuuQ#|ʧ$ }GR]GqtS\ި8kDysp?@Kl,^eUe(#rG9?ėߴWt q6m_߫AOi9 pj䌂1U/o1zڶl'bѣx$Tzwa4+'o.kqKuoa&TgЊ: ~vèok+]|MYKiY.:lA擉sMy?m2kֵxk$k:+/ 2IbB* N5iVy\UJz|6a n1/^g3:~,tLNWӸ5ޝÑ 6iwi>,Q(d onF@1Ežj~mE*![ _jź<_ :Ě5)]j Ep[1.07ܒ_sRR4 MmbMSSկ'Q׹k6 !#jVe}Bqo,jU" W;_7$ M4~ssᜮ*>vo_O( Y}?A6ʿ~#'៉^!lu}i" 991&S39_ +~X|ku2 m+Cz>Ӛ)n.$9|$QD0&Ɣʟ/K = [;~zPKe|SnW_-^2K@ে YaD?kV6K-x\6z_6?< ae ėSg 9gsAdacq P ;+g fֿ-g>6ifMOM,iٷӡKKoE_2C?Þ%JUǔoZ}NH2diFh3H†R+OoR{ 仾Ԟ=y UL)O~Zeo i(_zziAkV+Ka/Exˆ: }_>/Ac537 [']ZrqMݫ}[h&f^:gk?7߇ַ֞*w#VR2mG8]` |Eߋ:w4 7 죵kؗJM" 1rq=kmO Y(DK%Ԓi yaB. ;q_4xk~$7ai;_ @Fci)v潼'mR[';iC̎k^y|}}Ee}nϸ5oxom$G]!by%z.I k?|imx[ՔMW\?MxNORyEC_/͵rFp\acedf͖L9e!YWcҽ[G.Ooy=d?5N3妾_wv|w{~!j =:o)",1,9B1eW~1SúfsKRմ`bN0W3lUcҤoww kAXwK;MU1 zYrYm {ֽ\ʤ&KB=G=B5%gVѨz~/weH.vc5C$J-%rsG~_xu={yd4c1YFp̤aG~+kue/&9-Z;EaK+$Y meu9ZGbrc(˙?~<[PK[{ Β$ErXk&K'ٗǷrs}{s]Cg/\"ug^ے %v OF4roWi1Fdyن31f9sr-zf{ Ѱ2@b*mw > [HT5~S ʻ ? xR#ߧA$ڿ9!l_T*k/?q\%\rQK[m|9D1Ay2O>]36ݥռeJH2˕vVBÎ+Q🆷EFVp̨U95^V0,Rx@#t`U7ӿJwqVlu 猢T+I>TݭXV3Rqnľ=^pM.;F !NDch7 `L溯! xzkVk:n .x'|yt @ $6֥tYAd ȢVBgOkz<.Ɵ#j67?!_-V^6{J.ZOg+V^]w7OMt}? >6nMi{>cXy&(de^ Kc75|*֛⟋gCddGUFm]ٳ'2vk[?.eZ@#XMJkU*$l{bj6w }4 M$8]-5K;渉LXvɮFEֵ{6+kWm4p_3 |҂pm O "7GaF!w⏋ʹKup?5`ڣ$ze(zZ}A/HE۵5~|jॿoeZ 6XZ%얏 H;ʌIȯl>9vWjHomDd?|wT{WĚƣu%Ʃ+gwz /53%sf'Z#(MS8Õ//UЭT%d{df]QWw_NoA\ii{My(tcǗ0j|;Ih? Y}?ȁeOlk\W O'Z|QriڤOp c&Aw* |ۊlk\W A<_i_:35ΖJ f>SϮ+Zޫc%.XS]dܟᮧIs~2ּyx[$^/|3@L[[i - cg;ѵu"ZZ^i6,Z\[sgG>AK{{5-m#&k˄2i$I,6lSdgo6_|Mۮj5Ι1ǺOLd] ;ytuQr-{v=LE\%<$8Ͷzi}/[9Z>☼ExKD[ MT5)VR"!f+cuX?o5j-7e!JmE_UIcZ4vzχ|b%t% VsԲI+7^'u1I"HGpu@M}=4PI~p* |0f7 JCX</u-.2HÝǕbk3oY4m .qEc?rIY. z`g m[ĩAQ]\,gbxӠUmwwd%YHl/Nt-4(mc~U59"YkROUU }U<6@#?ͦ3[oTe*iONG`hdz8#{ƞgkc 5I)'08NYlmmxwðX#9ңrdFg%v9vbrz^.̹H3 z灟zm`֡0&wU-"442 Ȟ3`s*k67),A(-*g8O!tfiZ22̧- Sїx}+/QR㉼s&w2/B['#Oz/Z[eBRMY#GQTeaZ+Xt/L~\_~$Dͧ-co4&]`+<_/*>Gֺ+g^9 K x2l ̯ TT 3y׾[nA^ 2@~I[퍶wO& j%àO7TU 6b"@v'O< RqhxӨ-_Y~/NjZP]Ciwx`*78&&lie8Z?f#\:ͥwJ^y% #RC*~F]{doD%6IBH.$;h1X6V#|+w9KKMYIPc,8&8X"p#y9~>g8o's- aXQJ{ --kkK,DE&Mvfǿ]@mo/|7t- G 4h<\lzԷj?oG󐾇&QA"EzȮMº_[ ]wZyw.y] CҽhQt5qU)ϕ]?K?5ت *xKs"6jF ~sYʇ,H@9+?K6@xOPY|qޮ(›DJXV|::$[X'MRPpjdMdU=URGMq_+c6VaR$k'p<- "?B|gŸK{vVCr&K4!™K\Ƥwtwu8qIr7k~o|G^G.U|7mn-Z+,P3<#U\Y3_˼Z>=Az i?1 K cRH$i-帝bܲw#Ojৃ]2Fs9IKumD;5'Fvٻ[}xE8`oXC!1G3֞w1+pO|E 9VGvcUk?gG_!F5]bYo_x s,g{W4a(ະ 1`}3'tp:͕xr:dcti/ &P|͜nlwҩ'ώЌ*mS}qڎʛqEqSCWeռGB)-%Yq$1#+Ol3$gFki6՛tWXs:^o)E`ΠdJKπI[Ia] ֕l\MJ6:K> sZ|/[[X$L׏t? |ׅ|+/+]oN45)3ZEѝ!<k> NEמU)~e~K|gl77#נ|{x7ʿh$SH{HsUב|UE3Cy-d|-0yrK>@f#t2ߌ|Ik< uwmmWq#`o >9 ZW>(^Z*FHB>~aB 8Z|ܻ-v޲o[sS/Eo}g&x{²oWrl:p gut-l4VHp[+:õmF,@ߞt,R5$"MItZ9}wy B|n2vJǺ5/ ,@ 1u[`aŇ,LhsJS!;`NOj?RyBFo8H턌#όr8 % ;6TU1}?(ix~&$pF^ñ^/MSE$fՑ@ WoEd/l6kq}o6 W1đc&gےAh4ui-tU׊^W`n $ cx:յ_S*W|Agqv$[,MOy<zqQL-7&^Y+kɭ|܈ Js-GY~^2qeJozC[ΫvB 8 q|,+X}=FkS!]qo^2A.?ryx08_>кƣ{.k]ZA{ 2L{$q"n1UMM$c_ݥ'k^ߏpoW'',-!Χy22fY<KL-}kv^ܬiB3ʼBS>X& u\;{(, $Xc!z4D澧䴆W9fX,gc4RH}{J6\yAgdoQv[IV`l%R=zOn#ֻl[ [g1HF! +XW 3[3]tI ’7 /qGw6kmXuĶ플'RAǵLj(EMS +*bm;%ǵ.mR[y~:Wd:t m=`ͼBn!d,n;$e#ϧJ8U\ύyv!qpM?kNGmU\h$XxL>ʊo.sy]~t4ډYc$80-GUHpv`+<燍o|7ۨa,zn$$8<_ҽ.nqͣY뒴НfFSfBH$Q(cM^5r4۟k" (o_O(>Mq_+׮-a!C le@gOVW#g _W%^]j61eJ~0r10'Jjk]=ɖY wiCvo}>[l/?!S)Mupb>}aUX4kbHx?*@M~;x|SEmcE *rw"AB!+E#F qB<_9O)¢w~kc=˖YJJZ4l ~Vb{=xl%1Ά VI\±cz{he!#7L!dxP2(e5]V+n w?Zf.cHDִ/Aϡ!C `3rqXO!bxR6 "Gϟ5={g Z$dwvZ>);k>PFIO_DT PϘys8욖^葛9vary^4>VtJux+ǾY.rXpyu~b#D 6f>0 "qx{w״{ :+KXblyc:{㾯I%ZF`W Ar j+%% 9ʣi~ ƍ64r牅$p;'^xV? C Lt:{90 Kꑨҡo'l^#w,_€6yd@pʠ~||u㫡ܫ@?4\.C[kɥok;UN5VOcOc]ֲpaB>\>մ_ MRukܱHX$Q trbRd>iOxOy-BD:uI݊6+ف*xV{`n뛇\ck(Fn9a2+=,{Tº愯]>ށkTX-'r-GI !R]2S ׽Ck3ʦMwYf,zA-člj.e)Y%#vaG9uK[F5͗KkBVdc*>u 1AJ3:Fmgk$-1Q?9r";\$$."wM媍_شrD37O^E|ɩR׼Mwjw9a`D&/Nkҕ\QWi?Pm<UfNt9iWz-R6=|7;|;3̸əcQ@fm l5 <2ٕJߊM? VB)zJdnru}P/%)ipwF9#UCai(JkJJԷ}5Eԧ CEU S޾e~1Oߖ97yl+('q_KLlm H.@~yV2zο Jw8}J[ߟo@AE }g _WmlY pQ P8I8Gnd&mz|5iP/o$˳*衘>ⴡI -9UT0Z|O0R}.pzݽYwdÌn8ǐ>-j6R>7F72;q\qLH3z W\&tQ!⧆BTU*2zZuHeQed(cHH#cwQk]>L;6oQl#cʦL9yY$.܆Q*ĮB)I*dvϽ2f=գ-jחSef$8zw4v6q}BP cݺq^䓷c~ϙŎ"57Lַ;2P<-PT=^a5܈JyOr>\^נN8EtX6@b!q\-u;]JdI\SFJB_j? |W+zwjs]$LV;]F^@'֚싨v^)m?M֣Q|L2b# a km4-'> SWzM eu-ȥ/gԴ 1ÃF,Z߄~-&M>=*URc j/URP8gTw {kiwGEҬ/qwbUe8CpsյO RaRѫ_m*xJ[)S0NΠ$ft=p]y,?(N|8V)uZ__e|%-ZH2$~Z=滩jP隴6\4)hZ PWRw-c4[TQAR>b;`O4^;aeyl#L&>'g^,9<2-:5*ôr͖m<g+X_{>k~۹ï f~d-ّņHu׸kVw^"8P=ѕHmHKMÒ*y5%vCmq\WG"˟iz:w"W^weFR 0<`6~ g:cӦӹ׮`\h4I)RI% y*Iݫj 5(M0_ \Wξ:whH$s1?}/h4xBEa2Ojb+-|~M|_-uqf18%FWx5Z>Ik)бmPi٣\R63rkկkXj:Zz֧&[;KYCvx5RבؚjrC_|%Or-JnwWմ Y}?ȁeC?B]:}+Y}HWeMۋ3ް|Og[YLlB4a[ZI-T\ƎT*Fwc`;g,H3+3xNuoz33LZZ6%5<.+UدjҚ ^{]Bଶ g}F@ rUܷ0U&y^|[W Z.4EHc^C,#)-+GԴiws3<.45?}bHRd9k|.-In.y6k[z]%B%yG0͑5c/e/33Lk˹5VXF.-9%/k3FU9>igimsNI[Q%P! rgk2^-~lGR>vo_O( Y}?lk\W TS῁w:E[8,A6>qCb4e͟Gzf#ĤSvZB=*Ic#> spMꊜ"Aһlcf1E9=H=,KpB8'ҷwPV&R.{v՗GmZib-嘸$y~j0[눤]EfJW\{ [cX d~,?q(Zm1Us( rA=ZKFgqrO7"9#zc[⼲bnm;*F[˻ub"獭bb:\02"1 ma$YInQZ= ˒rCN=%|pC ^jڤri]~F$*'v=5!w-/ v[wf> 9@ K+)ڨ,pgsG߁~4R:;^V US^F'o:| N:AЩiO4Z}/yi$X+2) T$W^5gΕG?fnIViYs\7FhwkP9xkBX n~?%oiHeAH |>'GbplVw^^cyM>v{<6z|_$doU H,ks dB9";bOּbdX$ی[!I}ܶ+ʱJG^I&Ź\`zTyJTlt?Ҩ=q o86߮k2 VD]/\6G^n[z#NgZ%_8 of>ʒwzMAA?x\z7I Ng"bvJou+5M,\G*:~oD{JRj)ɢmx v6FbA\Մ[&MSKٗv1lRӬ??|F7x~X2gE@?q^[k-j{ܼҶy.-pҕe+9*|Gիuq=#ATxo |LުzΣiBvܫ:,#ۆtpT|GSokuc,}BS$f[`\BcfO45O5E妁Ikf Q̒TI7I*T5WMyu-9BZ[3rƈnوsaMyf[幷(."l$20r~w]')ioԍWVU.9e>h613oǯlg.YקӢpy%\eg/4 k / (%Vg~)x;WTu+OYKaylc:M?npʋq+zSg|,2 9i$5pW exD|׾>vo_O( Y}?Ϡlk\W //;0f:g _Wv*5[j <"O*nYti]3GGKkw1XSڠ`M>$fEQrl%0ʌɬfU[R,9<"uٯυUhDU>\[t*.AmO]!e g8+мO/ =k^0 v:g+ش4}3W: )*h};~zZEv^.dD7+qy)f[t ~S+jJЪ(G~s+[t̨X׾ڌk>mUn~8k<+ {P0O92?\WMdվ/۰ou"u^T~x5dfna{Mm{ #p" V#tD e7磫Jɱp%Rs伆CkSPShbn>idBWzB?\Wտo4V-IH/;Ix9c.Tk~ۙXm =xjMۼZD!d'HV[ !xTjs]\ɽmֳ[ ~3x+62bkb6cHfWw=5պtq1wRccôN]wnt[={h6b"H8,]k1_vZ.kUdy %RC7^F3E[5UZv{Xw/ei;#oȁe<" +A6~}_Kz'c9E}Snu sVG}THxF6}i?G$r Kq|dGzh#ddM7{O_zquP bA2\x'O&҅VvK'&w{ꭩm2ѡbNA jVm炤 f?e٣i {_f٬!Q<3z@V0r?m#D(T@%Q@;'?Jfǟ|tM41͇| n:MyZt3H5RG7v}$c7{i0O w?f/٭2_ ՇB< hUV&osg#nuMΰ\nr#-yP3׊NƵ?J0Z6[gIc+{|q_ԍz{Z|آ3DX'ޣ{ٸ#DmcY%( taV|մn^W?O9ٯ]+zٴܶ!URL $ 7i&1J~ |l.mu~ Mqk9U`ѐG\?fҎ|jUk]; =yQ[˚YT߶yh"WzöR c⸧|u#52~;W v?/&_ jؕn3h"萳mأ~d-/Qfՙ='=?_<OuoZR9]9ݧ]̗Ũoi/A&Xb"#f9q⿫*n ľi"Yzg)s m+;x7D /S<?AE@67S$+mj:r-A5sIq)(kֿe7GVC^)(+SZ]Z z 袀OkStej5_2??M׭o.(kֿe7GVC^)(+SZ]Z z 袀OkStej5_2??M׭o.(kֿe7GVC^)(+SZ]Z z 袀OkStej5_2??M׭o.(kֿe7GVC^)(+SZ]Z z 袀OkSu4Zf#k,JN7PZXQ[BH8QE__http://lh4.google.com/shuttercool/R-m8S5_rfPI/AAAAAAAAC_M/gp29din6tEA/maandchu_thumb%5B7%5D.jpgZimage/jpeg Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?ISZNS.objectsWNS.keys@ABCDEFGHJKLMNOPQR VServer]Last-Modified]Accept-RangesZConnectionTDate^Content-LengthZKeep-AliveTEtag\Content-Type_Apache/1.3.41 (Unix)_Mon, 03 Mar 2008 14:48:42 GMTUbytes_Mon, 23 Jun 2008 07:04:52 GMTU39585_timeout=15, max=100_"417cbd-9aa1-47cc0fca"12effg6_NSMutableDictionary\NSDictionary12ijj6_NSHTTPURLResponseInternal12lmmn6_NSHTTPURLResponse]NSURLResponse$)2DILbd #/135pu~  &4BMRalq~/<AD`ei}oO//***********************************************************************************************************************************/ // LyteBox v3.22 // // Author: Markus F. Hay // Website: http://www.dolem.com/lytebox // Date: October 2, 2007 // License: Creative Commons Attribution 3.0 License (http://creativecommons.org/licenses/by/3.0/) // Browsers: Tested successfully on WinXP with the following browsers (using no DOCTYPE and Strict/Transitional/Loose DOCTYPES): // * Firefox: 2.0.0.7, 1.5.0.12 // * Internet Explorer: 7.0, 6.0 SP2, 5.5 SP2 // * Opera: 9.23 // // Releases: For up-to-date and complete release information, visit http://www.dolem.com/forum/showthread.php?tid=62 // * v3.22 (10/02/07) // * v3.21 (09/30/07) // * v3.20 (07/12/07) // * v3.10 (05/28/07) // * v3.00 (05/15/07) // * v2.02 (11/13/06) // // Credit: LyteBox was originally derived from the Lightbox class (v2.02) that was written by Lokesh Dhakar. For more // information please visit http://huddletogether.com/projects/lightbox2/ //***********************************************************************************************************************************/ Array.prototype.removeDuplicates = function () { for (var i = 1; i < this.length; i++) { if (this[i][0] == this[i-1][0]) { this.splice(i,1); } } } Array.prototype.empty = function () { for (var i = 0; i <= this.length; i++) { this.shift(); } } String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g, ''); } function LyteBox() { /*** Start Global Configuration ***/ this.theme = 'grey'; // themes: grey (default), red, green, blue, gold this.hideFlash = true; // controls whether or not Flash objects should be hidden this.outerBorder = true; // controls whether to show the outer grey (or theme) border this.resizeSpeed = 6; // controls the speed of the image resizing (8)(1=slowest and 10=fastest) this.maxOpacity = 80; // higher opacity = darker overlay, lower opacity = lighter overlay this.navType = 1; // 1 = "Prev/Next" buttons on top left and left (default), 2 = "<< prev | next >>" links next to image number this.autoResize = false; // controls whether or not images should be resized if larger than the browser window dimensions this.doAnimations = true; // controls whether or not "animate" Lytebox, i.e. resize transition between images, fade in/out effects, etc. this.borderSize = 12; // if you adjust the padding in the CSS, you will need to update this variable -- otherwise, leave this alone... /*** End Global Configuration ***/ /*** Configure Slideshow Options ***/ this.slideInterval = 6000; // (4000)Change value (milliseconds) to increase/decrease the time between "slides" (10000 = 10 seconds) this.showNavigation = true; // true to display Next/Prev buttons/text during slideshow, false to hide this.showClose = true; // true to display the Close button, false to hide this.showDetails = true; // true to display image details (caption, count), false to hide this.showPlayPause = true; // true to display pause/play buttons next to close button, false to hide this.autoEnd = false; // true to automatically close Lytebox after the last image is reached, false to keep open this.pauseOnNextClick = false; // true to pause the slideshow when the "Next" button is clicked this.pauseOnPrevClick = true; // true to pause the slideshow when the "Prev" button is clicked /*** End Slideshow Configuration ***/ if(this.resizeSpeed > 10) { this.resizeSpeed = 10; } if(this.resizeSpeed < 1) { resizeSpeed = 1; } this.resizeDuration = (11 - this.resizeSpeed) * 0.15; this.resizeWTimerArray = new Array(); this.resizeWTimerCount = 0; this.resizeHTimerArray = new Array(); this.resizeHTimerCount = 0; this.showContentTimerArray = new Array(); this.showContentTimerCount = 0; this.overlayTimerArray = new Array(); this.overlayTimerCount = 0; this.imageTimerArray = new Array(); this.imageTimerCount = 0; this.timerIDArray = new Array(); this.timerIDCount = 0; this.slideshowIDArray = new Array(); this.slideshowIDCount = 0; this.imageArray = new Array(); this.activeImage = null; this.slideArray = new Array(); this.activeSlide = null; this.frameArray = new Array(); this.activeFrame = null; this.checkFrame(); this.isSlideshow = false; this.isLyteframe = false; /*@cc_on /*@if (@_jscript) this.ie = (document.all && !window.opera) ? true : false; /*@else @*/ this.ie = false; /*@end @*/ this.ie7 = (this.ie && window.XMLHttpRequest); this.initialize(); } LyteBox.prototype.initialize = function() { this.updateLyteboxItems(); var objBody = this.doc.getElementsByTagName("body").item(0); if (this.doc.getElementById('lbOverlay')) { objBody.removeChild(this.doc.getElementById("lbOverlay")); objBody.removeChild(this.doc.getElementById("lbMain")); } var objOverlay = this.doc.createElement("div"); objOverlay.setAttribute('id','lbOverlay'); objOverlay.setAttribute((this.ie ? 'className' : 'class'), this.theme); if ((this.ie && !this.ie7) || (this.ie7 && this.doc.compatMode == 'BackCompat')) { objOverlay.style.position = 'absolute'; } objOverlay.style.display = 'none'; objBody.appendChild(objOverlay); var objLytebox = this.doc.createElement("div"); objLytebox.setAttribute('id','lbMain'); objLytebox.style.display = 'none'; objBody.appendChild(objLytebox); var objOuterContainer = this.doc.createElement("div"); objOuterContainer.setAttribute('id','lbOuterContainer'); objOuterContainer.setAttribute((this.ie ? 'className' : 'class'), this.theme); objLytebox.appendChild(objOuterContainer); var objIframeContainer = this.doc.createElement("div"); objIframeContainer.setAttribute('id','lbIframeContainer'); objIframeContainer.style.display = 'none'; objOuterContainer.appendChild(objIframeContainer); var objIframe = this.doc.createElement("iframe"); objIframe.setAttribute('id','lbIframe'); objIframe.setAttribute('name','lbIframe'); objIframe.style.display = 'none'; objIframeContainer.appendChild(objIframe); var objImageContainer = this.doc.createElement("div"); objImageContainer.setAttribute('id','lbImageContainer'); objOuterContainer.appendChild(objImageContainer); var objLyteboxImage = this.doc.createElement("img"); objLyteboxImage.setAttribute('id','lbImage'); objImageContainer.appendChild(objLyteboxImage); var objLoading = this.doc.createElement("div"); objLoading.setAttribute('id','lbLoading'); objOuterContainer.appendChild(objLoading); var objDetailsContainer = this.doc.createElement("div"); objDetailsContainer.setAttribute('id','lbDetailsContainer'); objDetailsContainer.setAttribute((this.ie ? 'className' : 'class'), this.theme); objLytebox.appendChild(objDetailsContainer); var objDetailsData =this.doc.createElement("div"); objDetailsData.setAttribute('id','lbDetailsData'); objDetailsData.setAttribute((this.ie ? 'className' : 'class'), this.theme); objDetailsContainer.appendChild(objDetailsData); var objDetails = this.doc.createElement("div"); objDetails.setAttribute('id','lbDetails'); objDetailsData.appendChild(objDetails); var objCaption = this.doc.createElement("span"); objCaption.setAttribute('id','lbCaption'); objDetails.appendChild(objCaption); var objHoverNav = this.doc.createElement("div"); objHoverNav.setAttribute('id','lbHoverNav'); objImageContainer.appendChild(objHoverNav); var objBottomNav = this.doc.createElement("div"); objBottomNav.setAttribute('id','lbBottomNav'); objDetailsData.appendChild(objBottomNav); var objPrev = this.doc.createElement("a"); objPrev.setAttribute('id','lbPrev'); objPrev.setAttribute((this.ie ? 'className' : 'class'), this.theme); objPrev.setAttribute('href','#'); objHoverNav.appendChild(objPrev); var objNext = this.doc.createElement("a"); objNext.setAttribute('id','lbNext'); objNext.setAttribute((this.ie ? 'className' : 'class'), this.theme); objNext.setAttribute('href','#'); objHoverNav.appendChild(objNext); var objNumberDisplay = this.doc.createElement("span"); objNumberDisplay.setAttribute('id','lbNumberDisplay'); objDetails.appendChild(objNumberDisplay); var objNavDisplay = this.doc.createElement("span"); objNavDisplay.setAttribute('id','lbNavDisplay'); objNavDisplay.style.display = 'none'; objDetails.appendChild(objNavDisplay); var objClose = this.doc.createElement("a"); objClose.setAttribute('id','lbClose'); objClose.setAttribute((this.ie ? 'className' : 'class'), this.theme); objClose.setAttribute('href','#'); objBottomNav.appendChild(objClose); var objPause = this.doc.createElement("a"); objPause.setAttribute('id','lbPause'); objPause.setAttribute((this.ie ? 'className' : 'class'), this.theme); objPause.setAttribute('href','#'); objPause.style.display = 'none'; objBottomNav.appendChild(objPause); var objPlay = this.doc.createElement("a"); objPlay.setAttribute('id','lbPlay'); objPlay.setAttribute((this.ie ? 'className' : 'class'), this.theme); objPlay.setAttribute('href','#'); objPlay.style.display = 'none'; objBottomNav.appendChild(objPlay); }; LyteBox.prototype.updateLyteboxItems = function() { var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a'); for (var i = 0; i < anchors.length; i++) { var anchor = anchors[i]; var relAttribute = String(anchor.getAttribute('rel')); if (anchor.getAttribute('href')) { if (relAttribute.toLowerCase().match('lytebox')) { anchor.onclick = function () { myLytebox.start(this, false, false); return false; } } else if (relAttribute.toLowerCase().match('lyteshow')) { anchor.onclick = function () { myLytebox.start(this, true, false); return false; } } else if (relAttribute.toLowerCase().match('lyteframe')) { anchor.onclick = function () { myLytebox.start(this, false, true); return false; } } } } }; LyteBox.prototype.start = function(imageLink, doSlide, doFrame) { if (this.ie && !this.ie7) { this.toggleSelects('hide'); } if (this.hideFlash) { this.toggleFlash('hide'); } this.isLyteframe = (doFrame ? true : false); var pageSize = this.getPageSize(); var objOverlay = this.doc.getElementById('lbOverlay'); var objBody = this.doc.getElementsByTagName("body").item(0); objOverlay.style.height = pageSize[1] + "px"; objOverlay.style.display = ''; this.appear('lbOverlay', (this.doAnimations ? 0 : this.maxOpacity)); var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a'); if (this.isLyteframe) { this.frameArray = []; this.frameNum = 0; if ((imageLink.getAttribute('rel') == 'lyteframe')) { var rev = imageLink.getAttribute('rev'); this.frameArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title'), (rev == null || rev == '' ? 'width: 400px; height: 400px; scrolling: auto;' : rev))); } else { if (imageLink.getAttribute('rel').indexOf('lyteframe') != -1) { for (var i = 0; i < anchors.length; i++) { var anchor = anchors[i]; if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) { var rev = anchor.getAttribute('rev'); this.frameArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title'), (rev == null || rev == '' ? 'width: 400px; height: 400px; scrolling: auto;' : rev))); } } this.frameArray.removeDuplicates(); while(this.frameArray[this.frameNum][0] != imageLink.getAttribute('href')) { this.frameNum++; } } } } else { this.imageArray = []; this.imageNum = 0; this.slideArray = []; this.slideNum = 0; if ((imageLink.getAttribute('rel') == 'lytebox')) { this.imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title'))); } else { if (imageLink.getAttribute('rel').indexOf('lytebox') != -1) { for (var i = 0; i < anchors.length; i++) { var anchor = anchors[i]; if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) { this.imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title'))); } } this.imageArray.removeDuplicates(); while(this.imageArray[this.imageNum][0] != imageLink.getAttribute('href')) { this.imageNum++; } } if (imageLink.getAttribute('rel').indexOf('lyteshow') != -1) { for (var i = 0; i < anchors.length; i++) { var anchor = anchors[i]; if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) { this.slideArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title'))); } } this.slideArray.removeDuplicates(); while(this.slideArray[this.slideNum][0] != imageLink.getAttribute('href')) { this.slideNum++; } } } } var object = this.doc.getElementById('lbMain'); object.style.top = (this.getPageScroll() + (pageSize[3] / 15)) + "px"; object.style.display = ''; if (!this.outerBorder) { this.doc.getElementById('lbOuterContainer').style.border = 'none'; this.doc.getElementById('lbDetailsContainer').style.border = 'none'; } else { this.doc.getElementById('lbOuterContainer').style.borderBottom = ''; this.doc.getElementById('lbOuterContainer').setAttribute((this.ie ? 'className' : 'class'), this.theme); } this.doc.getElementById('lbOverlay').onclick = function() { myLytebox.end(); return false; } this.doc.getElementById('lbMain').onclick = function(e) { var e = e; if (!e) { if (window.parent.frames[window.name] && (parent.document.getElementsByTagName('frameset').length <= 0)) { e = window.parent.window.event; } else { e = window.event; } } var id = (e.target ? e.target.id : e.srcElement.id); if (id == 'lbMain') { myLytebox.end(); return false; } } this.doc.getElementById('lbClose').onclick = function() { myLytebox.end(); return false; } this.doc.getElementById('lbPause').onclick = function() { myLytebox.togglePlayPause("lbPause", "lbPlay"); return false; } this.doc.getElementById('lbPlay').onclick = function() { myLytebox.togglePlayPause("lbPlay", "lbPause"); return false; } this.isSlideshow = doSlide; this.isPaused = (this.slideNum != 0 ? true : false); if (this.isSlideshow && this.showPlayPause && this.isPaused) { this.doc.getElementById('lbPlay').style.display = ''; this.doc.getElementById('lbPause').style.display = 'none'; } if (this.isLyteframe) { this.changeContent(this.frameNum); } else { if (this.isSlideshow) { this.changeContent(this.slideNum); } else { this.changeContent(this.imageNum); } } }; LyteBox.prototype.changeContent = function(imageNum) { if (this.isSlideshow) { for (var i = 0; i < this.slideshowIDCount; i++) { window.clearTimeout(this.slideshowIDArray[i]); } } this.activeImage = this.activeSlide = this.activeFrame = imageNum; if (!this.outerBorder) { this.doc.getElementById('lbOuterContainer').style.border = 'none'; this.doc.getElementById('lbDetailsContainer').style.border = 'none'; } else { this.doc.getElementById('lbOuterContainer').style.borderBottom = ''; this.doc.getElementById('lbOuterContainer').setAttribute((this.ie ? 'className' : 'class'), this.theme); } this.doc.getElementById('lbLoading').style.display = ''; this.doc.getElementById('lbImage').style.display = 'none'; this.doc.getElementById('lbIframe').style.display = 'none'; this.doc.getElementById('lbPrev').style.display = 'none'; this.doc.getElementById('lbNext').style.display = 'none'; this.doc.getElementById('lbIframeContainer').style.display = 'none'; this.doc.getElementById('lbDetailsContainer').style.display = 'none'; this.doc.getElementById('lbNumberDisplay').style.display = 'none'; if (this.navType == 2 || this.isLyteframe) { object = this.doc.getElementById('lbNavDisplay'); object.innerHTML = '    || '; object.style.display = 'none'; } if (this.isLyteframe) { var iframe = myLytebox.doc.getElementById('lbIframe'); var styles = this.frameArray[this.activeFrame][2]; var aStyles = styles.split(';'); for (var i = 0; i < aStyles.length; i++) { if (aStyles[i].indexOf('width:') >= 0) { var w = aStyles[i].replace('width:', ''); iframe.width = w.trim(); } else if (aStyles[i].indexOf('height:') >= 0) { var h = aStyles[i].replace('height:', ''); iframe.height = h.trim(); } else if (aStyles[i].indexOf('scrolling:') >= 0) { var s = aStyles[i].replace('scrolling:', ''); iframe.scrolling = s.trim(); } else if (aStyles[i].indexOf('border:') >= 0) { // Not implemented yet, as there are cross-platform issues with setting the border (from a GUI standpoint) //var b = aStyles[i].replace('border:', ''); //iframe.style.border = b.trim(); } } this.resizeContainer(parseInt(iframe.width), parseInt(iframe.height)); } else { imgPreloader = new Image(); imgPreloader.onload = function() { var imageWidth = imgPreloader.width; var imageHeight = imgPreloader.height; if (myLytebox.autoResize) { var pagesize = myLytebox.getPageSize(); var x = pagesize[2] - 150; var y = pagesize[3] - 150; if (imageWidth > x) { imageHeight = Math.round(imageHeight * (x / imageWidth)); imageWidth = x; if (imageHeight > y) { imageWidth = Math.round(imageWidth * (y / imageHeight)); imageHeight = y; } } else if (imageHeight > y) { imageWidth = Math.round(imageWidth * (y / imageHeight)); imageHeight = y; if (imageWidth > x) { imageHeight = Math.round(imageHeight * (x / imageWidth)); imageWidth = x; } } } var lbImage = myLytebox.doc.getElementById('lbImage') lbImage.src = (myLytebox.isSlideshow ? myLytebox.slideArray[myLytebox.activeSlide][0] : myLytebox.imageArray[myLytebox.activeImage][0]); lbImage.width = imageWidth; lbImage.height = imageHeight; myLytebox.resizeContainer(imageWidth, imageHeight); imgPreloader.onload = function() {}; } imgPreloader.src = (this.isSlideshow ? this.slideArray[this.activeSlide][0] : this.imageArray[this.activeImage][0]); } }; LyteBox.prototype.resizeContainer = function(imgWidth, imgHeight) { this.wCur = this.doc.getElementById('lbOuterContainer').offsetWidth; this.hCur = this.doc.getElementById('lbOuterContainer').offsetHeight; this.xScale = ((imgWidth + (this.borderSize * 2)) / this.wCur) * 100; this.yScale = ((imgHeight + (this.borderSize * 2)) / this.hCur) * 100; var wDiff = (this.wCur - this.borderSize * 2) - imgWidth; var hDiff = (this.hCur - this.borderSize * 2) - imgHeight; if (!(hDiff == 0)) { this.hDone = false; this.resizeH('lbOuterContainer', this.hCur, imgHeight + this.borderSize*2, this.getPixelRate(this.hCur, imgHeight)); } else { this.hDone = true; } if (!(wDiff == 0)) { this.wDone = false; this.resizeW('lbOuterContainer', this.wCur, imgWidth + this.borderSize*2, this.getPixelRate(this.wCur, imgWidth)); } else { this.wDone = true; } if ((hDiff == 0) && (wDiff == 0)) { if (this.ie){ this.pause(250); } else { this.pause(100); } } this.doc.getElementById('lbPrev').style.height = imgHeight + "px"; this.doc.getElementById('lbNext').style.height = imgHeight + "px"; this.doc.getElementById('lbDetailsContainer').style.width = (imgWidth + (this.borderSize * 2) + (this.ie && this.doc.compatMode == "BackCompat" && this.outerBorder ? 2 : 0)) + "px"; this.showContent(); }; LyteBox.prototype.showContent = function() { if (this.wDone && this.hDone) { for (var i = 0; i < this.showContentTimerCount; i++) { window.clearTimeout(this.showContentTimerArray[i]); } if (this.outerBorder) { this.doc.getElementById('lbOuterContainer').style.borderBottom = 'none'; } this.doc.getElementById('lbLoading').style.display = 'none'; if (this.isLyteframe) { this.doc.getElementById('lbIframe').style.display = ''; this.appear('lbIframe', (this.doAnimations ? 0 : 100)); } else { this.doc.getElementById('lbImage').style.display = ''; this.appear('lbImage', (this.doAnimations ? 0 : 100)); this.preloadNeighborImages(); } if (this.isSlideshow) { if(this.activeSlide == (this.slideArray.length - 1)) { if (this.autoEnd) { this.slideshowIDArray[this.slideshowIDCount++] = setTimeout("myLytebox.end('slideshow')", this.slideInterval); } } else { if (!this.isPaused) { this.slideshowIDArray[this.slideshowIDCount++] = setTimeout("myLytebox.changeContent("+(this.activeSlide+1)+")", this.slideInterval); } } this.doc.getElementById('lbHoverNav').style.display = (this.showNavigation && this.navType == 1 ? '' : 'none'); this.doc.getElementById('lbClose').style.display = (this.showClose ? '' : 'none'); this.doc.getElementById('lbDetails').style.display = (this.showDetails ? '' : 'none'); this.doc.getElementById('lbPause').style.display = (this.showPlayPause && !this.isPaused ? '' : 'none'); this.doc.getElementById('lbPlay').style.display = (this.showPlayPause && !this.isPaused ? 'none' : ''); this.doc.getElementById('lbNavDisplay').style.display = (this.showNavigation && this.navType == 2 ? '' : 'none'); } else { this.doc.getElementById('lbHoverNav').style.display = (this.navType == 1 && !this.isLyteframe ? '' : 'none'); if ((this.navType == 2 && !this.isLyteframe && this.imageArray.length > 1) || (this.frameArray.length > 1 && this.isLyteframe)) { this.doc.getElementById('lbNavDisplay').style.display = ''; } else { this.doc.getElementById('lbNavDisplay').style.display = 'none'; } this.doc.getElementById('lbClose').style.display = ''; this.doc.getElementById('lbDetails').style.display = ''; this.doc.getElementById('lbPause').style.display = 'none'; this.doc.getElementById('lbPlay').style.display = 'none'; } this.doc.getElementById('lbImageContainer').style.display = (this.isLyteframe ? 'none' : ''); this.doc.getElementById('lbIframeContainer').style.display = (this.isLyteframe ? '' : 'none'); try { this.doc.getElementById('lbIframe').src = this.frameArray[this.activeFrame][0]; } catch(e) { } } else { this.showContentTimerArray[this.showContentTimerCount++] = setTimeout("myLytebox.showContent()", 200); } }; LyteBox.prototype.updateDetails = function() { var object = this.doc.getElementById('lbCaption'); var sTitle = (this.isSlideshow ? this.slideArray[this.activeSlide][1] : (this.isLyteframe ? this.frameArray[this.activeFrame][1] : this.imageArray[this.activeImage][1])); object.style.display = ''; object.innerHTML = (sTitle == null ? '' : sTitle); this.updateNav(); this.doc.getElementById('lbDetailsContainer').style.display = ''; object = this.doc.getElementById('lbNumberDisplay'); if (this.isSlideshow && this.slideArray.length > 1) { object.style.display = ''; object.innerHTML = "Image " + eval(this.activeSlide + 1) + " of " + this.slideArray.length; this.doc.getElementById('lbNavDisplay').style.display = (this.navType == 2 && this.showNavigation ? '' : 'none'); } else if (this.imageArray.length > 1 && !this.isLyteframe) { object.style.display = ''; object.innerHTML = "Image " + eval(this.activeImage + 1) + " of " + this.imageArray.length; this.doc.getElementById('lbNavDisplay').style.display = (this.navType == 2 ? '' : 'none'); } else if (this.frameArray.length > 1 && this.isLyteframe) { object.style.display = ''; object.innerHTML = "Page " + eval(this.activeFrame + 1) + " of " + this.frameArray.length; this.doc.getElementById('lbNavDisplay').style.display = ''; } else { this.doc.getElementById('lbNavDisplay').style.display = 'none'; } this.appear('lbDetailsContainer', (this.doAnimations ? 0 : 100)); }; LyteBox.prototype.updateNav = function() { if (this.isSlideshow) { if (this.activeSlide != 0) { var object = (this.navType == 2 ? this.doc.getElementById('lbPrev2') : this.doc.getElementById('lbPrev')); object.style.display = ''; object.onclick = function() { if (myLytebox.pauseOnPrevClick) { myLytebox.togglePlayPause("lbPause", "lbPlay"); } myLytebox.changeContent(myLytebox.activeSlide - 1); return false; } } else { if (this.navType == 2) { this.doc.getElementById('lbPrev2_Off').style.display = ''; } } if (this.activeSlide != (this.slideArray.length - 1)) { var object = (this.navType == 2 ? this.doc.getElementById('lbNext2') : this.doc.getElementById('lbNext')); object.style.display = ''; object.onclick = function() { if (myLytebox.pauseOnNextClick) { myLytebox.togglePlayPause("lbPause", "lbPlay"); } myLytebox.changeContent(myLytebox.activeSlide + 1); return false; } } else { if (this.navType == 2) { this.doc.getElementById('lbNext2_Off').style.display = ''; } } } else if (this.isLyteframe) { if(this.activeFrame != 0) { var object = this.doc.getElementById('lbPrev2'); object.style.display = ''; object.onclick = function() { myLytebox.changeContent(myLytebox.activeFrame - 1); return false; } } else { this.doc.getElementById('lbPrev2_Off').style.display = ''; } if(this.activeFrame != (this.frameArray.length - 1)) { var object = this.doc.getElementById('lbNext2'); object.style.display = ''; object.onclick = function() { myLytebox.changeContent(myLytebox.activeFrame + 1); return false; } } else { this.doc.getElementById('lbNext2_Off').style.display = ''; } } else { if(this.activeImage != 0) { var object = (this.navType == 2 ? this.doc.getElementById('lbPrev2') : this.doc.getElementById('lbPrev')); object.style.display = ''; object.onclick = function() { myLytebox.changeContent(myLytebox.activeImage - 1); return false; } } else { if (this.navType == 2) { this.doc.getElementById('lbPrev2_Off').style.display = ''; } } if(this.activeImage != (this.imageArray.length - 1)) { var object = (this.navType == 2 ? this.doc.getElementById('lbNext2') : this.doc.getElementById('lbNext')); object.style.display = ''; object.onclick = function() { myLytebox.changeContent(myLytebox.activeImage + 1); return false; } } else { if (this.navType == 2) { this.doc.getElementById('lbNext2_Off').style.display = ''; } } } this.enableKeyboardNav(); }; LyteBox.prototype.enableKeyboardNav = function() { document.onkeydown = this.keyboardAction; }; LyteBox.prototype.disableKeyboardNav = function() { document.onkeydown = ''; }; LyteBox.prototype.keyboardAction = function(e) { var keycode = key = escape = null; keycode = (e == null) ? event.keyCode : e.which; key = String.fromCharCode(keycode).toLowerCase(); escape = (e == null) ? 27 : e.DOM_VK_ESCAPE; if ((key == 'x') || (key == 'c') || (keycode == escape)) { myLytebox.end(); } else if ((key == 'p') || (keycode == 37)) { if (myLytebox.isSlideshow) { if(myLytebox.activeSlide != 0) { myLytebox.disableKeyboardNav(); myLytebox.changeContent(myLytebox.activeSlide - 1); } } else if (myLytebox.isLyteframe) { if(myLytebox.activeFrame != 0) { myLytebox.disableKeyboardNav(); myLytebox.changeContent(myLytebox.activeFrame - 1); } } else { if(myLytebox.activeImage != 0) { myLytebox.disableKeyboardNav(); myLytebox.changeContent(myLytebox.activeImage - 1); } } } else if ((key == 'n') || (keycode == 39)) { if (myLytebox.isSlideshow) { if(myLytebox.activeSlide != (myLytebox.slideArray.length - 1)) { myLytebox.disableKeyboardNav(); myLytebox.changeContent(myLytebox.activeSlide + 1); } } else if (myLytebox.isLyteframe) { if(myLytebox.activeFrame != (myLytebox.frameArray.length - 1)) { myLytebox.disableKeyboardNav(); myLytebox.changeContent(myLytebox.activeFrame + 1); } } else { if(myLytebox.activeImage != (myLytebox.imageArray.length - 1)) { myLytebox.disableKeyboardNav(); myLytebox.changeContent(myLytebox.activeImage + 1); } } } }; LyteBox.prototype.preloadNeighborImages = function() { if (this.isSlideshow) { if ((this.slideArray.length - 1) > this.activeSlide) { preloadNextImage = new Image(); preloadNextImage.src = this.slideArray[this.activeSlide + 1][0]; } if(this.activeSlide > 0) { preloadPrevImage = new Image(); preloadPrevImage.src = this.slideArray[this.activeSlide - 1][0]; } } else { if ((this.imageArray.length - 1) > this.activeImage) { preloadNextImage = new Image(); preloadNextImage.src = this.imageArray[this.activeImage + 1][0]; } if(this.activeImage > 0) { preloadPrevImage = new Image(); preloadPrevImage.src = this.imageArray[this.activeImage - 1][0]; } } }; LyteBox.prototype.togglePlayPause = function(hideID, showID) { if (this.isSlideshow && hideID == "lbPause") { for (var i = 0; i < this.slideshowIDCount; i++) { window.clearTimeout(this.slideshowIDArray[i]); } } this.doc.getElementById(hideID).style.display = 'none'; this.doc.getElementById(showID).style.display = ''; if (hideID == "lbPlay") { this.isPaused = false; if (this.activeSlide == (this.slideArray.length - 1)) { this.end(); } else { this.changeContent(this.activeSlide + 1); } } else { this.isPaused = true; } }; LyteBox.prototype.end = function(caller) { var closeClick = (caller == 'slideshow' ? false : true); if (this.isSlideshow && this.isPaused && !closeClick) { return; } this.disableKeyboardNav(); this.doc.getElementById('lbMain').style.display = 'none'; this.fade('lbOverlay', (this.doAnimations ? this.maxOpacity : 0)); this.toggleSelects('visible'); if (this.hideFlash) { this.toggleFlash('visible'); } if (this.isSlideshow) { for (var i = 0; i < this.slideshowIDCount; i++) { window.clearTimeout(this.slideshowIDArray[i]); } } if (this.isLyteframe) { this.initialize(); } }; LyteBox.prototype.checkFrame = function() { if (window.parent.frames[window.name] && (parent.document.getElementsByTagName('frameset').length <= 0)) { this.isFrame = true; this.lytebox = "window.parent." + window.name + ".myLytebox"; this.doc = parent.document; } else { this.isFrame = false; this.lytebox = "myLytebox"; this.doc = document; } }; LyteBox.prototype.getPixelRate = function(cur, img) { var diff = (img > cur) ? img - cur : cur - img; if (diff >= 0 && diff <= 100) { return 10; } if (diff > 100 && diff <= 200) { return 15; } if (diff > 200 && diff <= 300) { return 20; } if (diff > 300 && diff <= 400) { return 25; } if (diff > 400 && diff <= 500) { return 30; } if (diff > 500 && diff <= 600) { return 35; } if (diff > 600 && diff <= 700) { return 40; } if (diff > 700) { return 45; } }; LyteBox.prototype.appear = function(id, opacity) { var object = this.doc.getElementById(id).style; object.opacity = (opacity / 100); object.MozOpacity = (opacity / 100); object.KhtmlOpacity = (opacity / 100); object.filter = "alpha(opacity=" + (opacity + 10) + ")"; if (opacity == 100 && (id == 'lbImage' || id == 'lbIframe')) { try { object.removeAttribute("filter"); } catch(e) {} /* Fix added for IE Alpha Opacity Filter bug. */ this.updateDetails(); } else if (opacity >= this.maxOpacity && id == 'lbOverlay') { for (var i = 0; i < this.overlayTimerCount; i++) { window.clearTimeout(this.overlayTimerArray[i]); } return; } else if (opacity >= 100 && id == 'lbDetailsContainer') { try { object.removeAttribute("filter"); } catch(e) {} /* Fix added for IE Alpha Opacity Filter bug. */ for (var i = 0; i < this.imageTimerCount; i++) { window.clearTimeout(this.imageTimerArray[i]); } this.doc.getElementById('lbOverlay').style.height = this.getPageSize()[1] + "px"; } else { if (id == 'lbOverlay') { this.overlayTimerArray[this.overlayTimerCount++] = setTimeout("myLytebox.appear('" + id + "', " + (opacity+20) + ")", 1); } else { this.imageTimerArray[this.imageTimerCount++] = setTimeout("myLytebox.appear('" + id + "', " + (opacity+10) + ")", 1); } } }; LyteBox.prototype.fade = function(id, opacity) { var object = this.doc.getElementById(id).style; object.opacity = (opacity / 100); object.MozOpacity = (opacity / 100); object.KhtmlOpacity = (opacity / 100); object.filter = "alpha(opacity=" + opacity + ")"; if (opacity <= 0) { try { object.display = 'none'; } catch(err) { } } else if (id == 'lbOverlay') { this.overlayTimerArray[this.overlayTimerCount++] = setTimeout("myLytebox.fade('" + id + "', " + (opacity-20) + ")", 1); } else { this.timerIDArray[this.timerIDCount++] = setTimeout("myLytebox.fade('" + id + "', " + (opacity-10) + ")", 1); } }; LyteBox.prototype.resizeW = function(id, curW, maxW, pixelrate, speed) { if (!this.hDone) { this.resizeWTimerArray[this.resizeWTimerCount++] = setTimeout("myLytebox.resizeW('" + id + "', " + curW + ", " + maxW + ", " + pixelrate + ")", 100); return; } var object = this.doc.getElementById(id); var timer = speed ? speed : (this.resizeDuration/2); var newW = (this.doAnimations ? curW : maxW); object.style.width = (newW) + "px"; if (newW < maxW) { newW += (newW + pixelrate >= maxW) ? (maxW - newW) : pixelrate; } else if (newW > maxW) { newW -= (newW - pixelrate <= maxW) ? (newW - maxW) : pixelrate; } this.resizeWTimerArray[this.resizeWTimerCount++] = setTimeout("myLytebox.resizeW('" + id + "', " + newW + ", " + maxW + ", " + pixelrate + ", " + (timer+0.02) + ")", timer+0.02); if (parseInt(object.style.width) == maxW) { this.wDone = true; for (var i = 0; i < this.resizeWTimerCount; i++) { window.clearTimeout(this.resizeWTimerArray[i]); } } }; LyteBox.prototype.resizeH = function(id, curH, maxH, pixelrate, speed) { var timer = speed ? speed : (this.resizeDuration/2); var object = this.doc.getElementById(id); var newH = (this.doAnimations ? curH : maxH); object.style.height = (newH) + "px"; if (newH < maxH) { newH += (newH + pixelrate >= maxH) ? (maxH - newH) : pixelrate; } else if (newH > maxH) { newH -= (newH - pixelrate <= maxH) ? (newH - maxH) : pixelrate; } this.resizeHTimerArray[this.resizeHTimerCount++] = setTimeout("myLytebox.resizeH('" + id + "', " + newH + ", " + maxH + ", " + pixelrate + ", " + (timer+.02) + ")", timer+.02); if (parseInt(object.style.height) == maxH) { this.hDone = true; for (var i = 0; i < this.resizeHTimerCount; i++) { window.clearTimeout(this.resizeHTimerArray[i]); } } }; LyteBox.prototype.getPageScroll = function() { if (self.pageYOffset) { return this.isFrame ? parent.pageYOffset : self.pageYOffset; } else if (this.doc.documentElement && this.doc.documentElement.scrollTop){ return this.doc.documentElement.scrollTop; } else if (document.body) { return this.doc.body.scrollTop; } }; LyteBox.prototype.getPageSize = function() { var xScroll, yScroll, windowWidth, windowHeight; if (window.innerHeight && window.scrollMaxY) { xScroll = this.doc.scrollWidth; yScroll = (this.isFrame ? parent.innerHeight : self.innerHeight) + (this.isFrame ? parent.scrollMaxY : self.scrollMaxY); } else if (this.doc.body.scrollHeight > this.doc.body.offsetHeight){ xScroll = this.doc.body.scrollWidth; yScroll = this.doc.body.scrollHeight; } else { xScroll = this.doc.getElementsByTagName("html").item(0).offsetWidth; yScroll = this.doc.getElementsByTagName("html").item(0).offsetHeight; xScroll = (xScroll < this.doc.body.offsetWidth) ? this.doc.body.offsetWidth : xScroll; yScroll = (yScroll < this.doc.body.offsetHeight) ? this.doc.body.offsetHeight : yScroll; } if (self.innerHeight) { windowWidth = (this.isFrame) ? parent.innerWidth : self.innerWidth; windowHeight = (this.isFrame) ? parent.innerHeight : self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { windowWidth = this.doc.documentElement.clientWidth; windowHeight = this.doc.documentElement.clientHeight; } else if (document.body) { windowWidth = this.doc.getElementsByTagName("html").item(0).clientWidth; windowHeight = this.doc.getElementsByTagName("html").item(0).clientHeight; windowWidth = (windowWidth == 0) ? this.doc.body.clientWidth : windowWidth; windowHeight = (windowHeight == 0) ? this.doc.body.clientHeight : windowHeight; } var pageHeight = (yScroll < windowHeight) ? windowHeight : yScroll; var pageWidth = (xScroll < windowWidth) ? windowWidth : xScroll; return new Array(pageWidth, pageHeight, windowWidth, windowHeight); }; LyteBox.prototype.toggleFlash = function(state) { var objects = this.doc.getElementsByTagName("object"); for (var i = 0; i < objects.length; i++) { objects[i].style.visibility = (state == "hide") ? 'hidden' : 'visible'; } var embeds = this.doc.getElementsByTagName("embed"); for (var i = 0; i < embeds.length; i++) { embeds[i].style.visibility = (state == "hide") ? 'hidden' : 'visible'; } if (this.isFrame) { for (var i = 0; i < parent.frames.length; i++) { try { objects = parent.frames[i].window.document.getElementsByTagName("object"); for (var j = 0; j < objects.length; j++) { objects[j].style.visibility = (state == "hide") ? 'hidden' : 'visible'; } } catch(e) { } try { embeds = parent.frames[i].window.document.getElementsByTagName("embed"); for (var j = 0; j < embeds.length; j++) { embeds[j].style.visibility = (state == "hide") ? 'hidden' : 'visible'; } } catch(e) { } } } }; LyteBox.prototype.toggleSelects = function(state) { var selects = this.doc.getElementsByTagName("select"); for (var i = 0; i < selects.length; i++ ) { selects[i].style.visibility = (state == "hide") ? 'hidden' : 'visible'; } if (this.isFrame) { for (var i = 0; i < parent.frames.length; i++) { try { selects = parent.frames[i].window.document.getElementsByTagName("select"); for (var j = 0; j < selects.length; j++) { selects[j].style.visibility = (state == "hide") ? 'hidden' : 'visible'; } } catch(e) { } } } }; LyteBox.prototype.pause = function(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) { return; } } }; if (window.addEventListener) { window.addEventListener("load",initLytebox,false); } else if (window.attachEvent) { window.attachEvent("onload",initLytebox); } else { window.onload = function() {initLytebox();} } function initLytebox() { myLytebox = new LyteBox(); }_8http://wang-jheng-dao.myweb.hinet.net/lytebox/lytebox.js_application/x-javascript !"#$Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Last-Modified]Cache-ControlTDate^Content-LengthWExpires\Content-TypeSgws_Fri, 09 May 2008 15:04:46 GMTVpublic_Mon, 23 Jun 2008 07:00:43 GMTS475_Sun, 17 Jan 2038 19:14:07 GMT12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1glu!08EIip  !h/OۉPNG  IHDRa~ePLTE J4eulec{韟Y}T|`v`w̰[qEq__^bYtRNS@fIDATx^MU1 @؁A(33CfqRϣز"@*v&g X="6Xz$/"3;R\Mb((JRpKOY0Qӆqr3rvbΆj+hr<_l}lY݀o%bd,l/ ȂN igKIENDB`_3http://www.blogger.com/img/icon18_wrench_allbkg.pngYimage/png &'(OGbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse# )/078?LYZNS.objectsWNS.keys@ABCDEFGHIJKMNOPQRSTUVWX  VServer_Content-EncodingTVary]Last-Modified]Cache-ControlTDate_Transfer-EncodingZConnectionTX-PxTEtag\Content-TypeSP3pZPWS/1.3.15Tgzip_Accept-Encoding_Thu, 17 Apr 2008 12:08:45 GMT]max-age=86400_Mon, 23 Jun 2008 07:04:52 GMTXIdentityZkeep-alive^ht sfo-agg-n27_"268050-142b-48073dcd"_Ypolicyref="http://www.statcounter.com/w3c/p3p.xml", CP="ADMa OUR COM NAV NID DSP NOI COR"12rsst6_NSMutableDictionary\NSDictionary12vww6_NSHTTPURLResponseInternal12yzz{6_NSHTTPURLResponse]NSURLResponse$)2DILbd !)579;qv   "$&(*,.029LQ_mr%0?X  !|/O+var sc_width=screen.width;var sc_height=screen.height;var sc_referer=""+document.referrer;try{sc_referer=""+parent.document.referrer}catch(ex){sc_referer=""+document.referrer}var sc_os="";var sc_title="";var sc_url="";var sc_unique=0;var sc_returning=0;var sc_returns=0;var sc_base_dir;var sc_error=0;var sc_remove=0;var sc_http_url="http";var sc_link_back_start="";var sc_link_back_end="";var sc_security_code="";if(window.sc_https){if(sc_https==1){sc_doc_loc=''+document.location;myRE=new RegExp("^https","i");if(sc_doc_loc.match(myRE)){sc_http_url="https"}else{sc_http_url="http"}}else sc_http_url="http"}if(window.sc_partition){var sc_counter="";if(window.sc_partition!=34){sc_counter=sc_partition+1}sc_base_dir=sc_http_url+"://c"+sc_counter+".statcounter.com/"}else{sc_base_dir=sc_http_url+"://c1.statcounter.com/"}if(window.sc_text){sc_base_dir+="text.php?"}else{sc_base_dir+="t.php?"}if(window.sc_project){sc_base_dir+="sc_project="+sc_project}else if(window.usr){sc_base_dir+="usr="+usr}else{sc_error=1}if(window.sc_remove_link){sc_link_back_start="";sc_link_back_end=""}else{sc_link_back_start="";sc_link_back_end="<\/a>"}sc_date=new Date();sc_time=sc_date.getTime();sc_time_difference=60*60*1000;sc_title=""+document.title;sc_url=""+document.location;sc_referer=sc_referer.substring(0,255);sc_title=sc_title.substring(0,150);sc_url=sc_url.substring(0,150);sc_referer=escape(sc_referer);if(encodeURIComponent){sc_title=encodeURIComponent(sc_title)}else{sc_title=escape(sc_title)}sc_url=escape(sc_url);if(window.sc_security){sc_security_code=sc_security}var sc_tracking_url=sc_base_dir+"&resolution="+sc_width+"&h="+sc_height+"&camefrom="+sc_referer+"&u="+sc_url+"&t="+sc_title+"&java=1&security="+sc_security_code+"&sc_random="+Math.random();if(window.sc_partition){if(window.sc_project){if((sc_project==3512438)||(sc_project==3512576)||(sc_project==3512643)||(sc_project==3512646)||(sc_project==3512649)||(sc_project==3512653)||(sc_project==3512659)){sc_remove=1}}}if(sc_error==1){document.writeln("Code corrupted. Insert fresh copy.")}else if(sc_remove==1){}else if(window.sc_invisible){if(window.sc_invisible==1){if(window.sc_call){sc_call++}else{sc_call=1}eval("var sc_img"+sc_call+" = new Image();sc_img"+sc_call+".src = \""+sc_tracking_url+"\"")}else{document.writeln("

")}}else if(window.sc_text){document.writeln('')}else{document.writeln("
"+sc_link_back_start+"\"StatCounter"+sc_link_back_end+"
")}if(window.sc_click_stat){if(window.sc_click_stat==1){if(clickstat_done!=1){var clickstat_done=1;var clickstat_project=window.sc_project;var clickstat_security=window.sc_security_code;var dlext="7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|phps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip";if(typeof(window.sc_download_type)=='string')dlext=window.sc_download_type;var ltype="https?|ftp|telnet|ssh|ssl|mailto";var dl=new RegExp("\\.("+dlext+")$","i");var lnk=new RegExp("^("+ltype+"):","i");var host_name=location.host.replace(/^www\./i,"");var host_splitted=host_name.split(".");var domain=host_splitted.pop();domain=host_splitted.pop()+"."+domain;var lnklocal_mask="^https?:\/\/(.*)"+domain;var lnklocal=new RegExp(lnklocal_mask,"i");if(document.getElementsByTagName){var anchors=document.getElementsByTagName('a');for(var i=0;i0){var sc_req=sc_http_url+"://c"+sc_counter+".statcounter.com/click.gif?sc_project="+clickstat_project+"&security="+clickstat_security+"&c="+sc_link+"&m="+clickmode+"&rand="+Math.random();var sc_req_image=new Image(1,1);sc_req_image.onload=sc_none;sc_req_image.src=sc_req;var d=typeof(window.sc_delay)!="undefined"?sc_delay:250;var n=new Date();var t=n.getTime()+d;while(n.getTime()?ISZNS.objectsWNS.keys@ABCDEFGHJKLMNOPQR VServerZConnectionTDateZSet-CookieWExpires_Transfer-Encoding\X-Powered-By\Content-TypeSP3p_EPU`h|h#(+GLPdprOPNG  IHDRDKPLTE|]?IDATc` ؀_&p40L(j51k1 g`zIENDB`_hhttp://c37.statcounter.com/t.php?sc_project=3303879&resolution=1920&h=1200&camefrom=http%3A//tw.search.yahoo.com/search%3Fp%3D%25E5%25A6%2582%25E6%259E%259C%25E5%2591%25A8%25E7%25BE%258E%25E9%259D%2592%25E7%2595%25B6%25E9%2581%25B8%25E7%25B8%25BD%25E7%25B5%25B1%25E5%2590%25B3%25E9%2584%25AD%25E9%2587%258D%26y%3D%25E6%2590%259C%25E5%25B0%258B%26fr%3Dyfp%26ei%3DUTF-8%26rd%3Dr1&u=http%3A//nawiblog.blogspot.com/2008/03/blog-post_5603.html&t=nawi%40%E4%BA%8B%E4%BB%B6%E7%B0%BF%3A%20%E5%A6%82%E6%9E%9C%E5%91%A8%E7%BE%8E%E9%9D%92%E7%95%B6%E9%81%B8%E7%B8%BD%E7%B5%B1&java=1&security=e67d5107&sc_random=0.9840861889533699 ./01Obplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN _Content-EncodingVServer]Last-Modified]Cache-ControlTDate^Content-Length\Content-TypeTgzipTucfe_Mon, 12 May 2008 18:35:15 GMT_max-age=86400, public_Mon, 23 Jun 2008 06:20:27 GMTT922412^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1Y^grv| ).=JOTt h,OYvar _gat=new Object({c:"length",lb:"4.2",m:"cookie",b:undefined,cb:function(d,a){this.zb=d;this.Nb=a},r:"__utma=",W:"__utmb=",ma:"__utmc=",Ta:"__utmk=",na:"__utmv=",oa:"__utmx=",Sa:"GASO=",X:"__utmz=",lc:"http://www.google-analytics.com/__utm.gif",mc:"https://ssl.google-analytics.com/__utm.gif",Wa:"utmcid=",Ya:"utmcsr=",$a:"utmgclid=",Ua:"utmccn=",Xa:"utmcmd=",Za:"utmctr=",Va:"utmcct=",Hb:false,_gasoDomain:undefined,_gasoCPath:undefined,e:window,a:document,k:navigator,t:function(d){var a=1,c=0,g, o;if(!_gat.q(d)){a=0;for(g=d[_gat.c]-1;g>=0;g--){o=d.charCodeAt(g);a=(a<<6&268435455)+o+(o<<14);c=a&266338304;a=c!=0?a^c>>21:a}}return a},C:function(d,a,c){var g=_gat,o="-",k,m,q=g.q;if(!q(d)&&!q(a)&&!q(c)){k=g.w(d,a);if(k>-1){m=d.indexOf(c,k);if(m<0)m=d[g.c];o=g.F(d,k+g.w(a,"=")+1,m)}}return o},Ea:function(d){var a=false,c=0,g,o;if(!_gat.q(d)){a=true;for(g=0;g0&&_gat.P(" \n\r\t",d)},P:function(d,a){return _gat.w(d,a)>-1},h:function(d,a){d[d[_gat.c]]=a},T:function(d){return d.toLowerCase()}, z:function(d,a){return d.split(a)},w:function(d,a){return d.indexOf(a)},F:function(d,a,c){c=_gat.b==c?d[_gat.c]:c;return d.substring(a,c)},uc:function(){var d=_gat.b,a=window;if(a&&a.gaGlobal&&a.gaGlobal.hid)d=a.gaGlobal.hid;else{d=Math.round(Math.random()*2147483647);a.gaGlobal=a.gaGlobal?a.gaGlobal:{};a.gaGlobal.hid=d}return d},wa:function(){return Math.round(Math.random()*2147483647)},Gc:function(){return(_gat.wa()^_gat.vc())*2147483647},vc:function(){var d=_gat.k,a=_gat.a,c=_gat.e,g=a[_gat.m]? a[_gat.m]:"",o=c.history[_gat.c],k,m,q=[d.appName,d.version,d.language?d.language:d.browserLanguage,d.platform,d.userAgent,d.javaEnabled()?1:0].join("");if(c.screen)q+=c.screen.width+"x"+c.screen.height+c.screen.colorDepth;else if(c.java){m=java.awt.Toolkit.getDefaultToolkit().getScreenSize();q+=m.screen.width+"x"+m.screen.height}q+=g;q+=a.referrer?a.referrer:"";k=q[_gat.c];while(o>0)q+=o--^k++;return _gat.t(q)}});_gat.hc=function(){var d=this,a=_gat.cb;function c(g,o){return new a(g,o)}d.db="utm_campaign";d.eb="utm_content";d.fb="utm_id";d.gb="utm_medium";d.hb="utm_nooverride";d.ib="utm_source";d.jb="utm_term";d.kb="gclid";d.pa=0;d.I=0;d.wb="15768000";d.Tb="1800";d.ea=[];d.ga=[];d.Ic="cse";d.Gb="q";d.ab="google";d.fa=[c(d.ab,d.Gb),c("yahoo","p"),c("msn","q"),c("aol","query"),c("aol","encquery"),c("lycos","query"),c("ask","q"),c("altavista","q"),c("netscape","query"),c("cnn","query"),c("looksmart","qt"),c("about", "terms"),c("mamma","query"),c("alltheweb","q"),c("gigablast","q"),c("voila","rdata"),c("virgilio","qs"),c("live","q"),c("baidu","wd"),c("alice","qs"),c("yandex","text"),c("najdi","q"),c("aol","q"),c("club-internet","query"),c("mama","query"),c("seznam","q"),c("search","q"),c("wp","szukaj"),c("onet","qt"),c("netsprint","q"),c("google.interia","q"),c("szukacz","q"),c("yam","k"),c("pchome","q"),c("kvasir","searchExpr"),c("sesam","q"),c("ozu","q"),c("terra","query"),c("nostrum","query"),c("mynet","q"), c("ekolay","q"),c("search.ilse","search_for")];d.B=undefined;d.Kb=false;d.p="/";d.ha=100;d.Da="/__utm.gif";d.ta=1;d.ua=1;d.G="|";d.sa=1;d.qa=1;d.pb=1;d.g="auto";d.D=1;d.Ga=1000;d.Yc=10;d.nc=10;d.Zc=0.2};_gat.Y=function(d,a){var c,g,o,k,m,q,r,f=this,p=_gat,w=p.q,x=p.c,i,z=a;f.a=d;function A(h){var b=h instanceof Array?h.join("."):"";return w(b)?"-":b}function B(h,b){var e=[],j;if(!w(h)){e=p.z(h,".");if(b)for(j=0;j=1){q[2]=Math.min(Math.floor(q[2]*1+f),g.nc);q[3]=r}return q};a.O=function(q,r,f,p,w,x,i){var z,A=g.D,B=f.location;if(!o)o=new c.Y(f,g);o.Ha(p);z=c.z(o.K(),".");if(z[1]<500||w){if(x)z=m(z);if(w||!x||z[2]>=1){if(!w&&x)z[2]=z[2]*1-1;z[1]=z[1]*1+1;q="?utmwv="+_gat.lb+"&utmn="+c.wa()+(c.q(B.hostname)?"":"&utmhn="+c.d(B.hostname))+(g.ha==100?"":"&utmsp="+c.d(g.ha))+q;if(0== A||2==A){var n=new Image(1,1);n.src=g.Da+q;var u=2==A?function(){k()}:i||function(){k()};n.onload=u}if(1==A||2==A){var l=new Image(1,1);l.src=("https:"==B.protocol?c.mc:c.lc)+q+"&utmac="+r+"&utmcc="+a.wc(f,p);l.onload=i||function(){k()}}}}o.La(z.join("."));o.Pa()};a.wc=function(q,r){var f=[],p=[c.r,c.X,c.na,c.oa],w,x=q[c.m],i;for(w=0;w0)for(m=0;m9?m.F(F,I+1)*1:0;e++;G=0==G?1:G;n.Xb([v,k.ja,G,e,h.ka()].join("."));n.Ra();return"&utmcn=1"}else return"&utmcr=1"}};_gat.n.s=function(d,a,c,g,o,k,m){var q=this;q.v=d;q.ia=a;q.ra=c;q.L=g;q.da=o;q.R=k;q.vb=m};_gat.n.s.prototype.ka= function(){var d=this,a=_gat,c=[],g=[[a.Wa,d.v],[a.Ya,d.ia],[a.$a,d.ra],[a.Ua,d.L],[a.Xa,d.da],[a.Za,d.R],[a.Va,d.vb]],o,k;if(d.Fa())for(o=0;o-1}function n(b, e,j){if(o(b)||o(e)||o(j))return"-";var t=q(b,c.r+a.f+".",e),v;if(!o(t)){v=f(t,".");v[5]=v[5]?v[5]*1+1:1;v[3]=v[4];v[4]=j;t=v.join(".")}return t}function u(){return"file:"!=a.a[p].protocol&&B()}function l(b){if(!b||""==b)return"";while(c.Lb(b.charAt(0)))b=m(b,1);while(c.Lb(b.charAt(b[w]-1)))b=m(b,0,b[w]-1);return b}function s(b,e,j){if(!o(b())){e(c.J(b()));if(!r(b(),";"))j()}}function h(b){var e,j=""!=b&&a.a[p].host!=b;if(j)for(e=0;e=0&&j<=8?"0":("["==b.charAt(0)&&"]"==b.charAt(b[w]-1)?"-":b)}return b};a.Ia=function(b){var e="",j=a.a;e+=a.aa?a.aa.Xc():"";e+=i.qa?a.rb:"";e+=i.ta&&!o(j.title)?"&utmdt="+c.d(j.title):"";e+="&utmhid="+c.uc()+"&utmr="+a.va+"&utmp="+a.Tc(b);return e};a.Tc=function(b){var e=a.a[p];b=g!=b&&""!=b?c.d(b,true):c.d(e.pathname+unescape(e.search),true);return b};a.$c= function(b){if(a.Q()){var e="";if(a.l!=g&&a.l.N().length>0)e+="&utme="+c.d(a.l.N());e+=a.Ia(b);x.O(e,a.H,a.a,a.f)}};a.qc=function(){var b=new c.Y(a.a,i);return b.Ha(a.f)?b.Wc():g};a._getLinkerUrl=function(b,e){var j=f(b,"#"),t=b,v=a.qc();if(v)if(e&&1>=j[w])t+="#"+v;else if(!e||1>=j[w])if(1>=j[w])t+=(r(b,"?")?"&":"?")+v;else t=j[0]+(r(b,"?")?"&":"?")+v+"#"+j[1];return t};a.Zb=function(){var b;if(a.A&&a.A[w]>=10&&!r(a.A,"=")){a.u.Uc(a.A);a.u.cd();c._gasoDomain=i.g;c._gasoCPath=i.p;b=a.a.createElement("script"); b.type="text/javascript";b.id="_gasojs";b.src="https://www.google.com/analytics/reporting/overlay_js?gaso="+a.A+"&"+c.wa();a.a.getElementsByTagName("head")[0].appendChild(b)}};a.Jc=function(){var b=a.a[c.m],e=a.ja,j=a.u,t=a.f+"",v=a.e,y=v?v.gaGlobal:g,E,F=r(b,c.r+t+"."),I=r(b,c.W+t),G=r(b,c.ma+t),C,D=[],H="",K=false,J;b=o(b)?"":b;if(i.I){E=c.Db(a.a[p]);if(i.pa&&!o(E))H=E+"&";H+=a.a[p].search;if(!o(H)&&r(H,c.r)){j.Rc(H);if(!j.Jb())j.pc();C=j.ya()}s(j.Ba,j.Wb,j.fc);s(j.Aa,j.Na,j.Qa)}if(!o(C))if(o(j.K())|| o(j.za())){C=n(H,"&",e);a.M=true}else{D=f(j.K(),".");t=D[0]}else if(F)if(!I||!G){C=n(b,";",e);a.M=true}else{C=q(b,c.r+t+".",";");D=f(q(b,c.W+t,";"),".")}else{C=[t,c.Gc(),e,e,e,1].join(".");a.M=true;K=true}C=f(C,".");if(K)if(v&&y&&!y.from_cookie){C[4]=y.sid?y.sid:C[4];C[3]=y.sid?y.sid:C[4];if(y.vid){J=f(y.vid,".");C[1]=J[0];C[2]=J[1]}}j.Ub(C.join("."));D[0]=t;D[1]=D[1]?D[1]:0;D[2]=undefined!=D[2]?D[2]:i.Yc;D[3]=D[3]?D[3]:C[4];j.La(D.join("."));j.Vb(t);if(!o(j.Hc()))j.Ma(j.t());j.dc();j.Pa();j.ec()}; a.Lc=function(){x=new c.jc(i)};a._initData=function(){var b;if(!z){a.Lc();a.f=a.Bc();a.u=new c.Y(a.a,i)}if(u())a.Jc();if(!z){if(u()){a.va=a.tc(a.Ac(),a.a.domain);if(i.sa){a.aa=new c.gc(i.ua);a.aa.xc()}if(i.qa){b=new c.n(a.f,a.a,a.va,a.ja,i);a.rb=b.yc(a.u,a.M)}}a.l=new c.Z;a.Ab=new c.Z;z=true}if(!c.Hb)a.Mc()};a._visitCode=function(){a._initData();var b=q(a.a[c.m],c.r+a.f+".",";"),e=f(b,".");return e[w]<4?"":e[1]};a._cookiePathCopy=function(b){a._initData();if(a.u)a.u.bd(a.f,b)};a.Mc=function(){var b= a.a[p].hash,e;e=b&&""!=b&&0==k(b,"#gaso=")?q(b,"gaso=","&"):q(a.a[c.m],c.Sa,";");if(e[w]>=10){a.A=e;if(a.e.addEventListener)a.e.addEventListener("load",a.Zb,false);else a.e.attachEvent("onload",a.Zb)}c.Hb=true};a.Q=function(){return a._visitCode()%10000?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP _Content-EncodingVServer]Last-Modified]Cache-ControlTDate_Transfer-EncodingWExpires\Content-TypeTgzipWGFE/1.3_Thu, 12 Jun 2008 22:28:18 GMTVpublic_Mon, 23 Jun 2008 07:04:53 GMTXIdentity_Wed, 23 Jul 2008 07:04:53 GMT12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd #/135lqz  &4BG[cpu} !=BFZlhOvar w_a=false;function w_b(a){try{throw a;}catch(b){w_c(b)}}function w_c(a,b){var c="Javascript exception: "+(b?b:"")+" "+a;if(w_d())c+=" "+a.name+": "+a.message+" ("+a.number+")";var d="";if(typeof a=="string")d=a+"\n";else for(var e in a)try{d+=e+": "+a[e]+"\n"}catch(f){}d+=w_e(w_c.caller);w_aa(c+"\n"+d,1)}var w_ba=/function (\w+)/;function w_ca(a){var b=w_ba.exec(String(a));if(b)return b[1];return""}function w_e(a){try{if(!w_d()&&!(w_f("safari")||w_f("konqueror"))&&w_f("mozilla"))return Error().stack; if(!a)return"";var b="- "+w_ca(a)+"(";for(var c=0;c0)b+=", ";var d=String(a.arguments[c]);if(d.length>40)d=d.substr(0,40)+"...";b+=d}b+=")\n";b+=w_e(a.caller);return b}catch(e){return"[Cannot get stack trace]: "+e+"\n"}}var w_da,w_g=null,w_h=false;function w_ea(){if((w_g==null||w_g.closed)&&!w_h)try{w_h=true;w_g=window.open("","debug","width=700,height=500,toolbar=no,resizable=yes,scrollbars=yes,left=16,top=16,screenx=16,screeny=16");w_g.blur();w_g.document.open();w_h= false;var a="To turn off this debugging window,hit 'D' inside the main caribou window, then close this window.
";w_i(a)}catch(b){}}function w_aa(a,b){if(!w_a){if(typeof w_j!="undefined")w_j(w_k(a));return}try{var c=(new Date).getTime()-w_da,d="["+c+"] "+w_k(a).replace(/\n/g,"
")+"
";if(b==1){d="Error: "+d+"";w_g.focus()}}catch(e){}w_i(d)}function w_i(a){if(!w_a)return;try{w_ea();w_g.document.write(a);w_g.scrollTo(0,1000000)}catch(b){}} ;function w_f(a){if(a in w_l)return w_l[a];return w_l[a]=navigator.userAgent.toLowerCase().indexOf(a)!=-1}var w_l={};function w_d(){return w_f("msie")&&!window.opera}function w_fa(a){if(typeof Error!="undefined")throw new Error(a||"Assertion Failed");else throw a;}function w_ga(a){a=a||"Assertion failed";if(typeof w_b!="undefined")w_b(a+"\n");w_fa(a)}function w_m(a,b){if(!a){b=b||"Assertion failed";w_ga(b)}}function w_ha(a,b){a.style.display=b?"":"none"}function w_ia(a,b){a.style.display=b?"block": "none"}function w_n(a,b){a.style.display=b?"inline":"none"}function w_o(a,b){if(a==null||a.className==null)return false;if(a.className==b)return true;var c=a.className.split(" ");for(var d=0;d/g;function w_k(a){if(!a)return"";return a.replace(w_ka,"&").replace(w_la,"<").replace(w_ma,">").replace(w_na,""")}var w_na=/\"/g;function w_oa(a){return document.getElementById(a)}function w_pa(a){return document.all[a]}var w_qa=document.getElementById?w_oa: w_pa;function w_j(a){try{if(window.parent!=window&&window.parent.log){window.parent.log(window.name+"::"+a);return}}catch(b){}var c=w_qa("log");if(c){var d="

"+new Date+""+a+"

";c.innerHTML=d+c.innerHTML}else window.status=a};function w_s(){}w_s.raise=function(a){if(typeof Error!="undefined")throw new Error(a||"Assertion Failed");else throw a;};w_s.fail=function(a){a=a||"Assertion failed";if(!(typeof w_b=="undefined"))w_b(a+"\n");w_s.raise(a)};w_s.isTrue=function(a,b){if(!a){if(b===undefined)b="Assertion failed";w_s.fail(b)}};w_s.equals=function(a,b,c){if(a!=b){if(c===undefined)c="AS_Assert.equals failed: <"+a+"> != <"+b+">";w_s.fail(c)}};w_s.typeOf=function(a,b,c){if(typeof a==b)return;if(a||a=="")try{if(b==w_s.TYPE_MAP[typeof a]|| a instanceof b)return}catch(d){}if(c===undefined){if(typeof b=="function"){var e=b.toString().match(/^\s*function\s+([^\s\{]+)/);if(e)b=e[1]}c="AS_Assert.typeOf failed: <"+a+"> not typeof "+b}w_s.fail(c)};w_s.TYPE_MAP={string:String,number:Number,"boolean":Boolean};w_s.numArgs=function(a,b){var c=w_s.numArgs.caller;if(c&&c.arguments.length!=a){if(b===undefined)b=c.name+" expected "+a+" arguments but received "+c.arguments.length;w_s.fail(b)}};var w_t;function w_ra(){var a=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];if(typeof XMLHttpRequest=="undefined"&&typeof ActiveXObject!="undefined"){for(var b=0;b"+c.stack);throw c;}};var w_ua=0,w_u=0;if("undefined"==typeof w_j)w_j=function(){};function w_va(a){var b=-1;try{b=a.status}catch(c){}return b}function w_wa(a){var b=null;try{b=a.statusText}catch(c){}return b}function w_xa(a,b,c,d){if(a.readyState==4)try{var e=true;if(d)try{e=!(false===d(a))}catch(f){w_j("Message ("+b+") handling failed: "+f);throw f;}var g=w_va(a);if(200===g){w_j("Message ("+b+") received after "+((new Date).getTime()-c)+" ms");try{var h=(new Date).getTime();if(e&&a.responseText.length)eval(a.responseText); w_j("Message ("+b+") processing took "+((new Date).getTime()-h)+" ms")}catch(f){w_j("Message ("+b+") processing failed: "+f);alert(f+"\n"+f.stack+"\n\n"+a.responseText);throw f;}}else if(204==g)w_j("Message ("+b+") received after "+((new Date).getTime()-c)+" ms");else w_j("Message ("+b+") failed with response "+g+" "+w_wa(a)+" after "+((new Date).getTime()-c)+" ms.")}finally{--w_u}}function w_ya(a,b,c){var d="";if(b){var e="";for(var f=0;f=0;)m=m.substring(0,n)+"&"+m.substring(n+1);w_j("Message ("+i+") sent: POST "+m+".");++w_u;w_sa(j,a,d,l)};var w_za=this;if(!Function.prototype.apply)Function.prototype.apply=function(a,b){var c=[],d,e;if(!a)a=w_za;var f=b||[];for(var g=0;g=0;b--)this[b+a]=this[b];for(var c=0;c"+a.template+"\n",c=this.Cb(b);a.parsedTemplate=this.O(c);return a};w_x.ConfigureWidget=function(a,b){if(!b)b="config";var c=document.forms[b].widgetId.value,d=document.forms[b].widgetType.value,e=w_A.ProcessForm(document.forms[b],a);if(e.success)w_.SaveWidget(e.values, c,d)};function w_(){}w_.Init=function(a,b,c){w_.L={};w_.$b=a;w_.Ia=b;w_.Sc=c;w_.fc=null;if(!w_.ab)w_.ab={}};w_.TrapClicks=function(a){var b=w_.CreateTransparentClickTrappingDiv(a.document);document.body.appendChild(b)};w_._SetupPreview=function(){w_.TrapClicks(window)};w_.NEW_WIDGET_WINDOW_NAME="chooseWidget";w_.CHOOSE_WIDGET_ACTION="chooseWidget";w_.EDIT_WIDGET_ACTION="editWidget";w_.GetCallbackUrl=function(){return w_.Ia};w_.SetPageActionUrl=function(a,b){w_.Ua=a;w_.Kc=b};w_.GetPageActionUrl=function(){return w_.Ua}; w_.SetWidgetRefreshUrl=function(a){w_.Pc=a};w_.GetWidgetRefreshUrl=function(){return w_.Pc};w_._SetDataContext=function(a){w_.fc=a};w_._SetSystemMarkup=function(a){w_.ab=a};w_._RegisterWidget=function(a,b,c){var d=new w_x(b);if(!c)c=window[a];var e=new c(d);d.Nb(e);w_.L[b.instanceId]=e;w_.DisplayWidget(e);return e};w_._RegisterNewWidget=function(a,b,c){var d=w_._RegisterWidget(a,b,c),e=d.b();e.Mb(true);return d};w_.DisplayWidget=function(a,b){var c=a.b();if(c.N()==w_w.DISPLAY_MODE_NONE)return;if(b|| a.f&&a.f())c.hb();if(c.N()==w_w.DISPLAY_MODE_FULL)if(a.g)a.g();a.b().Fc=false};w_.GetWidget=function(a){if(w_.L)return w_.L[a];return null};w_._PopupPaneFromParams=function(a,b,c,d,e){var f="";if(d)f="&widgetId="+d;var g=w_.$b+"&action="+a+"§ionId="+b+"&widgetType="+c+f;if(window.name==e){window.location.replace(g);window.focus();return window}var h=window.open(g,e,"width=570,height=600,left=75,top=20,resizable=yes,scrollbars=yes");h.focus();return h};w_._PopupConfig=function(a){var b=a.getAttribute("id"), c=w_.GetWidget(b);if(c){var d=c.b().configWin;if(d!=null&&!d.closed){d.focus();return false}}var e="config"+b,f=w_._PopupPaneFromParams(w_.EDIT_WIDGET_ACTION,a.parentNode.getAttribute("id"),a.getAttribute("widgetType"),b,e);if(c)c.b().configWin=f;return false};w_._PopupToolbox=function(a){w_._PopupPaneFromParams(w_.CHOOSE_WIDGET_ACTION,a.parentNode.getAttribute("id"),a.getAttribute("widgetType"),a.getAttribute("id"),w_.NEW_WIDGET_WINDOW_NAME);return false};w_.DeleteWidgetFromPage=function(a,b){w_.p(b, b.LayoutsMessages.DELETING,w_.STATUS_MESSAGE_PENDING_CLASS);w_.RunPageAction("delete",{},a,b)};w_x.prototype.Lb=function(a,b){w_.p(b,b.LayoutsMessages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);this.w("configure",a)};w_.SaveNewWidget=function(a,b,c){var d=document.getElementById("sectionId").value;a.sectionid=d;w_.p(c,c.LayoutsMessages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);w_.RunPageAction("addnew",a,"",b)};w_.SaveWidget=function(a,b,c){w_m(c!=null,"no type");var d=_WidgetManager._GetWidget(b);w_m(d!= null,"no widget for "+b);if(d.b().zb())w_.SaveNewWidget(a,c,window);else d.a.Lb(a,window)};w_._RunInitialAction=function(a){var b=w_._GetWidget(a);if(b)b.b().w("initial")};w_.w=function(a,b,c,d,e){w_.RunAction(w_.Ia,a,b,c,d,e)};w_.RunPageAction=function(a,b,c,d,e){if(!w_.Ua){w_j("RunPageAction error: pageActionUrl_ is undefined. widgetid: "+c+" action: "+a);return}b.pageToken=w_.Kc;w_.RunAction(w_.Ua,a,b,c,d,e)};w_.RunAction=function(a,b,c,d,e,f){var g=["action",b,"widgetId",d,"widgetType",e,"responseType", "js"];for(var h in c)if(typeof c[h]=="object")for(var i=0;i0&&a.substring(0,4)!="http")a="http://"+a;return a};w_.GetFirstElementInElementWithClass=function(a,b){if(w_o(a,b))return a; if(a){var c=a.childNodes.length;for(var d=0;db)return LayoutsMessages.NUMBER_TOO_LARGE+" "+b;return undefined}};function w_z(){this.q=[];for(var a in w_.fc)this.q[this.q.length]=a}w_z.DEFAULT_DICTIONARY_KEY= "";w_z.MAX_DICTIONARY_DEPTH=50;w_z.SEPARATOR_CHAR=".";w_z.prototype.M=function(a,b){if(this.q.length>=w_z.MAX_DICTIONARY_DEPTH)w_s.raise("Cannot add another dictionary: "+a);if(a.indexOf(w_z.SEPARATOR_CHAR)>-1)w_s.raise("Cannot add dictionary name containing '.': "+a);var c={};c.name=a;c.data=b;this.q[this.q.length]=c};w_z.prototype.xa=function(a){var b=this.q[this.q.length-1];if(b.name!=a)w_s.raise("Dictionary "+a+" is not the last one, and can't be deleted: "+b.name);this.q.splice(this.q.length- 1,1)};w_z.prototype.W=function(a){if(a==null)a=w_z.DEFAULT_DICTIONARY_KEY;for(var b=this.q.length-1;b>=0;--b)if(this.q[b].name==a)return this.q[b].data;return null};w_z.prototype.ma=function(){return this.W(w_z.DEFAULT_DICTIONARY_KEY)};w_z.prototype.db=function(a){this.M(w_z.DEFAULT_DICTIONARY_KEY,a)};w_z.prototype.j=function(a){var b=this.W(a);if(b)return b;var c=a.split(w_z.SEPARATOR_CHAR);if(c.length==1){b=this.ma();return b[a]}b=this.W(c[0]);var d=0;if(b)d=1;else b=this.ma();for(var e=d;e=500){if(b.responseText.length)document.body.innerHTML=b.responseText;else alert(LayoutsMessages.SERVER_ERROR);return false}return a?a(b):true}};function w_C(a){this.a=a}w_C.WIDGET_TYPE_NAME="AdSense";w_C.prototype.d=function(){return w_C.WIDGET_TYPE_NAME};w_C.prototype.b=function(){return this.a};w_C.prototype.c=function(a,b){this.a.h(b)};var _AdSenseView=w_C;function w_D(a){this.a=a;this.e=a.k()}w_D.WIDGET_TYPE_NAME="BlogArchive";w_D.POST_LIST_CLASS="posts";w_D.INTERVAL_EXPANDED_VALUE="expanded";w_D.INTERVAL_COLLAPSED_VALUE="collapsed";w_D.LOADING_MSG="loading...";w_D.POST_COUNT_CLASS="post-count";w_D.POST_COUNT_LINK_CLASS="post-count-link";w_D.MENU_ROOT_ID="ArchiveMenu";w_D.TOGGLE_OPEN_CLASS="toggle-open";w_D.Ec="▼ ";w_D.ac="► ";w_D.prototype.d=function(){return w_D.WIDGET_TYPE_NAME};w_D.prototype.b=function(){return this.a};w_D.prototype.f= function(){return false};w_D.prototype.c=function(a,b){if(a=="configure")this.a.h(b);else if(a=="getTitles")this.Sb(b);else{this.widgetInfo.data=b;w_.DisplayWidget(this)}};w_D.prototype.g=function(){var a={};a.select=function(i){return i&&w_o(i,"toggle")};var b=this.a.s("ArchiveList");if(!b)return;var c=w_r(this.e.rootElement,a),d;if(c.length>0&&c[0].currentStyle)d=c[0].parentNode.currentStyle.color;for(var e=0;e"+e.title+"
";c.appendChild(f)}};w_D.prototype.pb=function(a){var b=this.e.rootElement.getElementsByTagName("A");for(var c in b){var d=b[c];if(d.href==a)return d.parentNode}};w_D.prototype.Ab=function(a){var b=a.getElementsByTagName("UL");if(b.length>0&&!w_o(b[0],"posts"))return;var c=this.rb(a),d=a.getElementsByTagName("LI"),e=d.length;return e-1};w_E.prototype.sa=function(a){a=a||window.event;var b=a.target||a.srcElement;this.a.w("nextposts",{path:b.href}); return false};w_E.prototype.fb=function(a){var b="";if(document.selection)b=document.selection.createRange().text;else if(window.getSelection)b=window.getSelection();else if(document.getSelection)b=document.getSelection();window.open(a+"?t="+encodeURIComponent(b)+"&u="+encodeURIComponent(window.location.href)+"&n="+encodeURIComponent(document.title),"bloggerForm","scrollbars=no,width=475,height=300,top=175,left=75,status=yes,resizable=yes");return false};var _BlogView=w_E;w_F.Id={BLOGS:"blogs",CONTAINER:"container",SHOW_ALL:"show-all",SHOW_N:"show-n"};function w_F(a){this.a=a;this.e=a.k()}w_F.WIDGET_TYPE_NAME="BlogList";w_F.prototype.ha=null;w_F.prototype.S=null;w_F.prototype.d=function(){return w_F.WIDGET_TYPE_NAME};w_F.prototype.b=function(){return this.a};w_F.prototype.f=function(){return false};w_F.prototype.c=function(a,b){if(a=="configure")this.a.h(b)};w_F.prototype.g=function(){var a=this.a.j();this.ha=a.totalItems;this.S=a.numItemsToShow;if(this.S!=0&&this.ha> this.S){var b=this.a.n(w_F.Id.SHOW_ALL);b.onclick=this.bb.bind(this);var c=this.a.n(w_F.Id.SHOW_N);c.onclick=this.bb.bind(this)}var d=this.bc.bind(this),e=window;if(e.addEventListener)e.addEventListener("load",d,false);else if(e.attachEvent)e.attachEvent("onload",d);else e.onload=d};w_F.prototype.bb=function(){var a=this.a.n(w_F.Id.BLOGS),b=a.getElementsByTagName("li");for(var c=this.S;cc){a.height=Math.round(c/a.width*a.height);a.width=c}a.style.visibility="visible"};w_L.prototype.c=function(a,b){if(a=="configure")this.a.h(b)};var _ImageView=w_L;function w_M(a,b,c,d,e,f,g,h){this.o=a;this.Xb=b!="null"?b:null;this.kc=c;this.ic=d;this.jc=e;this.vc=f;this.lc=g;this.Lc=h;this.v=-1;this.B=-1;this.C=null;this.r=document.getElementById(this.o+"_picImg");this.aa=document.getElementById(this.o+"_changeImageLink");this.ea=document.getElementById(this.o+"_imageChoiceTable");this.gc=document.getElementById(this.o+"_imgSrcFromPCRadio");this.hc=document.getElementById(this.o+"_imgSrcFromWebRadio");this.i=document.getElementById(this.o+"_imgFileNameInput"); this.R=document.getElementById(this.o+"_imgUrlTextInput");this.Vb=window.frames[this.o+"_asynchronousFileUploadIframe"];this.Na=0;this.l=new Image;this.l.onload=this.hitch(this,this.sc);this.l.onerror=this.hitch(this,this.rc);this.cc=false;this.Ra=null;this.m=null;this.H=null;this.Va=false}w_M.prototype.Qa=function(){return this.gc.checked};w_M.prototype.sc=function(){this.Na=0;w_A.ClearError(this.o+"_imgUrlTextError");w_A.ClearError(this.o+"_imgFileNameError");if(!this.Qa()||this.v==0){this.v=this.l.width; this.B=this.l.height;this.C=this.l.src}var a=1,b=1;if(this.l.width>300)a=300/this.l.width;if(this.l.height>300)b=300/this.l.height;var c=Math.min(a,b);this.r.style.width=Math.round(this.l.width*c)+"px";this.r.style.height=Math.round(this.l.height*c)+"px";this.r.src=this.l.src;this.r.style.display="";this.ea.style.display="none";this.aa.style.display="";this.i.disabled=true;if(this.kc)this.kc.call({},this.r.src,this.C,this.v,this.B)};w_M.prototype.J=function(a,b,c,d){if(a){w_A.SetError(this.o+"_imgFileNameError", b);w_A.ClearError(this.o+"_imgUrlTextError")}else{w_A.SetError(this.o+"_imgUrlTextError",b);w_A.ClearError(this.o+"_imgFileNameError")}this.r.style.display="none";this.ea.style.display="";this.aa.style.display="none";this.i.disabled=false;if(this.ic)this.ic.call({},c,d)};w_M.prototype.rc=function(){if(this.Na<2){this.Na++;var a=this.l.src;this.l.src="";this.D(a)}else this.J(this.Qa(),WidgetMessages.SIV_INVALID_URL,this.r.src)};w_M.prototype.hitch=function(a,b){return function(){b.apply(a,arguments)}}; w_M.prototype.D=function(a){this.Za();this.l.src=a};w_M.prototype.Ja=function(a){var b=a||window.event;if(window.event){b.returnValue=false;b.cancelBubble=true}else{b.preventDefault();b.stopPropagation()}this.r.style.display="none";this.aa.style.display="none";this.ea.style.display="";this.i.disabled=false;this.R.value="";this.Wa();this.Va=true;if(this.jc)this.jc.call({})};w_M.prototype.Oa=function(){this.gc.checked="true";this.R.value="";this.Za();this.nc();this.cc=true;try{this.m.submit()}catch(a){this.J(true, WidgetMessages.SIV_INVALID_URL,this.m.value)}this.mc()};w_M.prototype.G=function(){var a=this.Vb.document.result;if(!a)this.J(true,WidgetMessages.SIV_INVALID_URL,this.i.value);if(a.hasErrors)if(a.errors.length>0)this.J(true,a.errors[0].message,this.i.value,a.Gc);else this.J(true,WidgetMessages.SIV_INVALID_URL,this.i.value,a.Gc);else{var b=Math.max(a.origWidth,a.origHeight),c=this.Ma();if(this.v!=0&&c!=-1&&b>c){var d=c/b;this.v=Math.round(a.origWidth*d);this.B=Math.round(a.origHeight*d)}else{this.v= a.origWidth;this.B=a.origHeight}this.C=a.mainSrc;this.D(a.thumbSrc)}};w_M.prototype.Pa=function(a){var b=a||window.event;if(b.keyCode==9)return;this.hc.checked="true";if(this.Ra!=null)window.clearTimeout(this.Ra);var c=this.hitch(this,function(){if(this.Va||this.l.src!=this.R.value.toLowerCase()){this.Wa();this.D(this.R.value.toLowerCase())}this.Va=false});this.Ra=window.setTimeout(c,1000)};w_M.prototype.Sa=function(a){this.hc.checked=true;this.R.value=a;this.D(a)};w_M.prototype.Za=function(){this.r.src= "img/icon_inprogress.gif";this.r.style.width="200px";this.r.style.height="200px";this.r.style.display="";this.ea.style.display="none";this.aa.style.display="none"};w_M.prototype.nc=function(){if(!this.m){this.m=document.createElement("form");this.m.action="imageUpload.do";this.m.method="POST";this.m.target=this.Vb.name;this.m.encoding="multipart/form-data";this.m.style.display="none";if(this.Xb){var a=document.createElement("input");a.type="hidden";a.name="blogID";a.value=this.Xb;this.m.appendChild(a)}var b= document.createElement("input");b.type="hidden";b.name="sectionWidth";b.id="sectionWidth";this.m.appendChild(b);var c=document.createElement("input");c.type="hidden";c.name="photoUploadSecurityToken";c.value=this.Lc;this.m.appendChild(c);document.body.appendChild(this.m)}var d=this.Ma();if(d==-1)d=1600;document.getElementById("sectionWidth").value=d;this.H={parent:this.i.parentNode,nextSibling:this.i.nextSibling};this.i.parentNode.removeChild(this.i);this.m.appendChild(this.i)};w_M.prototype.mc=function(){this.m.removeChild(this.i); if(this.H&&this.H.nextSibling)this.H.parent.insertBefore(this.i,this.H.nextSibling);else this.H.parent.appendChild(this.i)};w_M.prototype.Wa=function(){var a=document.createElement("input");a.type="file";a.name=this.i.name;a.id=this.i.id;a.onchange=this.i.onchange;var b=this.i.nextSibling;if(b==null)this.i.parentNode.appendChild(a);else this.i.parentNode.insertBefore(a,b);this.i.parentNode.removeChild(this.i);this.i=a};w_M.prototype.Ma=function(){return this.vc==-1&&this.lc?this.lc():this.vc};function w_N(){this.usiContainers= []}var w_Ga=new w_N;w_N.prototype.Ka=function(a,b,c,d,e,f,g,h){this.usiContainers[a]=new w_M(a,b,eval(c),eval(d),eval(e),f,eval(g),h);return this.usiContainers[a]};w_N.prototype.da=function(a){return this.usiContainers[a]};w_N.prototype.G=function(a){var b=this.da(a);if(b&&b.cc)b.G()};var _UploadSimpleImage=w_Ga;w_N.prototype._createUsiContainer=w_N.prototype.Ka;w_N.prototype._getUsiContainer=w_N.prototype.da;w_N.prototype._channelResultArrived=w_N.prototype.G;w_M.prototype._changeImage=w_M.prototype.Ja; w_M.prototype._imgUrlFileOnChange=w_M.prototype.Oa;w_M.prototype._imgUrlTextOnKeyUp=w_M.prototype.Pa;w_M.prototype._loadInitialUrl=w_M.prototype.Sa;w_M.prototype._loadImageFromUrl=w_M.prototype.D;function _singleImageConfig_successfulUploadCallback(a,b,c,d){window.singleImageConfig_thumbImageUrl=a;window.singleImageConfig_imageUrl=b;window.singleImageConfig_imageWidth=c;window.singleImageConfig_imageHeight=d;var e=document.getElementById("shrinkToFitRow");if(e)e.style.visibility="hidden"}function _singleImageConfig_resetCallback(){window.singleImageConfig_imageUrl=null;var a=document.getElementById("shrinkToFitRow");if(a)a.style.visibility="visible"}function _SIV_getScaledContainerWidth(){return document.getElementById("checkShrink").checked? _SIV_getContainerWidth():-1}function _SIV_getContainerWidth(){var a=document.getElementById("sectionId").value,b=150;if(w_.IsOpenerReachable(window)&&window.opener.document.getElementById(a))b=window.opener.document.getElementById(a).clientWidth;return b}function _SIV_setConfigurationOptions(){if(window.singleImageConfig_imageUrl==null){w_.p(window,WidgetMessages.SIV_NO_IMAGE,w_.STATUS_MESSAGE_BAD_CLASS);return}var a=document.forms.config.widgetId.value,b=_SIV_getContainerWidth(),c=document.getElementById("checkShrink").checked, d=window.singleImageConfig_imageWidth,e=window.singleImageConfig_imageHeight;if(c){var f=1;if(d>b){f=b/d;d=b;e=Math.round(e*f)}}var g={originalUrl:window.singleImageConfig_imageUrl,originalWidth:window.singleImageConfig_imageWidth,originalHeight:window.singleImageConfig_imageHeight,displayUrl:window.singleImageConfig_thumbImageUrl,displayWidth:d,displayHeight:e,sectionWidth:b,shrinkToFit:c,title:document.getElementById("title").value,caption:document.getElementById("imageCaption").value,link:document.getElementById("link").value, securityToken:document.forms.config.securityToken.value};w_.SaveWidget(g,a,w_L.WIDGET_TYPE_NAME)};function w_O(a){this.a=a;this.e=a.k()}w_O.successfulUploadCallback=function(a,b,c,d){w_O.Mc=a;w_O.C=b;w_O.v=c;w_O.B=d;var e=document.getElementById("shrinkToFitRow");if(e)e.style.visibility="hidden";e=document.getElementById("shrinkToFitMessageRow");if(e)e.style.visibility="hidden"};w_O.resetCallback=function(){w_O.C=null;var a=document.getElementById("shrinkToFitRow");if(a)a.style.visibility="visible";a=document.getElementById("shrinkToFitMessageRow");if(a)a.style.visibility="visible"};w_O.getScaledContainerWidth= function(){return document.getElementById("checkShrink").checked?w_O.getContainerWidth():-1};w_O.getContainerWidth=function(){var a=document.getElementById("sectionId").value,b=600;if(w_.IsOpenerReachable(window)&&window.opener.document.getElementById(a))b=window.opener.document.getElementById(a).clientWidth;return b};w_O.WIDGET_TYPE_NAME="Header";w_O.prototype.d=function(){return w_O.WIDGET_TYPE_NAME};w_O.prototype.f=function(){return false};w_O.prototype.b=function(){return this.a};w_O.prototype.c= function(a,b){this.a.h(b)};w_O.FilterMap={title:w_A.GetRequiredStringFilter(),description:null,imagePlacement:null,useImage:null,securityToken:null};w_O.ConfigureWidget=function(){var a=document.forms.config.widgetId.value,b=document.forms.config.widgetType.value,c=w_A.ProcessForm(document.forms.config,w_O.FilterMap),d=w_O.getContainerWidth();if(c.success){if(w_O.C){var e=w_O.v,f=w_O.B,g=document.getElementById("checkShrink").checked;if(g){var h=1;if(e>d){h=d/e;e=d;f=Math.round(f*h)}}c.values.originalUrl= w_O.C;c.values.originalWidth=w_O.v;c.values.originalHeight=w_O.B;c.values.displayUrl=w_O.Mc;c.values.displayWidth=e;c.values.displayHeight=f;c.values.sectionWidth=d;c.values.shrinkToFit=g}c.values.securityToken=document.forms.config.securityToken.value;w_.SaveWidget(c.values,a,b);return true}else return false};w_O.hideImageOptions=function(){document.getElementById("imageOptions").style.display="none";return false};w_O.showImageOptions=function(){document.getElementById("imageOptions").style.display= "";return false};var _HeaderView=w_O;_HeaderView.prototype=w_O.prototype;_HeaderView._ConfigureWidget=_HeaderView.ConfigureWidget;_HeaderView._hideImageOptions=_HeaderView.hideImageOptions;_HeaderView._showImageOptions=_HeaderView.showImageOptions;_HeaderView._successfulUploadCallback=_HeaderView.successfulUploadCallback;_HeaderView._resetCallback=_HeaderView.resetCallback;_HeaderView._getScaledContainerWidth=_HeaderView.getScaledContainerWidth;_HeaderView._getContainerWidth=_HeaderView.getContainerWidth;function w_P(a,b){this.a=a;this.e=a.k();this.Oc=b}w_P.prototype.b=function(){return this.a};w_P.prototype.d=function(){return this.Oc};w_P.prototype.c=function(a,b){if(a=="configure")this.a.h(b)};w_P.ConfigureWidget=function(a){setFormAndSubmit();var b=document.forms.stuffform.widgetId.value,c=document.forms.stuffform.securityToken.value,d=document.getElementById("textarea"),e=document.getElementById("title"),f=d.value;if(a=="Text")f=f.replace(/\n/g,"
");var g={content:f,title:e.value,securityToken:c}; w_.SaveWidget(g,b,a)};function w_Q(a){w_P.call(this,a,"Text")}w_Q.inherits(w_P);w_Q.ConfigureWidget=function(){w_P.ConfigureWidget("Text")};function w_R(a){w_P.call(this,a,"HTML")}w_R.inherits(w_P);w_R.ConfigureWidget=function(){w_P.ConfigureWidget("HTML")};var _TextView=w_Q;_TextView.prototype=w_Q.prototype;_TextView._ConfigureWidget=_TextView.ConfigureWidget;var _HTMLView=w_R;_HTMLView.prototype=w_R.prototype;_HTMLView._ConfigureWidget=_HTMLView.ConfigureWidget;function w_H(a){document.write('

Read More

0 張貼意見:

 

gabriel

UUTF-8P_8http://nawiblog.blogspot.com/2008/03/blog-post_5603.html?f@bAEIMQUZ^ BCD OPbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP _Content-EncodingVServer]Last-Modified]Cache-ControlTDate^Content-LengthWExpires\Content-TypeTgzipWGFE/1.3_Thu, 12 Jun 2008 22:28:18 GMTVpublic_Mon, 23 Jun 2008 07:00:43 GMTS897_Tue, 28 Jul 2009 07:00:43 GMT12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13ot} .<APXejr -26JlXO/* Copyright 2008 Google, Inc. All rights reserved. */ body { padding:0; margin:0; font-family:"Trebuchet MS",Verdana,Arial,Sans-serif; font-size:100%; white-space:nowrap; } a { text-decoration:none; } #b-navbar { height:29px; border-bottom:1px solid #024; font-size:.85em; line-height:.85em; } #b-navbar #b-logo { position:absolute; top:.15em; left:5px; } #b-navbar #b-logo #navbar-logo { width:24px; height:24px; } /* Hide visually, leave in for screenreaders */ #b-navbar #b-logo span { display:block; position:absolute; left:-9000px; } #b-search { margin:0 0 0 34px; padding:4px 1em 3px .5em; } #b-search td { vertical-align:middle; } #b-query { margin:0 .5em 0 0; } .btn { border-top:1px solid; border-bottom:1px solid; margin:0 .5em 0 1px; padding:0; font-size:.80em; line-height:.85em; text-transform:uppercase; white-space:nowrap; cursor:pointer; cursor:hand; } .btn div { border-left:1px solid; border-right:1px solid; margin:0 -1px; padding:.21em .3em; height:.85em; position:relative; } .btn div img { /* can't leave it in the flow because IE will screw up the line-height */ position:absolute; top:.2em; left:.3em; } #bt-flag-body, #bt-unflag-body { padding-left:1em; } #bt-unflag-body { display:none; } .flagged #bt-flag-body { display:none; } .flagged #bt-unflag-body { display:block; } /* drop down for the flag as objectionable button */ #flagi, #unflagi { display:none; top:3px; color:#000; background-color:#ff9; border:1px solid #333; z-index:300; padding:4px; font-size:.7em; line-height:.8em; } #flagi a, #unflagi a { color:#3366cc; text-decoration:underline; } .b-mobile { display:none; } #b-sms { margin:0 0 0 100px; padding:4px 7px; line-height:1em; font-size:100%; text-align:left; } #b-sms a { margin-right:.5em; line-height:1em; } #b-sms a:hover { text-decoration:underline; } @media handheld { body .b-mobile { display:block; } body #b-search, body #flagi, body #unflagi { display:none; } /* Some phones can't handle the positioning hack, so hide this */ body #b-navbar #b-logo span { display:none; } }_9http://www.blogger.com/v-css/navbar/3328360018-navbar.css FGH OKbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP _Content-EncodingVServer]Last-Modified]Cache-ControlTDate^Content-LengthWExpires\Content-TypeTgzipWGFE/1.3_Thu, 12 Jun 2008 22:28:18 GMTVpublic_Mon, 23 Jun 2008 07:00:43 GMTS282_Tue, 28 Jul 2009 07:00:43 GMT12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13jox)7<KS`em  (-1ElSO/* Copyright 2008 Google, Inc. All rights reserved. */ body { color:#fff; } a, .btn div { color:#9cf; } a:hover { color:#fff; } #navbar-logo { background-image:url("../../img/navbar/1/logobar.png"); } #b-navbar { background-color:#036; border-bottom:1px solid #024; } #b-search { background:#147 url("../../img/navbar/1/corner.gif") no-repeat left bottom; } #b-query { border:1px solid #47a; } .btn, .btn div { border-color: #47a; } .btn div:hover { background-color: #47a; }_4http://www.blogger.com/v-css/navbar/1297325411-1.css JKLOabplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP _Content-EncodingVServer]Last-Modified]Cache-ControlTDate^Content-LengthWExpires\Content-TypeTgzipWGFE/1.3_Thu, 12 Jun 2008 22:28:18 GMTVpublic_Mon, 23 Jun 2008 07:00:43 GMTS685_Tue, 28 Jul 2009 07:00:43 GMT12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13ns|   *1?MRaiv{ ">CG[liO:// Copyright 2005, Google Inc. // // Operations on cookies that are common across our pages. // // Original Author: Pal Takacsi-Nagy (pal@google.com) /** * Sets a Cookie with the given name and value. * * name Name of the cookie * value Value of the cookie * [expires] Expiration date of the cookie (default: end of current session) * [path] Path where the cookie is valid (default: path of calling document) * [domain] Domain where the cookie is valid * (default: domain of calling document) * [secure] Boolean value indicating if the cookie transmission requires a * secure transmission */ function setCookie(name, value, domain, expires, path, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } /** * Gets the value of the specified cookie. * * name Name of the desired cookie. * * Returns a string containing value of specified cookie, * or null if cookie does not exist. */ function getCookie(name) { var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else { begin += 2; } var end = document.cookie.indexOf(";", begin); if (end == -1) { end = dc.length; } return unescape(dc.substring(begin + prefix.length, end)); } _8http://www.blogger.com/v-js/3625575137-cookies.common.js NOPOlbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP _Content-EncodingVServer]Last-Modified]Cache-ControlTDate_Transfer-EncodingWExpires\Content-TypeTgzipWGFE/1.3_Thu, 12 Jun 2008 22:28:18 GMTVpublic_Mon, 23 Jun 2008 07:00:43 GMTXIdentity_Tue, 28 Jul 2009 07:00:43 GMT12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13ot}  +2@NSgo|%*-INRfltO// Copied from .../google3/javascript/common.js //------------------------------------------------------------------------ // This file contains common utilities and basic javascript infrastructure. // // Notes: // * Press 'D' to toggle debug mode. // // Functions: // // - Assertions // DEPRECATED: Use assert.js // AssertTrue(): assert an expression. Throws an exception if false. // Fail(): Throws an exception. (Mark block of code that should be unreachable) // AssertEquals(): assert that two values are equal. // AssertNumArgs(): assert number of arguments for the function // AssertType(): assert that a value has a particular type // // - Cookies // SetCookie(): Sets a cookie. // ExpireCookie(): Expires a cookie. // GetCookie(): Gets a cookie value. // // - Dynamic HTML/DOM utilities // MaybeGetElement(): get an element by its id // GetElement(): get an element by its id // GetParentNode(): Get the parent of an element // GetAttribute(): Get attribute value of a DOM node // SetInnerHTML(): set the inner HTML of a node // GetInnerHTML(): get the inner HTML of a node // ClearInnerHTML(): clear the inner HTML of a node // SetCssStyle(): Sets a CSS property of a node. // GetStyleProperty(): Get CSS property from a style attribute string // ShowElement(): Show/hide element by setting the "display" css property. // ShowBlockElement(): Show/hide block element // SetButtonText(): Set the text of a button element. // AppendNewElement(): Create and append a html element to a parent node. // CreateDIV(): Create a DIV element and append to the document. // CreateIFRAME(): Create an IFRAME and append to the document. // HasClass(): check if element has a given class // AddClass(): add a class to an element // RemoveClass(): remove a class from an element // // - Window/Screen utiltiies // GetPageOffsetLeft(): get the X page offset of an element // GetPageOffsetTop(): get the Y page offset of an element // GetPageOffset(): get the X and Y page offsets of an element // GetPageOffsetRight() : get X page offset of the right side of an element // GetPageOffsetRight() : get Y page offset of the bottom of an element // GetScrollTop(): get the vertical scrolling pos of a window. // GetScrollLeft(): get the horizontal scrolling pos of a window // IsScrollAtEnd(): check if window scrollbar has reached its maximum offset // ScrollTo(): scroll window to a position // ScrollIntoView(): scroll window so that an element is in view. // GetWindowWidth(): get width of a window. // GetWindowHeight(): get height of a window // GetAvailScreenWidth(): get available screen width // GetAvailScreenHeight(): get available screen height // GetNiceWindowHeight(): get a nice height for a new browser window. // Open{External/Internal}Window(): open a separate window // CloseWindow(): close a window // // - DOM walking utilities // AnnotateTerms(): find terms in a node and decorate them with some tag // AnnotateText(): find terms in a text node and decorate them with some tag // // - String utilties // HtmlEscape(): html escapes a string // HtmlUnescape(): remove html-escaping. // QuoteEscape(): escape " quotes. // CollapseWhitespace(): collapse multiple whitespace into one whitespace. // Trim(): trim whitespace on ends of string // IsEmpty(): check if CollapseWhiteSpace(String) == "" // IsLetterOrDigit(): check if a character is a letter or a digit // ConvertEOLToLF(): normalize the new-lines of a string. // HtmlEscapeInsertWbrs(): HtmlEscapes and inserts s (word break tags) // after every n non-space chars and/or after or before certain special chars // // - TextArea utilities // GetCursorPos(): finds the cursor position of a textfield // SetCursorPos(): sets the cursor position in a textfield // // - Array utilities // FindInArray(): do a linear search to find an element value. // DeleteArrayElement(): return a new array with a specific value removed. // CloneObject(): clone an object, copying its values recursively. // CloneEvent(): clone an event; cannot use CloneObject because it // suffers from infinite recursion // // - Formatting utilities // PrintArray(): used to print/generate HTML by combining static text // and dynamic strings. // ImageHtml(): create html for an img tag // FormatJSLink(): formats a link that invokes js code when clicked. // MakeId3(): formats an id that has two id numbers, eg, foo_3_7 // // - Miscellaneous // IsDefined(): returns true if argument is not undefined //------------------------------------------------------------------------ // browser detection var agent = navigator.userAgent.toLowerCase(); var is_ie = (agent.indexOf('msie') != -1); //var is_ie5 = (agent.indexOf('msie 5') != -1 && document.all); var is_konqueror = (agent.indexOf('konqueror') != -1); var is_safari = (agent.indexOf('safari') != -1) || is_konqueror; var is_nav = !is_ie && !is_safari && (agent.indexOf('mozilla') != -1); var is_win = (agent.indexOf('win') != -1); delete agent; var BACKSPACE_KEYCODE = 8; var COMMA_KEYCODE = 188; // ',' key var DEBUG_KEYCODE = 68; // 'D' key var DELETE_KEYCODE = 46; var DOWN_KEYCODE = 40; // DOWN arrow key var ENTER_KEYCODE = 13; // ENTER key var ESC_KEYCODE = 27; // ESC key var LEFT_KEYCODE = 37; // LEFT arrow key var RIGHT_KEYCODE = 39; // RIGHT arrow key var SPACE_KEYCODE = 32; // space bar var TAB_KEYCODE = 9; // TAB key var UP_KEYCODE = 38; // UP arrow key var SHIFT_KEYCODE = 16; // This is a "constant" but has different values depending on the browser var semicolon_keycode = (is_ie ? 186 : 59); var MAX_EMAIL_ADDRESS_LENGTH = 320; // 64 + '@' + 255 var MAX_SIGNATURE_LENGTH = 1000; // 1000 chars of maximum signature //------------------------------------------------------------------------ // Assertions // DEPRECATED: Use assert.js //------------------------------------------------------------------------ /** * DEPRECATED: Use assert.js */ function raise(msg) { if (typeof Error != 'undefined') { throw new Error(msg || 'Assertion Failed'); } else { throw (msg); } } /** * DEPRECATED: Use assert.js * * Fail() is useful for marking logic paths that should * not be reached. For example, if you have a class that uses * ints for enums: * * MyClass.ENUM_FOO = 1; * MyClass.ENUM_BAR = 2; * MyClass.ENUM_BAZ = 3; * * And a switch statement elsewhere in your code that * has cases for each of these enums, then you can * "protect" your code as follows: * * switch(type) { * case MyClass.ENUM_FOO: doFooThing(); break; * case MyClass.ENUM_BAR: doBarThing(); break; * case MyClass.ENUM_BAZ: doBazThing(); break; * default: * Fail("No enum in MyClass with value: " + type); * } * * This way, if someone introduces a new value for this enum * without noticing this switch statement, then the code will * fail if the logic allows it to reach the switch with the * new value, alerting the developer that he should add a * case to the switch to handle the new value he has introduced. * * @param {string} opt_msg to display for failure * DEFAULT: "Assertion failed" */ function Fail(opt_msg) { if (opt_msg === undefined) opt_msg = 'Assertion failed'; if (IsDefined(DumpError)) DumpError(opt_msg + '\n'); raise(opt_msg); } /** * DEPRECATED: Use assert.js * * Asserts that an expression is true (non-zero and non-null). * * Note that it is critical not to pass logic * with side-effects as the expression for AssertTrue * because if the assertions are removed by the * JSCompiler, then the expression will be removed * as well, in which case the side-effects will * be lost. So instead of this: * * AssertTrue( criticalComputation() ); * * Do this: * * var result = criticalComputation(); * AssertTrue(result); * * @param {anything} expression to evaluate * @param {string} opt_msg to display if the assertion fails * */ function AssertTrue(expression, opt_msg) { if (!expression) { if (opt_msg === undefined) opt_msg = 'Assertion failed'; Fail(opt_msg); } } /** * DEPRECATED: Use assert.js * * Asserts that two values are the same. * * @param {anything} val1 * @param {anything} val2 * @param {string} opt_msg to display if the assertion fails */ function AssertEquals(val1, val2, opt_msg) { if (val1 != val2) { if (opt_msg === undefined) { opt_msg = "AssertEquals failed: <" + val1 + "> != <" + val2 + ">"; } Fail(opt_msg); } } /** * DEPRECATED: Use assert.js * * Asserts that a value is of the provided type. * * AssertType(6, Number); * AssertType("ijk", String); * AssertType([], Array); * AssertType({}, Object); * AssertType(ICAL_Date.now(), ICAL_Date); * * @param {anything} value * @param {constructor function} type * @param {string} opt_msg to display if the assertion fails */ function AssertType(value, type, opt_msg) { // for backwards compatability only if (typeof value == type) return; if (value || value == "") { try { if (type == AssertTypeMap[typeof value] || value instanceof type) return; } catch (e) { /* failure, type was an illegal argument to instanceof */ } } if (opt_msg === undefined) { if (typeof type == 'function') { var match = type.toString().match(/^\s*function\s+([^\s\{]+)/); if (match) type = match[1]; } opt_msg = "AssertType failed: <" + value + "> not typeof "+ type; } Fail(opt_msg); } var AssertTypeMap = { 'string' : String, 'number' : Number, 'boolean' : Boolean }; /** * DEPRECATED: Use assert.js * * Asserts that the number of arguments to a * function is num. For example: * * function myFunc(one, two, three) [ * AssertNumArgs(3); * ... * } * * myFunc(1, 2); // assertion fails! * * Note that AssertNumArgs does not take the function * as an argument; it is simply used in the context * of the function. * * @param {int} number of arguments expected * @param {string} opt_msg to display if the assertion fails */ function AssertNumArgs(num, opt_msg) { var caller = AssertNumArgs.caller; // This is not supported in safari 1.0 if (caller && caller.arguments.length != num) { if (opt_msg === undefined) { opt_msg = caller.name + ' expected ' + num + ' arguments ' + ' but received ' + caller.arguments.length; } Fail(opt_msg); } } //------------------------------------------------------------------------ // Cookies //------------------------------------------------------------------------ var ILLEGAL_COOKIE_CHARS_RE = /[\s;]/ /** * Sets a cookie. * The max_age can be -1 to set a session cookie. To expire cookies, use * ExpireCookie() instead. * * @param name The cookie name. * @param value The cookie value. * @param opt_max_age The max age in seconds (from now). Use -1 to set a * session cookie. If not provided, the default is -1 (i.e. set a session * cookie). * @param opt_path The path of the cookie, or null to not specify a path * attribute (browser will use the full request path). If not provided, the * default is '/' (i.e. path=/). * @param opt_domain The domain of the cookie, or null to not specify a domain * attribute (brower will use the full request host name). If not provided, * the default is null (i.e. let browser use full request host name). * @return Void. */ function SetCookie(name, value, opt_max_age, opt_path, opt_domain) { value = '' + value; AssertTrue((typeof name == 'string' && typeof value == 'string' && !name.match(ILLEGAL_COOKIE_CHARS_RE) && !value.match(ILLEGAL_COOKIE_CHARS_RE)), 'trying to set an invalid cookie'); if (!IsDefined(opt_max_age)) opt_max_age = -1; if (!IsDefined(opt_path)) opt_path = '/'; if (!IsDefined(opt_domain)) opt_domain = null; var domain_str = (opt_domain == null) ? '' : ';domain=' + opt_domain; var path_str = (opt_path == null) ? '' : ';path=' + opt_path; var expires_str; // Case 1: Set a session cookie. if (opt_max_age < 0) { expires_str = ''; // Case 2: Expire the cookie. // Note: We don't tell people about this option in the function doc because // we prefer people to use ExpireCookie() to expire cookies. } else if (opt_max_age == 0) { // Note: Don't use Jan 1, 1970 for date because NS 4.76 will try to convert // it to local time, and if the local time is before Jan 1, 1970, then the // browser will ignore the Expires attribute altogether. var pastDate = new Date(1970, 1 /*Feb*/, 1); // Feb 1, 1970 expires_str = ';expires=' + pastDate.toUTCString(); // Case 3: Set a persistent cookie. } else { var futureDate = new Date(Now() + opt_max_age * 1000); expires_str = ';expires=' + futureDate.toUTCString(); } document.cookie = name + '=' + value + domain_str + path_str + expires_str; } var EXPIRED_COOKIE_VALUE = 'EXPIRED'; /** * Expires a cookie. * * @param name The cookie name. * @param opt_path The path of the cookie, or null to expire a cookie set at * the full request path. If not provided, the default is '/' (i.e. path=/). * @param opt_domain The domain of the cookie, or null to expire a cookie set * at the full request host name. If not provided, the default is null (i.e. * cookie at full request host name). * @return Void. */ function ExpireCookie(name, opt_path, opt_domain) { SetCookie(name, EXPIRED_COOKIE_VALUE, 0, opt_path, opt_domain); } /** Returns the value for the first cookie with the given name * @param name : string * @return a string or the empty string if no cookie found. */ function GetCookie(name) { var nameeq = name + "="; var cookie = String(document.cookie); for (var pos = -1; (pos = cookie.indexOf(nameeq, pos + 1)) >= 0;) { var i = pos; // walk back along string skipping whitespace and looking for a ; before // the name to make sure that we don't match cookies whose name contains // the given name as a suffix. while (--i >= 0) { var ch = cookie.charAt(i); if (ch == ';') { i = -1; // indicate success break; } else if (' \t'.indexOf(ch) < 0) { break; } } if (-1 === i) { // first cookie in the string or we found a ; var end = cookie.indexOf(';', pos); if (end < 0) { end = cookie.length; } return cookie.substring(pos + nameeq.length, end); } } return ""; } //------------------------------------------------------------------------ // Time //------------------------------------------------------------------------ function Now() { return (new Date()).getTime(); } //------------------------------------------------------------------------ // Dynamic HTML/DOM utilities //------------------------------------------------------------------------ // Gets a element by its id, may return null function MaybeGetElement(win, id) { return win.document.getElementById(id); } // Same as MaybeGetElement except that it throws an exception if it's null function GetElement(win, id) { var el = win.document.getElementById(id); if (!el) { DumpError("Element " + id + " not found."); } return el; } // Gets elements by its id/name // IE treats getElementsByName as searching over ids, while Moz use names. // so tags must have both id and name as the same string function GetElements(win, id) { return win.document.getElementsByName(id); } // Gets the parent of a html element. function GetParentNode(n) { try { return n.parentNode; } catch (e) { // n.parentNode may throw a permission-denied exception on mozilla // (e.g. on text element), ignore this exception. return n; } } function IsDescendant(parent, child) { do { if (parent === child) return true; child = GetParentNode(child); } while (child && child !== document.body); return false; } // Get attribute value of a DOM node function GetAttribute(node, attribute) { if (!node.getAttribute) { return null; } var attr = node.getAttribute(attribute); if (is_ie && attribute == "style") { return attr.value; } else { return attr; } } // Sets inner html of a html element function SetInnerHTML(win, id, html) { try { GetElement(win, id).innerHTML = html; } catch (ex) { DumpException(ex); } } // Gets inner-html of a html element function GetInnerHTML(win, id) { try { return GetElement(win, id).innerHTML; } catch (ex) { DumpException(ex); return ""; } } // Clears inner html of a html element function ClearInnerHTML(win, id) { try { GetElement(win, id).innerHTML = ""; } catch (ex) { DumpException(ex); } } // Sets a CSS style of an element function SetCssStyle(win, id, name, value) { try { var elem = GetElement(win, id); elem.style[name] = value; } catch (ex) { DumpException(ex); } } // Get CSS property from a style attribute string function GetStyleProperty(style, name) { var i = style.indexOf(name); if (i != -1) { var j = style.indexOf(";", i); if (j == -1) { j = style.length; } // the +1 below is for the colon following the attribute name return CollapseWhitespace(style.substring(i + name.length + 1, j)); } return null; } // Show/hide an element. function ShowElement(el, show) { el.style.display = show ? "" : "none"; } // Show/hide a block element. // ShowElement() doesn't work if object has an initial class with display:none function ShowBlockElement(el, show) { el.style.display = show ? "block" : "none"; } // Show/hide an inline element. // ShowElement() doesn't work when an element starts off display:none. function ShowInlineElement(el, show) { el.style.display = show ? "inline" : "none"; } // Set the text of a button. This is to get around a bug in mozilla, // where we can't set the text of a button by setting innerHTML. function SetButtonText(button, text) { button.childNodes[0].nodeValue = text; } // Append a new HTML element to a HTML node. function AppendNewElement(win, parent, tag) { var e = win.document.createElement(tag); parent.appendChild(e); return e; } // Finds the child with the given ID, or null if there is node. // This does not search the children's children. function FindChildWithID(parent, id) { var el; for (el = parent.firstChild; el && el.id != id; el = el.nextSibling) { // skip } return el; } // Adds a disabled option to the given menu function AddMenuDisabledOption(win, menu, html) { var op = AppendNewElement(win, menu, 'OPTION'); op.disabled = true; op.innerHTML = html; return op; } // Adds a option to the given menu function AddMenuOption(win, menu, value, html) { var op = AppendNewElement(win, menu, 'OPTION'); op.value = value; op.innerHTML = html; return op; } // Create a new DIV (append it to the end of the document) function CreateDIV(win, id) { var div = MaybeGetElement(win, id); if (!div) { div = AppendNewElement(win, win.document.body, "div"); div.id = id; } return div; } // Create a new IFRAME (append it to the end of the document) function CreateIFRAME(win, id, url) { var iframe = MaybeGetElement(win, id); if (!iframe) { // We cannot create an IFRAME directly (IE doesn't allow it), so we // create a DIV and then insert an IFRAME. // We also give the IFRAME a name (same as id) var div = AppendNewElement(win, win.document.body, "div"); div.innerHTML = ""; iframe = GetElement(win, id); } return iframe; } // Create a new TR containing the given td's function Tr(win, tds) { var tr = win.document.createElement("TR"); for (var i = 0; i < tds.length; i++) { tr.appendChild(tds[i]); } return tr; } // Create a new TD, with an optional colspan function Td(win, opt_colspan) { var td = win.document.createElement("TD"); if (opt_colspan) { td.colSpan = opt_colspan; } return td; } // Check if an element has a given class function HasClass(el, cl) { if (el == null || el.className == null) return false; var classes = el.className.split(" "); for (var i = 0; i < classes.length; i++) { if (classes[i] == cl) { return true; } } return false; } // Add a class to element function AddClass(el, cl) { if (HasClass(el, cl)) return; el.className += " " + cl; } // Remove a class from an element function RemoveClass(el, cl) { if (el.className == null) return; var classes = el.className.split(" "); var result = []; var changed = false; for (var i = 0; i < classes.length; i++) { if (classes[i] != cl) { if (classes[i]) { result.push(classes[i]); } } else { changed = true; } } if (changed) { el.className = result.join(" "); } } // Performs an in-order traversal of the tree rooted at the given node // (excluding the root node) and returns an array of nodes that match the // given selector. The selector must implement the method: // // boolean select(node); // // This method is a generalization of the DOM method "getElementsByTagName" // function GetElementsBySelector(root, selector) { var nodes = []; for (var child = root.firstChild; child; child = child.nextSibling) { AddElementBySelector_(child, selector, nodes); } return nodes; } // Recursive helper for GetElemnetsBySelector() function AddElementBySelector_(root, selector, nodes) { // First test the parent if (selector.select(root)) { nodes.push(root); } // Then recurse through the children for (var child = root.firstChild; child; child = child.nextSibling) { AddElementBySelector_(child, selector, nodes); } } //------------------------------------------------------------------------ // Window/screen utilities // TODO: these should be renamed (e.g. GetWindowWidth to GetWindowInnerWidth // and moved to geom.js) //------------------------------------------------------------------------ // Get page offset of an element function GetPageOffsetLeft(el) { var x = el.offsetLeft; if (el.offsetParent != null) x += GetPageOffsetLeft(el.offsetParent); return x; } // Get page offset of an element function GetPageOffsetTop(el) { var y = el.offsetTop; if (el.offsetParent != null) y += GetPageOffsetTop(el.offsetParent); return y; } // Get page offset of an element function GetPageOffset(el) { var x = el.offsetLeft; var y = el.offsetTop; if (el.offsetParent != null) { var pos = GetPageOffset(el.offsetParent); x += pos.x; y += pos.y; } return {x: x, y: y}; } function GetPageOffsetRight(el) { return GetPageOffsetLeft(el) + el.offsetWidth; } function GetPageOffsetBottom(el) { return GetPageOffsetTop(el) + el.offsetHeight; } // Get the y position scroll offset. function GetScrollTop(win) { // all except Explorer if ("pageYOffset" in win) { return win.pageYOffset; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "scrollTop" in win.document.documentElement) { return win.document.documentElement.scrollTop; } // other Explorers else if ("scrollTop" in win.document.body) { return win.document.body.scrollTop; } return 0; } // Get the x position scroll offset. function GetScrollLeft(win) { // all except Explorer if ("pageXOffset" in win) { return win.pageXOffset; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "scrollLeft" in win.document.documentElement) { return win.document.documentElement.scrollLeft; } // other Explorers else if ("scrollLeft" in win.document.body) { return win.document.body.scrollLeft; } return 0; } /** * Checks if window scrollbar has reached its maximum offset * * @param win a window object * @param opt_isHoriz true if horizontal bar, false if vertical */ function IsScrollAtEnd(win, opt_isHoriz) { var total = (opt_isHoriz) ? document.body.offsetWidth : document.body.offsetHeight; var inner = (opt_isHoriz) ? GetWindowWidth(win) : GetWindowHeight(win); var offset = (opt_isHoriz) ? GetScrollLeft(win) : GetScrollTop(win); return (inner + offset >= total || total < inner); } // Scroll window to pos // position: 0 = top, 0.5 = middle, 1 = bottom function ScrollTo(win, el, position) { var y = GetPageOffsetTop(el); y -= GetWindowHeight(win) * position; win.scrollTo(0, y); } // Scroll so that as far as possible the entire element is in view. var ALIGN_BOTTOM = 'b'; var ALIGN_MIDDLE = 'm'; var ALIGN_TOP = 't'; function ScrollIntoView(win, el, alignment) { var el_top = GetPageOffsetTop(el); var el_bottom = el_top + el.offsetHeight; var win_top = GetScrollTop(win); var win_height = GetWindowHeight(win); var win_bottom = win_top + win_height; // Out of view? if (el_top < win_top || el_bottom > win_bottom) { var scrollto_y; if (alignment == ALIGN_BOTTOM) { scrollto_y = el_bottom - win_height + 5; } else if (alignment == ALIGN_MIDDLE) { scrollto_y = (el_top + el_bottom) / 2 - win_height/2; } else { scrollto_y = el_top - 5; // ALIGN_TOP } Debug("Scrolling to " + scrollto_y); win.scrollTo(0, scrollto_y); } } function IsElementVisible(win, id) { var el = MaybeGetElement(win, id); if (el == null) { return false; } var el_top = GetPageOffsetTop(el); var el_bottom = el_top + el.offsetHeight; var win_top = GetScrollTop(win); var win_bottom = win_top + GetWindowHeight(win); if (el_top >= win_top && el_bottom <= win_bottom) { return true; } return false; } function GetWindowWidth(win) { // all except Explorer if ("innerWidth" in win) { return win.innerWidth; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "clientWidth" in win.document.documentElement) { return win.document.documentElement.clientWidth; } // other Explorers else if ("clientWidth" in win.document.body) { return win.document.body.clientWidth; } return 0; } function GetWindowHeight(win) { // all except Explorer if ("innerHeight" in win) { return win.innerHeight; } // Explorer 6 Strict Mode else if ("documentElement" in win.document && "clientHeight" in win.document.documentElement) { return win.document.documentElement.clientHeight; } // other Explorers else if ("clientHeight" in win.document.body) { return win.document.body.clientHeight; } return 0; } function GetAvailScreenWidth(win) { return win.screen.availWidth; } function GetAvailScreenHeight(win) { return win.screen.availHeight; } // Returns a "nice" window height. // Use the screen height. (Or should we use the height of the current window?) function GetNiceWindowHeight(win) { return Math.floor(0.8 * GetAvailScreenHeight(win)); } // Used for horizontally centering a new window of the given width in the // available screen. Set the new window's distance from the left of the screen // equal to this function's return value. // Params: width: the width of the new window // Returns: the distance from the left edge of the screen for the new window to // be horizontally centered function GetCenteringLeft(win, width) { return (win.screen.availWidth - width) >> 1; } // Used for vertically centering a new window of the given height in the // available screen. Set the new window's distance from the top of the screen // equal to this function's return value. // Params: height: the height of the new window // Returns: the distance from the top edge of the screen for the new window to // be vertically aligned. function GetCenteringTop(win, height) { return (win.screen.availHeight - height) >> 1; } /* * Opens a child popup window that has no browser toolbar/decorations. * (Copied from caribou's common.js library with small modifications.) * * @param url the URL for the new window (Note: this will be unique-ified) * @param opt_name the name of the new window * @param opt_width the width of the new window * @param opt_height the height of the new window * @param opt_center if true, the new window is centered in the available screen * @param opt_hide_scrollbars if true, the window hides the scrollbars * @param opt_noresize if true, makes window unresizable * @param opt_blocked_msg message warning that the popup has been blocked * @return a reference to the new child window */ function Popup(url, opt_name, opt_width, opt_height, opt_center, opt_hide_scrollbars, opt_noresize, opt_blocked_msg) { if (!opt_height) { opt_height = Math.floor(GetWindowHeight(window.top) * 0.8); } if (!opt_width) { opt_width = Math.min(GetAvailScreenWidth(window), opt_height); } var features = "resizable=" + (opt_noresize ? "no" : "yes") + "," + "scrollbars=" + (opt_hide_scrollbars ? "no" : "yes") + "," + "width=" + opt_width + ",height=" + opt_height; if (opt_center) { features += ",left=" + GetCenteringLeft(window, opt_width) + "," + "top=" + GetCenteringTop(window, opt_height); } return OpenWindow(window, url, opt_name, features, opt_blocked_msg); } /* * Opens a new window. Returns the new window handle. Tries to open the new * window using top.open() first. If that doesn't work, then tries win.open(). * If that still doesn't work, prints an alert. * (Copied from caribou's common.js library with small modifications.) * * @param win the parent window from which to open the new child window * @param url the URL for the new window (Note: this will be unique-ified) * @param opt_name the name of the new window * @param opt_features the properties of the new window * @param opt_blocked_msg message warning that the popup has been blocked * @return a reference to the new child window */ function OpenWindow(win, url, opt_name, opt_features, opt_blocked_msg) { var newwin = OpenWindowHelper(top, url, opt_name, opt_features); if (!newwin || newwin.closed || !newwin.focus) { newwin = OpenWindowHelper(win, url, opt_name, opt_features); } if (!newwin || newwin.closed || !newwin.focus) { if (opt_blocked_msg) alert(opt_blocked_msg); } else { // Make sure that the window has the focus newwin.focus(); } return newwin; } /* * Helper for OpenWindow(). * (Copied from caribou's common.js library with small modifications.) */ function OpenWindowHelper(win, url, name, features) { var newwin; if (features) { newwin = win.open(url, name, features); } else if (name) { newwin = win.open(url, name); } else { newwin = win.open(url); } return newwin; } //------------------------------------------------------------------------ // DOM walking utilities //------------------------------------------------------------------------ function MaybeEscape(str, escape) { return escape ? HtmlEscape(str) : str; } //------------------------------------------------------------------------ // Window data //------------------------------------------------------------------------ // Gets an array, which can store data for the window. This data // is deleted when the window is unloaded. var windata = []; function GetWindowData(win) { var data = windata[win.name]; if (!data) { windata[win.name] = data = []; } return data; } // Clear js data for a window. function ClearWindowData(win_name) { if (windata[win_name]) { windata[win_name] = null; } } //------------------------------------------------------------------------ // String utilities //------------------------------------------------------------------------ // Do html escaping var amp_re_ = /&/g; var lt_re_ = //g; // Convert text to HTML format. For efficiency, we just convert '&', '<', '>' // characters. // Note: Javascript >= 1.3 supports lambda expression in the replacement // argument. But it's slower on IE. // Note: we can also implement HtmlEscape by setting the value // of a textnode and then reading the 'innerHTML' value, but that // that turns out to be slower. // Params: str: String to be escaped. // Returns: The escaped string. function HtmlEscape(str) { if (!str) return ""; return str.replace(amp_re_, "&").replace(lt_re_, "<"). replace(gt_re_, ">").replace(quote_re_, """); } /** converts html entities to plain text. It covers the most common named * entities and numeric entities. * It does not cover all named entities -- it covers &{lt,gt,amp,quot,nbsp}; but * does not handle some of the more obscure ones like &{ndash,eacute};. */ function HtmlUnescape(str) { if (!str) return ""; return str. replace(/&#(\d+);/g, function (_, n) { return String.fromCharCode(parseInt(n, 10)); }). replace(/&#x([a-f0-9]+);/gi, function (_, n) { return String.fromCharCode(parseInt(n, 16)); }). replace(/&(\w+);/g, function (_, entity) { entity = entity.toLowerCase(); return entity in HtmlUnescape.unesc ? HtmlUnescape.unesc[entity] : '?'; }); } HtmlUnescape.unesc = { lt: '<', gt: '>', quot: '"', nbsp: ' ', amp: '&' }; // Replace multiple spaces with   to retain whitespace formatting // in addition to escaping '&', '<', and '>'. var dbsp_re_ = / /g; var ret_re_ = /\r/g; var nl_re_ = /\n/g; function HtmlWhitespaceEscape(str) { str = HtmlEscape(str); str = str.replace(dbsp_re_, "  "); str = str.replace(ret_re_, ""); str = str.replace(nl_re_, "
"); return str; } // Escape double quote '"' characters in addition to '&', '<', '>' so that a // string can be included in an HTML tag attribute value within double quotes. // Params: str: String to be escaped. // Returns: The escaped string. var quote_re_ = /\"/g; function QuoteEscape(str) { return HtmlEscape(str).replace(quote_re_, """); } var JS_SPECIAL_RE_ = /[\'\\\r\n\b\"<>&]/g; function JSEscOne_(s) { if (!JSEscOne_.js_escs_) { var escapes = {}; escapes['\\'] = '\\\\'; escapes['\''] = '\\047'; escapes['\n'] = '\\n'; escapes['\r'] = '\\r'; escapes['\b'] = '\\b'; escapes['\"'] = '\\042'; escapes['<'] = '\\074'; escapes['>'] = '\\076'; escapes['&'] = '\\046'; JSEscOne_.js_escs_ = escapes; } return JSEscOne_.js_escs_[s]; } /** convert a string to a javascript string literal. This function has the * property that the return value is also already html escaped, so the output * can be embedded in an html handler attribute. */ function ToJSString(s) { return "'" + s.toString().replace(JS_SPECIAL_RE_, JSEscOne_) + "'"; } // converts multiple ws chars to a single space, and strips // leading and trailing ws var spc_re_ = /\s+/g; var beg_spc_re_ = /^ /; var end_spc_re_ = / $/; function CollapseWhitespace(str) { if (!str) return ""; return str.replace(spc_re_, " ").replace(beg_spc_re_, ""). replace(end_spc_re_, ""); } var newline_re_ = /\r?\n/g; var spctab_re_ = /[ \t]+/g; var nbsp_re_ = /\xa0/g; function StripNewlines(str) { if (!str) return ""; return str.replace(newline_re_, " "); } function CanonicalizeNewlines(str) { if (!str) return ""; return str.replace(newline_re_, '\n'); } function HtmlifyNewlines(str) { if (!str) return ""; return str.replace(newline_re_, "
"); } function NormalizeSpaces(str) { if (!str) return ""; return str.replace(spctab_re_, " ").replace(nbsp_re_, " "); } // URL encodes the string. function UrlEncode(str) { return encodeURIComponent(str); } function Trim(str) { if (!str) return ""; return str.replace(/^\s+/, "").replace(/\s+$/, ""); } function EndsWith(str, suffix) { if (!str) return !suffix; return (str.lastIndexOf(suffix) == (str.length - suffix.length)); } // Check if a string is empty function IsEmpty(str) { return CollapseWhitespace(str) == ""; } // Check if a character is a letter function IsLetterOrDigit(ch) { return ((ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z") || (ch >= '0' && ch <= '9')); } // Check if a character is a space character function IsSpace(ch) { return (" \t\r\n".indexOf(ch) >= 0); } // Converts any instances of "\r" or "\r\n" style EOLs into "\n" (Line Feed), // and also trim the extra newlines and whitespaces at the end. var eol_re_ = /\r\n?/g; var trailingspc_re_ = /[\n\t ]+$/; function NormalizeText(str) { return str.replace(eol_re_, "\n").replace(trailingspc_re_, ""); } // Inserts s (word break tag) after every n non-space chars and/or // after or before certain special chars. The input string should be plain // text that has not yet been HTML-escaped. // Params: // str: The string to insert s into. // n: The maximum number of consecutive non-space characters to allow before // adding a . To turn off this rule (i.e. if you only want to add // breaks based on special characters), pass in the value -1. // chars_to_break_after: The list of special characters (concatenated into a // string) after which a should be added, if there is no natural // break at that point. To turn off this rule, pass in the empty string. // chars_to_break_before: The list of special characters (concatenated into a // string) before which a should be added, if there is no natural // break at that point. To turn off this rule, pass in the empty string. // Returns: The string str htmlescaped, and with s inserted according to // the rules specified by the other arguments. function HtmlEscapeInsertWbrs(str, n, chars_to_break_after, chars_to_break_before) { AssertNumArgs(4); var out = ''; var strpos = 0; var spc = 0; for (var i = 1; i < str.length; ++i) { var prev_char = str.charAt(i - 1); var next_char = str.charAt(i); if (IsSpace(next_char)) { spc = i; } else if (i - spc == n || chars_to_break_after.indexOf(prev_char) != -1 || chars_to_break_before.indexOf(next_char) != -1) { out += HtmlEscape(str.substring(strpos, i)) + ''; strpos = i; spc = i; } } out += HtmlEscape(str.substr(strpos)); return out; } // Converts a string to its canonicalized label form. var illegal_chars_re_ = /[ \/(){}&|\\\"\000]/g; function CanonicalizeLabel(str, lowercase) { var uppercase = str.replace(illegal_chars_re_, '-'); return lowercase ? uppercase.toLowerCase() : uppercase; } // Case-insensitive string comparator function CompareStringsIgnoreCase(s1, s2) { s1 = s1.toLowerCase(); s2 = s2.toLowerCase(); if (s1 < s2) { return -1; } else if (s1 == s2) { return 0; } else { return 1; } } //------------------------------------------------------------------------ // TextArea utilities //------------------------------------------------------------------------ // Gets the cursor pos in a text area. Returns -1 if the cursor pos cannot // be determined or if the cursor out of the textfield. function GetCursorPos(win, textfield) { try { if (IsDefined(textfield.selectionEnd)) { // Mozilla directly supports this return textfield.selectionEnd; } else if (win.document.selection && win.document.selection.createRange) { // IE doesn't export an accessor for the endpoints of a selection. // Instead, it uses the TextRange object, which has an extremely obtuse // API. Here's what seems to work: // (1) Obtain a textfield from the current selection (cursor) var tr = win.document.selection.createRange(); // Check if the current selection is in the textfield if (tr.parentElement() != textfield) { return -1; } // (2) Make a text range encompassing the textfield var tr2 = tr.duplicate(); tr2.moveToElementText(textfield); // (3) Move the end of the copy to the beginning of the selection tr2.setEndPoint("EndToStart", tr); // (4) The span of the textrange copy is equivalent to the cursor pos var cursor = tr2.text.length; // Finally, perform a sanity check to make sure the cursor is in the // textfield. IE sometimes screws this up when the window is activated if (cursor > textfield.value.length) { return -1; } return cursor; } else { Debug("Unable to get cursor position for: " + navigator.userAgent); // Just return the size of the textfield // TODO: Investigate how to get cursor pos in Safari! return textfield.value.length; } } catch (e) { DumpException(e, "Cannot get cursor pos"); } return -1; } function SetCursorPos(win, textfield, pos) { if (IsDefined(textfield.selectionEnd) && IsDefined(textfield.selectionStart)) { // Mozilla directly supports this textfield.selectionStart = pos; textfield.selectionEnd = pos; } else if (win.document.selection && textfield.createTextRange) { // IE has textranges. A textfield's textrange encompasses the // entire textfield's text by default var sel = textfield.createTextRange(); sel.collapse(true); sel.move("character", pos); sel.select(); } } //------------------------------------------------------------------------ // Array utilities //------------------------------------------------------------------------ // Find an item in an array, returns the key, or -1 if not found function FindInArray(array, x) { for (var i = 0; i < array.length; i++) { if (array[i] == x) { return i; } } return -1; } // Inserts an item into an array, if it's not already in the array function InsertArray(array, x) { if (FindInArray(array, x) == -1) { array[array.length] = x; } } // Delete an element from an array function DeleteArrayElement(array, x) { var i = 0; while (i < array.length && array[i] != x) i++; array.splice(i, 1); } // Copies a flat array function CopyArray(array) { var copy = []; for (var i = 0; i < array.length; i++) { copy[i] = array[i]; } return copy; } // Clone an object (recursively) function CloneObject(x) { if ((typeof x) == "object") { var y = []; for (var i in x) { y[i] = CloneObject(x[i]); } return y; } return x; } /** * Clone an event; cannot use CloneObject(event) * because it suffers from infinite recursion. * Thus, only a subset of the event properties are * cloned -- if you need others, just add them * to this function (just don't remove any!) */ function CloneEvent(ev) { var clone = {}; clone.clientX = ev.clientX; clone.clientY = ev.clientY; clone.pageX = ev.pageX; clone.pageY = ev.pageY; clone.type = ev.type; clone.srcElement = ev.srcElement; clone.target = ev.target; clone.cancelBubble = ev.cancelBubble; clone.explicitOriginalTarget = ev.explicitOriginalTarget; // add more properties here return clone; } function GetEventTarget(/*Event*/ ev) { // Event is not a type in IE; IE uses Object for events // AssertType(ev, Event, 'arg passed to GetEventTarget not an Event'); return ev.srcElement || ev.target; } /** cancels the event */ // from http://www.quirksmode.org/js/events_order.html function CancelEvent(/*Event*/ ev) { if (is_ie) { ev.cancelBubble = true; } else if (ev.stopPropagation) { ev.stopPropagation(); } } //------------------------------------------------------------------------ // Formatting utilities //------------------------------------------------------------------------ // A simple printf type function that takes in a template array, and a data // array. e.g. PrintArray(["a",,"b",,"c"], ["x", "y"]) => axbyc function PrintArray(array, data) { // Check that the argument count is correct. AssertEquals(array.length, data.length * 2 + 1); for (var i = 0, idx = 1; i < data.length; i++, idx += 2) { array[idx] = data[i]; } return array.join(""); } function ImageHtml(url, attributes) { return ""; } // Formats an object id that has two id numbers, eg, foo_3_7 function MakeId3(idprefix, m, n) { return idprefix + m + "_" + n; } //------------------------------------------------------------------------ // Email address parsing //------------------------------------------------------------------------ // Parse an email address of the form "name"
into [name, address] function ParseAddress(addr) { var name = ""; var address = ""; for (var i = 0; i < addr.length;) { var token = GetEmailToken(addr, i); if (token.charAt(0) == '<') { var end = token.indexOf(">"); address = token.substring(1, (end != -1) ? end : token.length); } else if (address == "") { name += token; } i += token.length; } // Check if it's a simple email address of the form "jlim@google.com" if (address == "" && name.indexOf("@") != -1) { address = name; name = ""; } name = CollapseWhitespace(name); name = StripQuotes(name, "'"); name = StripQuotes(name, "\""); address = CollapseWhitespace(address); return [name, address]; } // Given an email address, get the address part function GetAddress(address) { return ParseAddress(address)[1]; } // Get the username part of an email address function GetAddressUsername(address) { address = GetAddress(address); var at = address.indexOf("@"); return (at == -1) ? address : address.substr(0, at); } // Given an email address, get the personal part function GetPersonal(address) { return ParseAddress(address)[0]; } // Given an address, get a short name function GetPersonalElseUsername(address) { var personal = GetPersonal(address); if (personal != "") { return personal; } else { return GetAddressUsername(address); } } // Strip ' or " chars around a string function StripQuotes(str, quotechar) { var len = str.length; if (str.charAt(0) == quotechar && str.charAt(len - 1) == quotechar) { return str.substring(1, len - 1); } return str; } // Convert a string containing list of email addresses into an array // of strings function EmailsToArray(str) { var result = []; var email = ""; var token; for (var i = 0; i < str.length; ) { token = GetEmailToken(str, i); if (token == ",") { AddEmailAddress(result, email); email = ""; i++; continue; } email += token; i += token.length; } // Add last if (email !="" || token == ",") { AddEmailAddress(result, email); } return result; } // Get the next token from a position in an address string var openers_ = "\"<(["; var closers_ = "\">)]"; function GetEmailToken(str, pos) { var ch = str.charAt(pos); var p = openers_.indexOf(ch); if (p == -1) return ch; var end_pos = str.indexOf(closers_.charAt(p), pos + 1); var token = (end_pos >= 0) ? str.substring(pos, end_pos + 1) : str.substr(pos); return token; } // Add an email address to the result array. function AddEmailAddress(result, email) { email = CleanEmailAddress(email); result[result.length] = email; } // Clean up email address: // - remove extra spaces // - Surround name with quotes if it contains special characters // to check if we need " quotes // Note: do not use /g in the regular expression, otherwise the // regular expression cannot be reusable. var specialchars_re_ = /[()<>@,;:\\\".\[\]]/; function CleanEmailAddress(str) { var name_address = ParseAddress(str); var name = name_address[0]; var address = name_address[1]; if (name.indexOf("\"") == -1) { // If there's no " var quote_needed = specialchars_re_.test(name); if (quote_needed) { name = "\"" + name + "\""; } } if (name == "") return address; else if (address == "") return name; else return name + " <" + address + ">"; } //------------------------------------------------------------------------ // Misc //------------------------------------------------------------------------ // Compare long hex strings function CompareID(a, b) { if (a.length != b.length) { return (a.length - b.length); } else { return (a < b) ? -1 : (a > b) ? 1 : 0; } } // Check if a value is defined function IsDefined(value) { return (typeof value) != 'undefined'; } function GetKeyCode(event) { var code; if (event.keyCode) { code = event.keyCode; } else if (event.which) { code = event.which; } return code; } // define a forid function to fetch a DOM node by id. function forid_1(id) { return document.getElementById(id); } function forid_2(id) { return document.all[id]; } /** * Fetch an HtmlElement by id. * DEPRECATED: use $ in dom.js */ var forid = document.getElementById ? forid_1 : forid_2; function log(msg) { /* a top level window is its own parent. Use != or else fails on IE with * infinite loop. */ try { if (window.parent != window && window.parent.log) { window.parent.log(window.name + '::' + msg); return; } } catch (e) { // Error: uncaught exception: Permission denied to get property Window.log } var logPane = forid('log'); if (logPane) { var logText = '

' + new Date() + '' + msg + '

'; logPane.innerHTML = logText + logPane.innerHTML; } else { window.status = msg; } } _9http://www.blogger.com/v-app/scripts/1019856700-common.js RSTOfbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?HQZNS.objectsWNS.keys@ABCDEFGIJKLMNOP _Content-EncodingVServer]Last-Modified]Cache-ControlTDate^Content-LengthWExpires\Content-TypeTgzipWGFE/1.3_Thu, 12 Jun 2008 22:28:18 GMTVpublic_Mon, 23 Jun 2008 07:00:45 GMTT2066_Tue, 28 Jul 2009 07:00:45 GMT12bccd6_NSMutableDictionary\NSDictionary12fgg6_NSHTTPURLResponseInternal12ijjk6_NSHTTPURLResponse]NSURLResponse$)2DILbd!-/13rw   .5CQVemz$'CHL`lnOV // Commonly-used functions, reduced. function d(s) {return document.getElementById(s);} function dE(o,s) {return o.getElementsByTagName(s);} /** * toggleDisplay() * * Will toggle the display property of the style object for any * DOM element or object that supports style as a property. * * Warning: This'll wreak havoc if applied to elements. Those * babies got different types "table-row" | "block" dependant on * what browser's being used. * * Warning: Written in Texas. Yeehaw. * * Typical usage: * toggleDisplay(document.getElementById("foo")); */ function toggleDisplay(o) { var display = getStyle(o, "display"); if (o.style) o.style.display = (display != "none") ? "none" : getDisplayStyleByTagName(o); } function getDisplayStyleByTagName(o) { var n = o.nodeName.toLowerCase(); return ( n == "span" || n == "img" || n == "a" ) ? "inline" : "block"; } /** * hideElement() * * Hides an element from view. * * Typical usage: * hideElement(getElement("the-id-of-the-element")); */ function hideElement(o) { if (o && o.style) o.style.display = "none"; } /** * showElement() * * Shows an element that was hidden from view. * * Typical usage: * showElement(getElement("the-id-of-the-element")); */ function showElement(o) { if (o && o.style) o.style.display = getDisplayStyleByTagName(o); } /** * getElement() * * Returns an element by its ID or shows an alert if it can't be found. * * Typical usage: * getElement("the-id-of-the-element"); */ function getElement(id) { var e = d(id); if (!e) { alert("Cannot get element: " + id); } return e; } /** * setInnerHTML() * * Sets the innerHTML of an element or shows an alert if can't be set. * * Typical usage: * setInnerHTML("the-id-of-the-element"); */ function setInnerHTML(id, html) { try { getElement(id).innerHTML = html; } catch (ex) { alert("Cannot set inner HTML: " + id); } } /** * setCssStyle() * * Sets the style of an element by its id or shows an alert if can't be set. * * Typical usage: * setCssStyle("the-id-of-the-element", "display", "block"); */ function setCssStyle(id, name, value) { try { getElement(id).style[name] = value; } catch (ex) { alert("Cannot set style: " + id); } } /** * getStyle() * * Gets the computed style of any object. * * WARNING: Produces unexpected results in Safari. To achieve best * results, explicitly set the style property for that browser when the * element is rendered. * * Typical usage: * getStyle(object, "display"); */ function getStyle(el, style) { if (!document.getElementById || !el) return; if (document.defaultView && document.defaultView.getComputedStyle) { return document.defaultView. getComputedStyle(el, "").getPropertyValue(style); } else if (el.currentStyle) { return el.currentStyle[style]; } else { return el.style.display; } } /** * getStyleAttribute() * * Returns the style attribute of the specified node. */ function getStyleAttribute(node) { if (Detect.IE()) { return node.getAttribute('style').value; }else { return node.getAttribute('style'); } } /* * showProps() * * Displays all the properties for a given element */ function showProps(o) { var s=""; for (var p in o) { s+=p+": "+o[p]+"\n
"; } document.write(s); } function setIFrameEvent(iframe, eventName, func) { if (document.all) { eval('getIFrameDocument(iframe).on' + eventName + ' = func;'); } else { iframe.contentWindow.addEventListener(eventName, func, true); } } function setIFrameBody(iframe, strStyle, innerHtml) { if (!innerHtml) innerHtml = ''; if (innerHtml == '' && Detect.IE()) { innerHtml = '
'; } var doc = getIFrameDocument(iframe); doc.open(); doc.write('' + innerHtml + ''); doc.close(); } function getIFrameDocument(iframe) { if (Detect.IE()) { return iframe.document; } else { return iframe.contentDocument; } } function getIFrame(strId) { if (Detect.IE()) { return document.frames[strId]; } else { return document.getElementById(strId); } } function createElementandAppend(nodeName, strId, appendTo) { var el = document.createElement(nodeName); el.setAttribute("id", strId); if (appendTo) { appendTo.appendChild(el); } else { document.body.appendChild(el); } return el; } function createElementandInsertBefore(nodeName, strId, appendTo, sibling) { var el = document.createElement(nodeName); el.setAttribute("id", strId); if (appendTo) { appendTo.insertBefore(el, sibling); } else { document.body.insertBefore(el, sibling); } return el; } /** * getXY() * * Returns the position of any element as an object. * * Typical usage: * var pos = getXY(object); * alert(pos.x + " " +pos.y); */ function getXY(el) { var x = el.offsetLeft; var y = el.offsetTop; if (el.offsetParent != null) { var pos = getXY(el.offsetParent); x += pos.x; y += pos.y; } return {x: x, y: y} } // The following 3 functions are taken from common.js function hasClass(el, cl) { if (el == null || el.className == null) return false; var classes = el.className.split(" "); for (var i = 0; i < classes.length; i++) { if (classes[i] == cl) { return true; } } return false; } // Add a class to element function addClass(el, cl) { if (hasClass(el, cl)) return; el.className += " " + cl; } // Remove a class from an element function removeClass(el, cl) { if (el.className == null) return; var classes = el.className.split(" "); var result = []; var changed = false; for (var i = 0; i < classes.length; i++) { if (classes[i] != cl) { if (classes[i]) { result.push(classes[i]); } } else { changed = true; } } if (changed) { el.className = result.join(" "); } } function toggleClass(el, cl) { if (hasClass(el, cl)) { removeClass(el, cl); } else { addClass(el, cl); } } /* Constants for node types, since IE doesn't support Node.TEXT_NODE */ var TEXT_NODE = 3; var ELEMENT_NODE = 1; _?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Last-Modified]Cache-ControlTDate^Content-LengthWExpires\Content-TypeSgws_Fri, 09 May 2008 15:04:46 GMTVpublic_Mon, 23 Jun 2008 07:00:45 GMTR52_Sun, 17 Jan 2038 19:14:07 GMT12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd *,.0_dmx|(0=Aahh&O4GIF89a!, ˭g ;_,http://www.blogger.com/img/navbar/1/flag.gifYimage/gif [\]YObplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078I4#A:`T#Ak_Bx*+!-.WNS.base[NS.relative_.http://www.blogger.com/img/navbar/1/unflag.gif1234X$classesZ$classname456UNSURLV%NSURLXNSObjectYimage/gif9:;=>?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN VServer]Last-Modified]Cache-ControlTDate^Content-LengthWExpires\Content-TypeSgws_Fri, 09 May 2008 15:04:46 GMTVpublic_Mon, 23 Jun 2008 07:00:47 GMTR52_Sun, 17 Jan 2038 19:14:07 GMT12^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd *,.0afoz~*2?Ccjh(O4GIF89a!, ˭g ;_.http://www.blogger.com/img/navbar/1/unflag.gif _`a1O"bplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver _WebResourceResponse )/078?GOZNS.objectsWNS.keys@ABCDEFHIJKLMN _Content-EncodingVServer]Last-Modified]Cache-ControlTDate^Content-Length\Content-TypeTgzipTucfe_Mon, 12 May 2008 18:35:15 GMT_max-age=604800, public_Mon, 23 Jun 2008 07:00:45 GMTT683212^__`6_NSMutableDictionary\NSDictionary12bcc6_NSHTTPURLResponseInternal12effg6_NSHTTPURLResponse]NSURLResponse$)2DILbd+-/1^clw{  .3BOTYy $h2OX(//-- Google Analytics Urchin Module //-- Copyright 2007 Google, All Rights Reserved. //-- Urchin On Demand Settings ONLY var _uacct=""; // set up the Urchin Account var _userv=1; // service mode (0=local,1=remote,2=both) //-- UTM User Settings var _ufsc=1; // set client info flag (1=on|0=off) var _udn="auto"; // (auto|none|domain) set the domain name for cookies var _uhash="on"; // (on|off) unique domain hash for cookies var _utimeout="1800"; // set the inactive session timeout in seconds var _ugifpath="/__utm.gif"; // set the web path to the __utm.gif file var _utsp="|"; // transaction field separator var _uflash=1; // set flash version detect option (1=on|0=off) var _utitle=1; // set the document title detect option (1=on|0=off) var _ulink=0; // enable linker functionality (1=on|0=off) var _uanchor=0; // enable use of anchors for campaign (1=on|0=off) var _utcp="/"; // the cookie path for tracking var _usample=100; // The sampling % of visitors to track (1-100). //-- UTM Campaign Tracking Settings var _uctm=1; // set campaign tracking module (1=on|0=off) var _ucto="15768000"; // set timeout in seconds (6 month default) var _uccn="utm_campaign"; // name var _ucmd="utm_medium"; // medium (cpc|cpm|link|email|organic) var _ucsr="utm_source"; // source var _uctr="utm_term"; // term/keyword var _ucct="utm_content"; // content var _ucid="utm_id"; // id number var _ucno="utm_nooverride"; // don't override //-- Auto/Organic Sources and Keywords var _uOsr=new Array(); var _uOkw=new Array(); _uOsr[0]="google"; _uOkw[0]="q"; _uOsr[1]="yahoo"; _uOkw[1]="p"; _uOsr[2]="msn"; _uOkw[2]="q"; _uOsr[3]="aol"; _uOkw[3]="query"; _uOsr[4]="aol"; _uOkw[4]="encquery"; _uOsr[5]="lycos"; _uOkw[5]="query"; _uOsr[6]="ask"; _uOkw[6]="q"; _uOsr[7]="altavista"; _uOkw[7]="q"; _uOsr[8]="netscape"; _uOkw[8]="query"; _uOsr[9]="cnn"; _uOkw[9]="query"; _uOsr[10]="looksmart"; _uOkw[10]="qt"; _uOsr[11]="about"; _uOkw[11]="terms"; _uOsr[12]="mamma"; _uOkw[12]="query"; _uOsr[13]="alltheweb"; _uOkw[13]="q"; _uOsr[14]="gigablast"; _uOkw[14]="q"; _uOsr[15]="voila"; _uOkw[15]="rdata"; _uOsr[16]="virgilio"; _uOkw[16]="qs"; _uOsr[17]="live"; _uOkw[17]="q"; _uOsr[18]="baidu"; _uOkw[18]="wd"; _uOsr[19]="alice"; _uOkw[19]="qs"; _uOsr[20]="yandex"; _uOkw[20]="text"; _uOsr[21]="najdi"; _uOkw[21]="q"; _uOsr[22]="aol"; _uOkw[22]="q"; _uOsr[23]="club-internet"; _uOkw[23]="query"; _uOsr[24]="mama"; _uOkw[24]="query"; _uOsr[25]="seznam"; _uOkw[25]="q"; _uOsr[26]="search"; _uOkw[26]="q"; _uOsr[27]="wp"; _uOkw[27]="szukaj"; _uOsr[28]="onet"; _uOkw[28]="qt"; _uOsr[29]="netsprint"; _uOkw[29]="q"; _uOsr[30]="google.interia"; _uOkw[30]="q"; _uOsr[31]="szukacz"; _uOkw[31]="q"; _uOsr[32]="yam"; _uOkw[32]="k"; _uOsr[33]="pchome"; _uOkw[33]="q"; _uOsr[34]="kvasir"; _uOkw[34]="searchExpr"; _uOsr[35]="sesam"; _uOkw[35]="q"; _uOsr[36]="ozu"; _uOkw[36]="q"; _uOsr[37]="terra"; _uOkw[37]="query"; _uOsr[38]="nostrum"; _uOkw[38]="query"; _uOsr[39]="mynet"; _uOkw[39]="q"; _uOsr[40]="ekolay"; _uOkw[40]="q"; //-- Auto/Organic Keywords to Ignore var _uOno=new Array(); //_uOno[0]="urchin"; //_uOno[1]="urchin.com"; //_uOno[2]="www.urchin.com"; //-- Referral domains to Ignore var _uRno=new Array(); //_uRno[0]=".urchin.com"; //-- **** Don't modify below this point *** var _uff,_udh,_udt,_ubl=0,_udo="",_uu,_ufns=0,_uns=0,_ur="-",_ufno=0,_ust=0,_ubd=document,_udl=_ubd.location,_udlh="",_uwv="1.2"; var _ugifpath2="http://www.google-analytics.com/__utm.gif"; if (_udl.hash) _udlh=_udl.href.substring(_udl.href.indexOf('#')); if (_udl.protocol=="https:") _ugifpath2="https://ssl.google-analytics.com/__utm.gif"; if (!_utcp || _utcp=="") _utcp="/"; function urchinTracker(page) { if (_udl.protocol=="file:") return; if (_uff && (!page || page=="")) return; var a,b,c,xx,v,z,k,x="",s="",f=0,nv=0; var nx=" expires="+_uNx()+";"; var dc=_ubd.cookie; _udh=_uDomain(); if (!_uVG()) return; _uu=Math.round(Math.random()*2147483647); _udt=new Date(); _ust=Math.round(_udt.getTime()/1000); a=dc.indexOf("__utma="+_udh+"."); b=dc.indexOf("__utmb="+_udh); c=dc.indexOf("__utmc="+_udh); if (_udn && _udn!="") { _udo=" domain="+_udn+";"; } if (_utimeout && _utimeout!="") { x=new Date(_udt.getTime()+(_utimeout*1000)); x=" expires="+x.toGMTString()+";"; } if (_ulink) { if (_uanchor && _udlh && _udlh!="") s=_udlh+"&"; s+=_udl.search; if(s && s!="" && s.indexOf("__utma=")>=0) { if (!(_uIN(a=_uGC(s,"__utma=","&")))) a="-"; if (!(_uIN(b=_uGC(s,"__utmb=","&")))) b="-"; if (!(_uIN(c=_uGC(s,"__utmc=","&")))) c="-"; v=_uGC(s,"__utmv=","&"); z=_uGC(s,"__utmz=","&"); k=_uGC(s,"__utmk=","&"); xx=_uGC(s,"__utmx=","&"); if ((k*1) != ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) {_ubl=1;a="-";b="-";c="-";xx="-";z="-";v="-";} if (a!="-" && b!="-" && c!="-") f=1; else if(a!="-") f=2; } } if(f==1) { _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+c+"; path="+_utcp+";"+_udo; } else if (f==2) { a=_uFixA(s,"&",_ust); _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } else if (a>=0 && b>=0 && c>=0) { b = _uGC(dc,"__utmb="+_udh,";"); b = ("-" == b) ? _udh : b; _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo; } else { if (a>=0) a=_uFixA(_ubd.cookie,";",_ust); else { a=_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1"; nv=1; } _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } if (_ulink && xx && xx!="" && xx!="-") { xx=_uUES(xx); if (xx.indexOf(";")==-1) _ubd.cookie="__utmx="+xx+"; path="+_utcp+";"+nx+_udo; } if (_ulink && v && v!="" && v!="-") { v=_uUES(v); if (v.indexOf(";")==-1) _ubd.cookie="__utmv="+v+"; path="+_utcp+";"+nx+_udo; } var wc=window; var c=_ubd.cookie; if(nv>0 && wc && wc.gaGlobal && !wc.gaGlobal.from_cookie){ var g=wc.gaGlobal; var ua=c.split("__utma=")[1].split(";")[0].split("."); if(g.sid)ua[4]=g.sid; ua[3]=ua[4]; if(g.vid){ var v=g.vid.split("."); ua[1]=v[0]; ua[2]=v[1]; } _ubd.cookie="__utma="+ua.join(".")+"; path="+_utcp+";"+nx+_udo; } _uInfo(page); _ufns=0; _ufno=0; if (!page || page=="") _uff=1; } function _uGH() { var hid; var wc=window; if (wc && wc.gaGlobal && wc.gaGlobal.hid) { hid=wc.gaGlobal.hid; } else { hid=Math.round(Math.random()*0x7fffffff); if (!wc.gaGlobal) wc.gaGlobal={}; wc.gaGlobal.hid=hid; } return hid; } function _uInfo(page) { var p,s="",dm="",pg=_udl.pathname+_udl.search; if (page && page!="") pg=_uES(page,1); _ur=_ubd.referrer; if (!_ur || _ur=="") { _ur="-"; } else { dm=_ubd.domain; if(_utcp && _utcp!="/") dm+=_utcp; p=_ur.indexOf(dm); if ((p>=0) && (p<=8)) { _ur="0"; } if (_ur.indexOf("[")==0 && _ur.lastIndexOf("]")==(_ur.length-1)) { _ur="-"; } } s+="&utmn="+_uu; if (_ufsc) s+=_uBInfo(); if (_uctm) s+=_uCInfo(); if (_utitle && _ubd.title && _ubd.title!="") s+="&utmdt="+_uES(_ubd.title); if (_udl.hostname && _udl.hostname!="") s+="&utmhn="+_uES(_udl.hostname); if (_usample && _usample != 100) s+="&utmsp="+_uES(_usample); s+="&utmhid="+_uGH(); s+="&utmr="+_ur; s+="&utmp="+pg; if ((_userv==0 || _userv==2) && _uSP()) { var i=new Image(1,1); i.src=_ugifpath+"?"+"utmwv="+_uwv+s; i.onload=function() { _uVoid(); } } if ((_userv==1 || _userv==2) && _uSP()) { var i2=new Image(1,1); i2.src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+_uGCS(); i2.onload=function() { _uVoid(); } } return; } function _uVoid() { return; } function _uCInfo() { if (!_ucto || _ucto=="") { _ucto="15768000"; } if (!_uVG()) return; var c="",t="-",t2="-",t3="-",o=0,cs=0,cn=0,i=0,z="-",s=""; if (_uanchor && _udlh && _udlh!="") s=_udlh+"&"; s+=_udl.search; var x=new Date(_udt.getTime()+(_ucto*1000)); var dc=_ubd.cookie; x=" expires="+x.toGMTString()+";"; if (_ulink && !_ubl) { z=_uUES(_uGC(s,"__utmz=","&")); if (z!="-" && z.indexOf(";")==-1) { _ubd.cookie="__utmz="+z+"; path="+_utcp+";"+x+_udo; return ""; } } z=dc.indexOf("__utmz="+_udh+"."); if (z>-1) { z=_uGC(dc,"__utmz="+_udh+".",";"); } else { z="-"; } t=_uGC(s,_ucid+"=","&"); t2=_uGC(s,_ucsr+"=","&"); t3=_uGC(s,"gclid=","&"); if ((t!="-" && t!="") || (t2!="-" && t2!="") || (t3!="-" && t3!="")) { if (t!="-" && t!="") c+="utmcid="+_uEC(t); if (t2!="-" && t2!="") { if (c != "") c+="|"; c+="utmcsr="+_uEC(t2); } if (t3!="-" && t3!="") { if (c != "") c+="|"; c+="utmgclid="+_uEC(t3); } t=_uGC(s,_uccn+"=","&"); if (t!="-" && t!="") c+="|utmccn="+_uEC(t); else c+="|utmccn=(not+set)"; t=_uGC(s,_ucmd+"=","&"); if (t!="-" && t!="") c+="|utmcmd="+_uEC(t); else c+="|utmcmd=(not+set)"; t=_uGC(s,_uctr+"=","&"); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); else { t=_uOrg(1); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); } t=_uGC(s,_ucct+"=","&"); if (t!="-" && t!="") c+="|utmcct="+_uEC(t); t=_uGC(s,_ucno+"=","&"); if (t=="1") o=1; if (z!="-" && o==1) return ""; } if (c=="-" || c=="") { c=_uOrg(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (_ufns==1) c=_uRef(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (z=="-" && _ufns==1) { c="utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)"; } if (c=="-" || c=="") return ""; } if (z!="-") { i=z.indexOf("."); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); t=z.substring(i+1,z.length); if (t.toLowerCase()==c.toLowerCase()) cs=1; t=z.substring(0,i); if ((i=t.lastIndexOf(".")) > -1) { t=t.substring(i+1,t.length); cn=(t*1); } } if (cs==0 || _ufns==1) { t=_uGC(dc,"__utma="+_udh+".",";"); if ((i=t.lastIndexOf(".")) > 9) { _uns=t.substring(i+1,t.length); _uns=(_uns*1); } cn++; if (_uns==0) _uns=1; _ubd.cookie="__utmz="+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; path="+_utcp+"; "+x+_udo; } if (cs==0 || _ufns==1) return "&utmcn=1"; else return "&utmcr=1"; } function _uRef() { if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k,n; if ((i=_ur.indexOf("://"))<0 || _uGCse()) return ""; h=_ur.substring(i+3,_ur.length); if (h.indexOf("/") > -1) { k=h.substring(h.indexOf("/"),h.length); if (k.indexOf("?") > -1) k=k.substring(0,k.indexOf("?")); h=h.substring(0,h.indexOf("/")); } h=h.toLowerCase(); n=h; if ((i=n.indexOf(":")) > -1) n=n.substring(0,i); for (var ii=0;ii<_uRno.length;ii++) { if ((i=n.indexOf(_uRno[ii].toLowerCase())) > -1 && n.length==(i+_uRno[ii].length)) { _ufno=1; break; } } if (h.indexOf("www.")==0) h=h.substring(4,h.length); return "utmccn=(referral)|utmcsr="+_uEC(h)+"|"+"utmcct="+_uEC(k)+"|utmcmd=referral"; } function _uOrg(t) { if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k; if ((i=_ur.indexOf("://"))<0 || _uGCse()) return ""; h=_ur.substring(i+3,_ur.length); if (h.indexOf("/") > -1) { h=h.substring(0,h.indexOf("/")); } for (var ii=0;ii<_uOsr.length;ii++) { if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) { if ((i=_ur.indexOf("?"+_uOkw[ii]+"=")) > -1 || (i=_ur.indexOf("&"+_uOkw[ii]+"=")) > -1) { k=_ur.substring(i+_uOkw[ii].length+2,_ur.length); if ((i=k.indexOf("&")) > -1) k=k.substring(0,i); for (var yy=0;yy<_uOno.length;yy++) { if (_uOno[yy].toLowerCase()==k.toLowerCase()) { _ufno=1; break; } } if (t) return _uEC(k); else return "utmccn=(organic)|utmcsr="+_uEC(_uOsr[ii])+"|"+"utmctr="+_uEC(k)+"|utmcmd=organic"; } } } return ""; } function _uGCse() { var h,p; h=p=_ur.split("://")[1]; if(h.indexOf("/")>-1) { h=h.split("/")[0]; p=p.substring(p.indexOf("/")+1,p.length); } if(p.indexOf("?")>-1) { p=p.split("?")[0]; } if(h.toLowerCase().indexOf("google")>-1) { if(_ur.indexOf("?q=")>-1 || _ur.indexOf("&q=")>-1) { if (p.toLowerCase().indexOf("cse")>-1) { return true; } } } } function _uBInfo() { var sr="-",sc="-",ul="-",fl="-",cs="-",je=1; var n=navigator; if (self.screen) { sr=screen.width+"x"+screen.height; sc=screen.colorDepth+"-bit"; } else if (self.java) { var j=java.awt.Toolkit.getDefaultToolkit(); var s=j.getScreenSize(); sr=s.width+"x"+s.height; } if (n.language) { ul=n.language.toLowerCase(); } else if (n.browserLanguage) { ul=n.browserLanguage.toLowerCase(); } je=n.javaEnabled()?1:0; if (_uflash) fl=_uFlash(); if (_ubd.characterSet) cs=_uES(_ubd.characterSet); else if (_ubd.charset) cs=_uES(_ubd.charset); return "&utmcs="+cs+"&utmsr="+sr+"&utmsc="+sc+"&utmul="+ul+"&utmje="+je+"&utmfl="+fl; } function __utmSetTrans() { var e; if (_ubd.getElementById) e=_ubd.getElementById("utmtrans"); else if (_ubd.utmform && _ubd.utmform.utmtrans) e=_ubd.utmform.utmtrans; if (!e) return; var l=e.value.split("UTM:"); var i,i2,c; if (_userv==0 || _userv==2) i=new Array(); if (_userv==1 || _userv==2) { i2=new Array(); c=_uGCS(); } for (var ii=0;ii -1) { i2=l.indexOf(s,i); if (i2 < 0) { i2=l.length; } c=l.substring((i+i3),i2); } return c; } function _uDomain() { if (!_udn || _udn=="" || _udn=="none") { _udn=""; return 1; } if (_udn=="auto") { var d=_ubd.domain; if (d.substring(0,4)=="www.") { d=d.substring(4,d.length); } _udn=d; } _udn = _udn.toLowerCase(); if (_uhash=="off") return 1; return _uHash(_udn); } function _uHash(d) { if (!d || d=="") return 1; var h=0,g=0; for (var i=d.length-1;i>=0;i--) { var c=parseInt(d.charCodeAt(i)); h=((h << 6) & 0xfffffff) + c + (c << 14); if ((g=h & 0xfe00000)!=0) h=(h ^ (g >> 21)); } return h; } function _uFixA(c,s,t) { if (!c || c=="" || !s || s=="" || !t || t=="") return "-"; var a=_uGC(c,"__utma="+_udh+".",s); var lt=0,i=0; if ((i=a.lastIndexOf(".")) > 9) { _uns=a.substring(i+1,a.length); _uns=(_uns*1)+1; a=a.substring(0,i); if ((i=a.lastIndexOf(".")) > 7) { lt=a.substring(i+1,a.length); a=a.substring(0,i); } if ((i=a.lastIndexOf(".")) > 5) { a=a.substring(0,i); } a+="."+lt+"."+t+"."+_uns; } return a; } function _uTrim(s) { if (!s || s=="") return ""; while ((s.charAt(0)==' ') || (s.charAt(0)=='\n') || (s.charAt(0,1)=='\r')) s=s.substring(1,s.length); while ((s.charAt(s.length-1)==' ') || (s.charAt(s.length-1)=='\n') || (s.charAt(s.length-1)=='\r')) s=s.substring(0,s.length-1); return s; } function _uEC(s) { var n=""; if (!s || s=="") return ""; for (var i=0;i0) r=a.substring(i+1,i2); else return ""; if ((i=a.indexOf(".",i2+1))>0) t=a.substring(i2+1,i); else return ""; if (f) { return r; } else { var c=new Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9'); return c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r&7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5&m]+c[t&m]; } } function _uIN(n) { if (!n) return false; for (var i=0;i"9") && (c!=".")) return false; } return true; } function _uES(s,u) { if (typeof(encodeURIComponent) == 'function') { if (u) return encodeURI(s); else return encodeURIComponent(s); } else { return escape(s); } } function _uUES(s) { if (typeof(decodeURIComponent) == 'function') { return decodeURIComponent(s); } else { return unescape(s); } } function _uVG() { if((_udn.indexOf("www.google.") == 0 || _udn.indexOf(".google.") == 0 || _udn.indexOf("google.") == 0) && _utcp=='/' && _udn.indexOf("google.org")==-1) { return false; } return true; } function _uSP() { var s=100; if (_usample) s=_usample; if(s>=100 || s<=0) return true; return ((__utmVisitorCode(1)%10000)<(s*100)); } function urchinPathCopy(p){ var d=document,nx,tx,sx,i,c,cs,t,h,o; cs=new Array("a","b","c","v","x","z"); h=_uDomain(); if (_udn && _udn!="") o=" domain="+_udn+";"; nx=_uNx()+";"; tx=new Date(); tx.setTime(tx.getTime()+(_utimeout*1000)); tx=tx.toGMTString()+";"; sx=new Date(); sx.setTime(sx.getTime()+(_ucto*1000)); sx=sx.toGMTString()+";"; for (i=0;i<6;i++){ t=" expires="; if (i==1) t+=tx; else if (i==2) t=""; else if (i==5) t+=sx; else t+=nx; c=_uGC(d.cookie,"__utm"+cs[i]+"="+h,";"); if (c!="-") d.cookie="__utm"+cs[i]+"="+c+"; path="+p+";"+t+o; } } function _uCO() { if (!_utk || _utk=="" || _utk.length<10) return; var d='www.google.com'; if (_utk.charAt(0)=='!') d='analytics.corp.google.com'; _ubd.cookie="GASO="+_utk+"; path="+_utcp+";"+_udo; var sc=document.createElement('script'); sc.type='text/javascript'; sc.id="_gasojs"; sc.src='https://'+d+'/analytics/reporting/overlay_js?gaso='+_utk+'&'+Math.random(); document.getElementsByTagName('head')[0].appendChild(sc); } function _uGT() { var h=location.hash, a; if (h && h!="" && h.indexOf("#gaso=")==0) { a=_uGC(h,"gaso=","&"); } else { a=_uGC(_ubd.cookie,"GASO=",";"); } return a; } var _utk=_uGT(); if (_utk && _utk!="" && _utk.length>10 && _utk.indexOf("=")==-1) { if (window.addEventListener) { window.addEventListener('load', _uCO, false); } else if (window.attachEvent) { window.attachEvent('onload', _uCO); } } function _uNx() { return (new Date((new Date()).getTime()+63072000000)).toGMTString(); } _*https://ssl.google-analytics.com/urchin.js 789c;deO
通知 Blogger 有關這個網頁上 令人反感的內容
您給這個網誌標上了含有 令人反感的內容的標記。
]navbar-iframe_http://www.blogger.com/navbar.g?targetBlogID=1852617835275922366&blogName=nawi%40%E4%BA%8B%E4%BB%B6%E7%B0%BF&publishMode=PUBLISH_MODE_BLOGSPOT&navbarType=BLUE&layoutType=LAYOUTS&homepageUrl=http%3A%2F%2Fnawiblog.blogspot.com%2F&searchRoot=http%3A%2F%2Fnawiblog.blogspot.com%2Fsearchg 789h;ijOXlbIframe[about:blank!3IT]s $/81Q116 ^aVVAV\VeZ\g\\\av*v`vi}~l 1CL ", NQV_h"+~++022K2T6<=2=;A8#$+$Z$d$m((((- LyUck