From: Subject: =?iso-2022-jp?B?SGV0IFBhcm9vbDogQVJDSElFRg==?= Date: Sun, Feb 14 2010 16:28:45 GMT+0100 MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_0000_96C00354.75311C24"; type="text/html" ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.parool.nl/static/nmc/nmc/frameset/archief.html?text=drinkfontein&ED=ola =EF=BB=BF Het Parool: ARCHIEF =
=20
=3D"parool.nl"
Amsterdam, zondag 14= feb   16:28
=
=09
abonneren | adverteren | contact
=
=09
 =20 =C2=A92008 3D"Het
------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.parool.nl/parool/css/parool_site.css /* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Parool WEBSITE CSS Index 1. Basis layout omvat : header , 3 col pagina opbouw , footer , artikels ,= ads , poll , navigatie , bakskes=20 2. Applicatie layout omvat : weer, agenda :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ body {color:#222;font:normal 12px/16px "Lucida Sans Unicode", Lucida San= s, sans-serif;text-align:left;background:#fff /*url(../images/general/paroo= l_canvas_degra.gif) repeat-x;*/} body, p, img, div {margin:0;padding:0} img {border:0;} hr.r1,hr.r2,hr.r3,hr.r4 {clear:left;border:none;height:1px;width:100%;text-= align:center} =09 hr.r1 {color:#ccc;background-color:#ccc;margin:12px 0 10px 0;} hr.r2 {color:#ccc;background-color:#ccc;margin:3px 0} hr.r3 {color:#fff;background-color:#fff;margin:6px 0 5px 0;} hr.r4 {color:#fff;background-color:#fff;margin:0;padding:0} ul {list-style-type:none;margin:0;padding:0} ol {list-style-position:inside;color:#c03;margin:0;padding:0} dl {margin:2px 0 5px 0} em {color:#333;font-size:11px;} /*FF border on link fix*/ =09 a:active, a:focus {outline:none} div a {color:#222;text-decoration:none} div a:hover {color:#444;text-decoration:none} h1.k10 {font-size:22px;line-height:23px;font-weight:bold;color:#000} h1.k20 {font-size:22px;line-height:23px;font-weight:bold} /*gebruikt voor meer artikels op detail*/ h1.k25 {font-size:20px;line-height:21px;font-weight:bold} h1.k30 {font-size:18px;line-height:19px;font-weight:bold} h1.k40 {font-size:17px;line-height:18px;font-weight:normal;} h1.k50 {font-size:15px;line-height:16px;font-weight:normal} h1.k25 {background:#004996;color:#fff;margin:25px 0;padding:10px 0 10px= 5px} h1.k50 {margin:3px 0 6px 0;} h1.k10,h1.k20,h1.k30,h1.k40,h1.k50 {color:#000;margin:3px 0 12px 0;padding:= 0} h1.k10 a:link, h1.k20 a:link, h1.k30 a:link, h1.k40 a:link, h1.k50 a:link= {color:#000;text-decoration:none} h1.k10 a:hover, h1.k20 a:hover, h1.k30 a:hover, h1.k40 a:hover, h1.k50 a:ho= ver {color:#002d78;text-decoration:none} h1.k10 a:visited, h1.k20 a:visited, h1.k30 a:visited, h1.k40 a:visited, h1.= k50 a:visited {color:#000;text-decoration:none} h2 {font-size:20px;color:#06c;margin:8px 0 4px 0} h3 {font-size:16px;margin:6px 0} h4 {font-size:13px;margin:0} h4 a {color:#002d78;text-decoration:underline} h4 a:hover {color:#06c;text-decoration:none} input {border:1px solid #ccc;margin-top:1px;background:#fff;color:#333;= font-size:10px} textarea {width:250px;border:1px solid #000;margin-right:3px;margin-top:= 1px;background:#efefef} select {font-size:11px;text-transform:uppercase;margin:0 0 1px 0;paddin= g:0} .gen_left {float:left} .gen_middle {float:left;text-align:center} .gen_right {float:right;font-size:11px} .gen_left a, .gen_middle a, .gen_right a {color:#004996;text-decoration:und= erline} .gen_left a:hover, .gen_middle a:hover, .gen_right a:hover {color:#06c;text= -decoration:none} .gen_radiocheck {border:none;background:transparent} .gen_button {font-weight:bold;border:1px solid #fff;font-size:11px;color:= #444;background:#b8bbbd;text-align:center;text-transform:uppercase;margin:0= ;padding:0 3px} .gen_clear {clear:both} .gen_promobody {padding:10px 0} .gen_divline3 {border-top:1px solid #000;margin:0} .gen_error_txt {color:#F90;font-weight:bold} .gen_ticker {background:url(../images/parool/bg_ticker.gif) no-repeat;hei= ght:32px;margin:0 0 7px 0;padding:8px 0 0 5px} /*fixes border padding problem */ .gen_borderfix {width:100%} .gen_footnote2 {color:#333;padding:0 10px 0 0;margin:4px 0 20px 0} .gen_footnote3,.gen_footnote4 {color:#dedede;padding:0 10px 0 0;} =09 .gen_footnote1 {float:left;color:#333;padding:8px 10px 0 0;font-size:10px;= text-transform:uppercase;} .gen_footnote1 img {padding:0;margin:0} .gen_footnote1 a {color:#525252;} =09 .gen_footnote1 a:hover {color:#06c;text-decoration:underline} =09 .gen_footnote3 {background:#fff;padding:4px 12px;text-transform:uppercase= ;color:#ccc;font-size:10px;word-spacing:5px} .gen_footnote2 p {font-style:italic;color:#333;margin:8px 0} .gen_footnote5 {font-size:11px;color:#444;margin:10px 0} .form_box1 dl {margin:20px} .form_box1 dt {margin:10px 0} .form_box1 dd {margin:-28px 0 0 160px} .clearfix:after { content: "."; display: block; height: 0;clear: both;visib= ility: hidden;} .clearfix {display: inline-block;} /* Hides from IE-mac \*/ * html .clearfix {height: 1%;} .clearfix {display: block;} /* End hide from IE-mac */ #log_box1 {margin:18px 0 14px 12px} #log_box2 {padding-bottom:15px;margin:0 0 0 17px} #log_box3 {margin:0;padding:12px 0 12px 14px} .s_bodyprint {background:#fff;} #str_cntr1 {width:1200px;margin:0 auto;} #str_cntr2 {float:left;width:1176px;background:#fff url(../images/general= /parool_border.gif) repeat-y;margin:0;padding:0;} #str_cntr3 {float:left;width:840px} #str_col1 {float:left;width:468px;overflow:hidden;word-wrap:break-word;p= adding-left:15px;margin-top:18px;padding-bottom:15px} #str_col2 {float:left;width:336px;overflow:hidden;word-wrap:break-word;m= argin-left:21px;margin-top:15px;padding:0;} #str_col3 {float:right;width:300px;margin-top:18px;margin-right:15px;wor= d-wrap:break-word;overflow:hidden;} /*integration*/ #str_col12 {float:left;width:819px;overflow:hidden;word-wrap:break-word;= padding-left:19px;margin-top:15px;padding-bottom:15px;} #str_col123 {float:left;width:1150px;overflow:hidden;word-wrap:break-word= ;padding-left:15px;margin-top:15px;padding-bottom:15px; margin-left:4px;} /**ads**/ #adv_leaderboard {float:left;padding:12px 0 10px 20px;width:975px;backgrou= nd:#fff;} #adv_imu {margin:10px 0;} .adv_imu_small {margin:10px 0;} #adv_sky {font:normal 8px verdana;letter-spacing:1px; float:left;width:1= 20px;height:600px;margin:0 0 10px 0;text-transform:uppercase;color:#444;} #adv_banner,.adv_par_shop {margin:0 0 10px 0} .adv_3d {background:#000;width:177px;height:275px;border:1px solid #c00} .adv_box1 {background:#E2F3FA;margin-bottom:10px;padding:10px} .adv_box1 dd {font-weight:bold;margin:-23px 0 0 150px} .adv_box1 h3 {margin:0 0 10px 0} /**header**/ .hdr_cntr1 {background:url(../images/general/bg_head.gif);background-repe= at:no-repeat;width:1176px;}=09 /*hvdn_ =3D heet van de naald*/ #hvdn_cntr1 {color:#06C;text-align:left;margin:0 0 4px 0;overflow:hidd= en;word-wrap:break-word;} #hvdn_cntr1 li {margin:0;line-height:16px} #hvdn_cntr1 li b {margin-right:5px; font-size:10px} #hvdn_cntr1 li a {color:#004996;text-decoration:underline;} #hvdn_cntr1 li a:hover {color:#06C;text-decoration:none;} /*logo*/ #hdr_col1 {float:left;margin:20px 0 0 0;padding-left:18px;width:210px;co= lor:#99bbdd;text-transform:uppercase;font-size:9px;} #hdr_col1 img {padding:0 0 2px 0} /*baseline position */ #hdr_col1a {margin-top:-15px;margin-left:13px} /*weer*/ #hdr_col2 {float:left;width:200px;margin:20px 0 0 8px;} #hdr_col2 a, #hdr_col2 a:visited {font-size:9px;line-height:10px;font-weig= ht:bold;text-transform:uppercase;color:#8FB0CA;} #hdr_col2 a:hover {color:#fff;} #hdr_col2 h2 {font-size:18px;text-transform: capitalize;color:#fff;margin= :10px 0} #hdr_col2 img {float:left;margin: 5px 5px 0 0} /*hotspot ad*/ #hdr_col2_ad {float:left;width:180px;height:75px;margin:11px 0 0 50px;} /* service*/ #hdr_col3 {float:right;text-align:left;margin:10px 0 0 0;color:#005fa2;p= adding-right:20px} #hdr_col3a {text-align:right;font-size:9px;margin-top:5px;word-spacing:3= px} #hdr_col3a a {color:#fff;font-weight:bold;text-transform:uppercase} #hdr_col3a a:hover {color:#9abcdd;} /*search*/ #hdr_col3b {color:#7197b5;margin-top:18px;width:310px;} #hdr_col3b .field {width:165px;vertical-align:top;font-size:10px;color:#06= c;background:#fff;margin-left:5px;border:none} #hdr_col3b .bg {width:184px;height:20px;background-image: url(../images/g= eneral/bg_head_form.gif);background-repeat: no-repeat;} #hdr_col3b form {margin:0;padding:0;} /*nav bar*/ #hdr_col4 {float:left;width:1176px;background:#01206a;text-align:left;ma= rgin:0 0 0;padding:4px 0 0 0;height:29px} #hdr_col4b {float:left;width:470px;border:1px solid #c00;margin:8px 0 0= 0;padding:0 0 0 8px} /*sub nav bar*/ #hdr_col5 {background:#e4e4e6;text-align:left;margin:0;padding:4px 0 4px= 10px;} #ftr_cntr1 {color:#333;margin-top:0;} #ftr_cntr1 a {color:#333;font-size:10px;text-decoration:none} #ftr_cntr1 a:hover {color:#06c;text-decoration:none} .ftr_cntr1_box1 {margin:18px 0 0 0;padding:8px 6px 8px 14px;background:#e4= e4e6;text-transform:uppercase;color:#666;font-size:10px;word-spacing:3px} /** navigation **/=20 .nav_cntr1 {padding:0 0 0 18px; margin:0;} .nav_cntr1 li {float:left;display:block; margin:0 0 -1px 0;} .nav_cntr1 li a {display:block; text-decoration:none;} .nav_cntr1 li a b.p1 {float:left;display:block; width:9px; height:29px; } .nav_cntr1 li a b.p2 {float:left;display:block; height:29px; padding:0 3px= ; text-align:center; line-height:30px; color:#fff; font-size:10px;} .nav_cntr1 li a b.p3 {float:left;display:block; width:29px; height:29px;= background:url(../images/general/normal_r.gif); } .nav_cntr1 li a:hover b.p1, .nav_cntr1 li a:focus b.p1, .nav_cntr1 li a:act= ive b.p1 {cursor:pointer;} .nav_cntr1 li a:hover b.p2, .nav_cntr1 li a:focus b.p2, .nav_cntr1 li a:act= ive b.p2 {color:#99bbdd; cursor:pointer;} .nav_cntr1 li a:hover b.p3, .nav_cntr1 li a:focus b.p3, .nav_cntr1 li a:act= ive b.p3 {cursor:pointer;} .nav_cntr1 li a:hover, .nav_cntr1 li a:focus, .nav_cntr1 li a:active {borde= r:0;} .nav_cntr1 li a.active b.p1, .nav_cntr1 li a:hover.active b.p1, .nav_cntr1= li a:active.active b.p1 {background:url(../images/general/select_l.gif);= cursor:pointer;} .nav_cntr1 li a.active b.p2, .nav_cntr1 li a:hover.active b.p2, .nav_cntr1= li a:active.active b.p2 {background:url(../images/general/select_m.gif) re= peat-x; color:#004996; cursor:pointer;} .nav_cntr1 li a.active b.p3, .nav_cntr1 li a:hover.active b.p3, .nav_cntr1= li a:active.active b.p3 {background:url(../images/general/select_r.gif);= cursor:pointer;} /** sub navigation **/=20 .nav_cntr1_sub {margin:0;color:#06c;} .nav_cntr1_sub ul {margin:0;padding:0;list-style:none} .nav_cntr1_sub li {float:left;margin:0;font-size:10px;color:#06c;padd= ing:0;text-transform:uppercase;border-right:1px solid #fff } .nav_cntr1_sub a, .nav_cntr1_sub a:hover {float:left;color:#02226d;display:= block;text-decoration:none;padding:3px 20px} .nav_cntr1_sub a:hover {color:#004996;background-color:#efefef;padding:3px= 20px} .nav_cntr1_sub_current, .nav_cntr1_sub_current a, .nav_cntr1_sub_current a:= hover { background-color:#efefef;font-weight:bold;color:#004996;padding:3px= 20px;display:block;} =09 .art_cntr1,.art_box2{width:468px;background:#fff;color:#000;font-size:12px;= margin:0;padding:0} .art_box2 .intro {font-weight:bold;margin:0 0 15px 0;} .art_box2 .intro2 {margin:0 0 15px 0;} .art_cntr1 p a {text-decoration:none;display:block;color:#222} .art_cntr1 p a:hover{text-decoration:none;display:block;color:#444} /*article detail bold home fix */ .art_cntr1 strong {font-weight:normal} .art_box2 {font-size:13px;line-height:18px} .art_box2 p a { text-decoration:underline;font-weight:bold;} .art_box2 a {text-decoration:underline;color:#004996;} .art_box2 a:hover {text-decoration:none;color:#06c;} .art_box2 h1 a {margin-top:10px;text-decoration:none} .art_box2 img {margin:0} /*large article bg*/ .art_box3 {padding:0;} .art_box3 h1 a:hover {color:#002d78;} .art_box3 p a {text-decoration:none;color:#222} .art_box3 p a:hover {text-decoration:none;color:#444} .art_box3 img,.art_box1 img {padding:0} .art_box7 {float:left;margin-right:8px;margin-bottom:8px;width:252px} .art_box7 img {border:none} .art_box7 div {line-height:16px} /*parool news bottom*/ .art_box8 {border-top:1px solid #dcdede;text-align:left;margin-left:4p= x;width:1168px;background: #fff url(../images/parool/boxbg_degra.gif) repea= t-x;} .art_box8 h3 {font-size:10px;font-weight:bold;color:#014479;margin:10px= 0 10px 12px;text-transform:uppercase} .art_box8_list {float:left;width:156px;font-size:10px;line-height:14px;c= olor:#333;padding-left:10px;} .art_box8_list a {color:#525252;text-decoration:none;} .art_box8_list a:hover {color:#06c;text-decoration:underline;} .art_box8_list h3 {color:#525252;font-size:13px;margin:10px 0 12px 0;} .art_box8_list h3 a {text-decoration:none;font-weight:bold;margin:10px 0= 15px 0 ;text-transform: none} .art_box8_list h3 a:hover {color:#06c;text-decoration:underline;} /*parool services*/ .art_box9 {border-top:1px solid #dcdede;text-align:left;margin-left:4p= x;width:1168px;background: #fff url(../images/parool/boxbg_degra.gif) repea= t-x;} .art_box9 h3 {font-size:10px;font-weight:bold;color:#014479;margin:10px= 0;text-transform:uppercase} .art_box9_list {float:left;width:278px;font-size:10px;line-height:14px;c= olor:#333;padding-left:10px;border-right:1px solid #dcdede;height:170px} .art_box9_list a {color:#525252;text-decoration:none;} .art_box9_list a:hover {color:#06c;text-decoration:underline;} .art_box9_list h3 a {color:#525252;text-decoration:none;font-size:13px;fo= nt-weight:bold;margin:10px 0 15px 0;text-transform: none} .art_box9_list h3 a:hover {color:#06c;text-decoration:underline;} /* article image position left*/ .art_cntr1 img, .art_text img { float:left;margin:0 10px 10px 0;clear:left} .art_cntr2 {float:right;width:200px;background:#fff;margin:0;paddin= g:0;border-left:8px solid #fff;border-bottom:10px solid #fff } .art_cntr2 img {margin:0;padding:0;} .art_cntr3 {float:left;width:250px;} .art_cntr4 {float:right;width:190px;} /*.art_photos div {line-height:14px;margin:0 0 15px 0;padding:0}*/ .art_box5 {background:#C1D1E0;padding:6px 6px 10px 6px;margin:10p= x 0} .art_box5 h1,.art_box5 h2,.art_box5 h3 {margin:0 0 8px} .art_box5 h1 a,.art_box5 h2 a,.art_box5 h2 a {text-decoration:none;margin:0} .art_box5 p a {text-decoration:none} .art_box5 img {clear:left;float:left;border:none;margin:7px 7px 5px 0} .art_box6 img {margin:0 8px 0 0} /* labels*/ .art_label1,.art_label2,.art_label3 {font-size:10px;font-weight:bold;text-t= ransform:uppercase;padding:0px;} .art_label1 {background:#cf002e;color:#fff;padding:0 5px} .art_label2 {color:#0066cc;} .art_label3 {background:#06C;color:#fff;padding:0 5px} .reac_box1 {color:#000;background:#ededed;font-size:12px;border:1px solid= #cbcbcb; margin-top:20px;} .reac_box1 p {margin:10px 0} .reac_box1 textarea {background:#fff;width:445px;margin:0 0 8px 3px} .reac_box1_head1 {width:466px;background:url(../images/reactions/parool_= reacttop.gif) no-repeat;} .reac_box1 h1 {color:#06c;font-size:20px;text-transform:uppercase;margin:= 15px 5px 5px 5px;} .reac_box1 h2 {color:#444;font-size:18px;margin:0 0 5px 0;} .reac_box1 h3 {color:#444;font-size:13px;margin:0 0 0 5px;} .reac_box1 dt {margin:10px 0;font-size: 12px} .reac_box1 dd {margin:-28px 0 0 140px} .reac_box1_pad {padding:0 8px 8px 8px} .reac_box1 img {border:0} .reac_box2 {margin:25px 0 10px 0;padding:3px 5px} .reac_box2 h2 {font-size:16px;margin:0;padding:0;color:#333} .reac_pad {padding:4px;width:96%} .reac_pad .gen_footnote1 a {font-weight:bold; text-decoration:underline;}=20 .reac_pad .gen_footnote1 a:hover {text-decoration:none;}=20 /*sets divider background color in result list */ .reac_box3 {font-size:11px;background:#e8e8e8;padding:10px;margin:1px 0= 1px 0;border-bottom:1px solid #dbdbdb} .reac_box3 p {font-size:12px;background:#f4f4f4;padding:10px;margin:10px 0} .reac_box3 b {padding:10px 4px;} .reac_box3 a:hover {color:#06c;text-decoration:underline} p.reac_caption_txt {color:#444;font-size:11px;margin:0;} p.reac_error_txt {color:#f00;margin:0} .reg_box1 {background:url(../images/applications/reizen/hln_photolist_use= rPhotoUpload.gif) no-repeat;width:408px;height:40px;padding:7px 5px 5px 60p= x;margin:10px 0} .reg_box1a {border:1px solid #0c8ab2;border-top:none;margin-top:-10px;pad= ding:5px} .reg_box1 h2 {color:#fff;text-transform:uppercase;font-weight:normal;margi= n:0;padding:0} .reg_box1 span {color:#D0F0FA} .reg_box1_1 {border:1px solid #0043A5;background:#fff;margin:-12px 0 10px= 0;padding:5px 5px 8px 5px} .reg_box2 {background:#D0F0FA;padding:10px} .reg_box2 .app_label{color:#006} .reg_box2 span {color:#f00;font-weight:bold} .reg_box2 h3 {color:#0E82A9} .reg_box2 dl {margin-top:10px} .reg_box2 dt {width:100%;margin:10px 0 0 0} .reg_box2 dd {padding-left:150px;margin-top:-18px} input.disabled {border:1px solid #ccc;background:#ccc} input.required,textarea.required {border:1px solid #ccc} input.validation-failed,textarea.validation-failed {background:#f00;color:#= fff} input.validation-passed,textarea.validation-passed {border:1px solid #ccc;c= olor:#000} /*list types */ .list_cntr1a,.list_cntr1b {font-size:12px;color:#333;clear:left;padding:0;m= argin:15px 0 6px 0} .list_cntr1a b,.list_cntr1b b {letter-spacing:normal} .list_cntr1a li {margin:0 0 1px 0;padding-left:0px} .list_cntr1a li a {color:#004696;text-decoration:underline} .list_cntr1a li a:hover {color:#06c;text-decoration:none} .list_cntr1b li {background:url(../images/general/matrix_cube.gif) no-r= epeat;margin:0 3px 6px 3px;padding-left:12px} .list_cntr1b li a:hover {color:#06c;text-decoration:underline} =09 .list_cntr1c li a,.list_cntr1c li a:hover {color:#fff} .list_cntr1c li {margin:0 0 6px 0;padding-left:12px} /*general list types degra darl light list_cntr1d:white; */ .list_cntr1d li { background:url(../images/general/matrix_arrow.gif)= no-repeat;font-size:13px;font-weight:bold;margin:0;padding:10px 10px 10px= 20px;border-top:1px solid #e8e9ea} .list_cntr1d li a { color:#004996;text-decoration:none}=20 .list_cntr1d li a:hover { color:#06c;text-decoration:none}=20 .list_cntr1d1 { background:#e1e2e3 url(../images/general/box_bgdegra_1.= gif) no-repeat top;border-top:1px solid #e8e9ea} .list_cntr1d2 { background:#edeeee url(../images/general/box_bgdegra_2.= gif) no-repeat top;} /*client services */ .list_cntr1e li {background:url(../images/general/matrix_cube.gif) no-r= epeat;margin:3px 3px 0 15px;padding-left:12px}=20 .list_cntr1e li a {color:#004696; text-decoration:underline }=20 .list_cntr1e li a:hover {color:#06c }=20 /*related articles */ .list_cntr1f li { font-size:13px;font-weight:bold;margin:0;padding:10p= x;border-top:1px solid #e8e9ea} .list_cntr1f li img { float:left;padding:0 10px 0 0}=20 .list_cntr1f li a { color:#004996;text-decoration:none}=20 .list_cntr1f li a:hover { color:#06c;text-decoration:none} .list_cntr1f_crop { overflow:hidden;height:75px;width:105px;float:left;pad= ding:0 10px 0 0} /* news bottom list */ .list_cntr1g {font-size:12px;color:#333;clear:left;padding:0;margin:15px 0= 6px 0} .list_cntr1g li {margin:0 0 5px 0;padding-left:0px} .list_cntr1g li a {color:#004696;text-decoration:underline} .list_cntr1g li a:hover {color:#06c;text-decoration:none} /*dossier list*/ .list_cntr2 {font-size:14px;font-weight:bold;margin:0 0 6px 0;color:#f60= ;padding:0 0 6px 0px;border:1px solid #01206a} .list_cntr2 b a {font-size:12px;color:#004996;text-decoration:underline;} .list_cntr2 b a:hover {color:#06c;text-decoration:none} .list_cntr2 li {padding:6px 0 6px 12px;border-top:1px solid #e8e9ea} .list_cntr2 a {color:#004996;text-decoration:none;} .list_cntr2 a:hover {color:#06c;text-decoration:none} .list_cntr3 p a {color:#000;text-decoration:none;display:block} .list_cntr3 p a:hover {color:#333;text-decoration:none;display:block} .list_cntr3 .right {float:left;width:345px;margin-top:5px} .list_cntr3 .left {float:left;width:112px;font-size:10px;margin-top:8px} .list_cntr3 .left img {padding:5px 0;border:0} .list_cntr5 {background:#EBE8E3;padding:3px 3px 8px 3px;margin-bott= om:10px} .list_cntr5_title {background:#f00;font-size:13px;color:#fff;margin:0;tex= t-align:center;padding:3px} .list_cntr5_title a,.list_cntr5_title a:hover,.list_cntr5_title a:visited {color:#fff;text-decoration:none;margin:0} .list_cntr5 li {margin-bottom:5px;padding-left:12px} .gen_imgbox {background: #fff;padding:0;margin:0 0 12px 0;border-ri= ght:1px solid #dddedf;border-bottom:1px solid #dddedf;border-left:1px solid= #dddedf} .gen_imgbox h3 {font-size:16px;font-weight:normal;line-height:20px;color:#= 004996;padding:15px 0 15px 15px;margin:0;} .gen_imgbox h3 a {font-size:16px;font-weight:normal;color:#004996;padding:1= 5px 0 15px 0;margin:0;} .gen_imgbox h3 a:hover {font-size:16px;font-weight:normal;color:#06c;paddin= g:15px 0 15px 0;margin:0;} .gen_imgbox span {font-size:11px;color:#004996;padding:0} .gen_imgbox a:hover {color:#06c;} .gen_imgbox img {float:left;padding:0 0 15px 0;margin:15px 10px 0 15px;} .gen_imgbox_head {background: #dddedf url(../images/general/gen_img_head.gi= f) no-repeat top;height:18px;text-align:left;margin:0;padding:0 0 2px 0} .gen_imgbox_head h3 {font-weight:bold;font-size:9px;color:#444;text-align:l= eft;padding:2px 0 0 10px;margin:0;text-transform:uppercase} .gen_imgbox_head a , .gen_imgbox_head a:visited {color:#fff;} .gen_box1 {background:#e0f1ff;color:#000;margin-bottom:25px;padding:2px= 8px 12px 8px} .gen_box2 {background:#8ab3ca;color:#000;margin-bottom:25px;padding:2px= 8px 12px 8px} .gen_box2 h2 {color:#cb0202;} .gen_box3 {color:#222;margin:0;padding:17px 0} .gen_box3 a {color:#004996;text-decoration:underline}=09 .gen_box3 a:hover {color:#06c;text-decoration:none}=09 /*gen_box4:WIB*/ .gen_box4 {margin:0 0 25px 0;padding:8px;color:#333;background:#d9d9d9 url(= ../images/general/wib_bg.gif) repeat-x top;clear:both} .gen_box4 .gen_center {margin:10px 0 5px 0} .gen_box4 h2 {text-transform:uppercase;color:#06c;font-size:22px;margin:0= 0 8px 0;padding:0;line-height:22px} .gen_box4 h3 {color:#fec500;margin:5px 0 3px 0;font-size:18px;text-transfor= m:uppercase;text-align:center;font-style:italic} .gen_box4 p a,.gen_box4 .art_cntr1 p a {color:#004996;text-decoration:under= line;display:inline} .gen_box4 p a:hover {color:#06c;display:inline} .gen_wib1 li {float:left;padding:0} .gen_wib1 {width:452px;height:200px;margin:5px 0 10px 0;background:#ebeced;= border-top:2px solid #fff;padding:7px 0 0 0;background:#d9d9d9 url(../image= s/general/wib_nav_bg.gif) repeat-x top;} .gen_wib1 {overflow:auto;height:165px} .gen_wib1 img {float:left;border:1px solid #fff;margin:0 1px 0 10px} /*top 5 NL*/ .gen_box4_1 {border-right:1px solid #dddedf;border-left:1px solid #ddded= f;border-bottom:1px solid #fff;color:#333;background:#fff;margin:0 0 15px= 0;}=09 .gen_box4_1 h3 a {font:normal 15px/17px "Lucida Sans Unicode", Lucida San= s, sans-serif;color:#525252;text-align:left;margin:0;} .gen_box4_1 h3 a:hover {color:#06c;}=09 .gen_box4_2 {background: #dddedf url(../images/general/gen_img_head.gif)= no-repeat top;height:18px;text-align:left;margin:0;padding:2px 0} .gen_box4_2 h3 {font-size:9px;font-weight:bold;color:#444;padding:2px 0= 0 10px;margin:0;text-transform:uppercase} .gen_box4_1 a {color:#004996;padding:5px 0} .gen_box4_1 a:hover {color:#06c;} =09 /*sets box degra dark light*/ .gen_box4_3, .gen_box4_4 {padding:5px 0 5px 12px;border-bottom:1px solid #d= ddedf} .gen_box4_3 h3 a, .gen_box4_4 h3 a {color:#004996;padding:10px 0} .gen_box4_3 div, .gen_box4_4 div {float:left;color:#06c;padding-right:5px;p= adding-bottom:18px;} /*bakskes plain tekst*/ .gen_box5_head {background: #dddedf url(../images/general/gen_img_head.gif)= no-repeat top;height:18px;text-align:left;margin:0;padding:2px 0} .gen_box5_head h3 {font-weight:bold;font-size:9px;color:#525252;text-align:= left;padding:2px 0 0 10px;margin:0;text-transform:uppercase} .gen_box5_head h3 a {color:#525252} .gen_box5_head h3 a:hover {color:#06c;}=09 .gen_box5 {border-right:1px solid #dddedf;border-left:1px solid #dddedf;b= order-bottom:1px solid #dddedf;margin:0 0 15px 0;} .gen_box5 h3,.gen_box6 h3 {font-size:9px;font-weight:bold;color:#fff;text-= align:left;padding:4px 0 0 10px;margin:0; background:#888 url(../images/gen= eral/gen_img_head.gif) no-repeat top;height:22px;margin:0;} .gen_box5 h3 a, .gen_box5 h3 a:hover {color:#fff;} .gen_box5 span, .gen_footnote {font-size:11px;color:#797979} /*bakskes images overview*/ .gen_box5b {float:left;width:104px;line-height:14px;margin-left:4px;} .gen_box5b img {padding:15px 0 5px 0;} .gen_box5b h3 {font-size:9px;font-weight:bold;color:#fff;text-transform:u= ppercase;text-align:left;padding:4px 0 0 10px;margin:0; background: #a9a9aa= url(../images/general/gen_img_head.gif) no-repeat top;height:22px;margin:0= ;} .gen_box5b h4 {font-size:11px;font-weight:normal;color:#fff;text-transform= :uppercase;padding:0 4px} .gen_box5b h4 a {color:#333;text-decoration:none} .gen_box5b h4 a:hover {color:#06c;text-decoration:underline} .gen_box5b_bg {background:#f1f1f1 url(../images/general/bg_img_overview.g= if) repeat-x bottom;padding-bottom:15px;margin-bottom:12px;} .gen_box5 p, .gen_box6 p {margin:0} =09 /* gen_box7: linker kolom */ .gen_box7 {background:#fff;border-bottom:1px solid #000;border-right:1px= solid #000;padding:5px} /*week in beeld */ .gen_wib2 {float:left;width:224px;background:#fff;color:#000;border:2px= solid #f60;line-height:12px;font-size:11px;margin:3px} .gen_wib2 img {float:left;margin:0 } .gen_wib_box1 {float:left;width:149px;height:180px;text-align:center;mar= gin:0 3px 0 0;} .gen_wib_box1 img {margin:5px} .gen_wib_box1 h3 {height:34px;margin:0;padding:0;} .gen_wib_box1 h3 a {color:#00f} .gen_wib_box1 span {font-size:11px;color:#444;margin:0;padding:0} /*general dossier box*/ .dos_box1 { margin-bottom:15px;} .dos_box1 h3 { background:#01206a;font-size:10px;text-align:left;margin:0= ;padding:2px 0 3px 14px;color:#fff;} .dos_box1 h3 a { color:#fff;text-decoration:none;text-transform:up= percase} .dos_box1 h3 a:hover { text-decoration:none;color:#fff;} .dos_box1 div { overflow:hidden; height:70px;} /*google ads*/ .prom_box3 {margin:10px 0;padding:0 0 10px 0;line-height:14px; backgroun= d:#fff;border:1px solid #dbdbdb;} .prom_box3 h3 {font-size:11px;margin:5px 0 0 0;padding:0 0 1px 0; color:= #797979;text-align:center;letter-spacing:normal;} .prom_box3 h3 a { padding:0; } .prom_box3 dl {margin:15px 5px 0 5px} .prom_box3 dt a, .prom_box3 dt a:hover {font-weight:bold; font-size:13px;li= ne-height:12px;text-decoration:none;color:#797979;padding:0;margin:0} .prom_box3 dt a:hover {text-decoration:none} .prom_box3 dd, .prom_box3 dd a, .prom_box3 dd a:hover {font-size:11px;color= :#797979;margin:3px 0 0 0;} .prom_box3 a, .prom_box3 a:hover {font-size:11px;color:#00457d;text-decorat= ion:none;margin:0 0 0 5px;padding:0} /*promo box klantenservice*/ .prom_box4 {float:left;background:#fff url(../images/general/service_bg.= gif) repeat-x top;width:250px;height:200px;margin:10px 8px 8px 8px;} .prom_box4 h3 {font-size:14px;background:#004996;text-align:center;margin= :0;padding:2px 0 3px 0;color:#fff;text-transform:uppercase} .prom_box4 p {font-size:13px;color:#004996;padding:10px 8px 0 14px;} /*poll*/ .gen_poll {background:#e0ecf9;margin:0 0 10px 0;padding:0 0 10px= 0;color:#333;border:1px solid #e0ecf9} .gen_poll p {padding:3px;line-height:14px;font-size:11px;color:= #333} .gen_poll h3 {font-size:13px;color:#333;margin:8px;padding:0} .gen_poll h3 a {color:#333;text-transform:lowercase;margin:0 3px;p= adding:0} .gen_poll h3 a:hover {color:#333;text-decoration:none} .gen_poll form {margin:0 10px;padding:0;} .gen_poll dl {margin:0 0;} .gen_poll dt {margin:0;padding:0;} .gen_poll dd {margin-top:-20px;margin-left:25px;padding:0;} .gen_poll_head {background: #012a75 url(../images/general/gen_img_pollhea= d.gif) no-repeat top;height:16px;text-align:left;margin:0;padding:2px 0} .gen_poll_head h3 {font-weight:bold;font-size:9px;color:#fff;text-transfo= rm:uppercase;text-align:left;padding:2px 0 0 24px;margin:0;background-image= : url(../images/general/icon_poll.gif);background-repeat: no-repeat;backgro= und-position: 5px 7px;} .gen_poll_bar {float:left;height:15px;background:#06c;margin-right:10px} .gen_poll_pad {padding:4px 12px 12px 12px} div.autocomplete {font-size:11px;position:absolute;width:250px;backgrou= nd-color:white;color:black;border:1px solid #888;margin:0px;padding:0px;z-i= ndex:22;} div.autocomplete ul {list-style-type:none;margin:0px;padding:0px;} div.autocomplete ul li.selected { background-color:#005fa2;color:white} div.autocomplete ul li {list-style-type:none;display:block;margin:0;padding= :0 2px;height:17px;cursor:pointer;} /**************** HTML-SNIPPETS VIA EDITOR ******************************/ /* Ploegenscore */ #scoreTabel td#titel, #scoreTabel td#algemeneScore {font-size:18px; backgro= und-color:#012A75;color:#FFF;} #scoreTabel table {font-weight:normal;border-top:1px solid #ccc;border-righ= t:1px solid #ccc;width:468px;margin:0;padding:0;} #scoreTabel table td {border-bottom:1px solid #ccc;border-left:1px solid #c= cc; vertical-align:top;} #scoreTabel #speler {font-weight:bold;} /* Tabel */ #embedding .hiddenInputs {border:none; cursor:default; width:99%} #embedding {margin:10px 0;font-size:11px; width:auto} #embedding .titels, #embedding .titels .hiddenInputs {background:#EFEFEF;fo= nt-weight:bold;} #embedding .tit, #embedding .tit .hiddenInputs {background:#EFEFEF;font-wei= ght:bold;} #embedding #tabel2Detail {border-top:1px solid #ccc;border-right:1px solid= #ccc;} #embedding .cellBorder {border:1px solid #EFEFEF} #embedding #tabel2Titel, #embedding #tabel2Titel .hiddenInputs {font-weight= :bold; font-size:18px; color:#FFF;background:#012A75;} #embedding #t2t, #embedding #t2t .hiddenInputs {font:bold 18px Arial; color= :#FFF;background:#012A75;} #embedding #tabel2Detail {width:100%} #embedding td {border-bottom:1px solid #ccc;border-left:1px solid #ccc;} #embedding .noTitle {display:none;} /*Beoordeling*/ .art_photos #beoordeling {background:#012A75 url(../images/general/bg_ratin= g_bottom.gif) no-repeat bottom left; padding:0 10px 10px;} .art_photos #beoordeling h1 {font:bold 18px "Arial";color:#fff; margin:0 -1= 0px; padding:5px 10px; background: url(../images/general/bg_rating_top.gif)= no-repeat top} .art_photos #beoordeling ul {background:#fff} .art_photos #beoordeling li {border-bottom:1px solid #000; padding:3px} .art_photos #beoordeling li.last_item {border:none} .art_photos #beoordeling li.rating_0 {background: url(../images/general/rat= ing_0.gif) no-repeat 97% 51%} .art_photos #beoordeling li.rating_1 {background: url(../images/general/rat= ing_1_parool.gif) no-repeat 97% 51%} .art_photos #beoordeling li.rating_2 {background: url(../images/general/rat= ing_2_parool.gif) no-repeat 97% 51%} .art_photos #beoordeling li.rating_3 {background: url(../images/general/rat= ing_3_parool.gif) no-repeat 97% 51%} .art_photos #beoordeling li.rating_4 {background: url(../images/general/rat= ing_4_parool.gif) no-repeat 97% 51%} .art_photos #beoordeling li.rating_5 {background: url(../images/general/rat= ing_5_parool.gif) no-repeat 97% 51%} /*quote reaction article detail right column*/ h4.art_react_head { background:url(../images/general/snippet_reactions_he= ader.gif) no-repeat;height:35px;width:250px;padding:0;} div.art_photos_react {background:#EDEDED;width:238px;padding:5px;border:1p= x solid #CBCBCB;} .art_photos_react blockquote {padding: 0 0 5px 0px;margin:0;font-size:16px;= color:#444;line-height:20px} .art_photos_react blockquote a {text-decoration:none} div.art_photos_quote {background:#EDEDED;width:238px;padding:5px;border:1p= x solid #CBCBCB;} .art_photos_quote blockquote {padding: 0 0 5px 0px;margin:0;font-size:16px;= color:#444;line-height:22px} .art_photos_quote blockquote a {text-decoration:none} .react_open_quote { background:url(../images/general/snippet_open_quote.g= if) no-repeat;padding: 0 7px } .react_close_quote { background:url(../images/general/snippet_close_quote= .gif) no-repeat;padding: 0 7px;margin:0 7px;} /*snippits on article detail*/ .art_photos_snip h3 {font-size:14px;margin:0 0 8px 0;font-weight:bold;} div.art_photos_snip {background:#EDEDED;width:238px;padding:5px;border:1= px solid #CBCBCB;} .art_photos_snip p a {font-weight:normal;text-decoration:none;color:#525= 252;line-height:16px;} .art_photos_snip p a:hover {font-weight:normal;text-decoration:none;color:= #444} .art_photos_snip h4 {padding:0 10px 5px 0;margin:0;font-weight:bold;} .art_photos_snip h4 a {text-decoration:none;} .art_photos_snip h4 a:hover {text-decoration:none;} .art_photos {clear:right;float:right;width:250px;margin:5px 0 0 5p= x;} .embeddedObject { margin:15px 0 0 0 } .captionEmbeddedObject { font-size:11px; margin:2px 0 0 0; line-height:14px= ; color:#444 } .embeddedMasterObject { margin:0 0 5px 0 } .embeddedMasterObject a, .embeddedMasterObject a:link, .embeddedMasterObjec= t a:hover{ cursor:pointer; text-decoration:none; } .embeddedMasterObject img { float:none; } .captionEmbeddedMasterObject { font-size:11px; margin:2px 0 15px 0; line-he= ight:14px; color:#444 } div.embeddedGooglemapSmall { width:248px;height:180px;overflow:hidden;borde= r:1px solid #CCC; } div.embeddedGooglemapLarge { border:1px solid #CCC;width:466px;height:300px= ;overflow:hidden; } /* begin teaser tipons */ .vwdn {margin:10px;border:3px solid #E4E4E6;padding:10px} .vwdn h1 {} .vwdn a {color:#00457d;text-decoration:none} .vwdn a:hover {color:#06c;text-decoration:none} .vwdn ul {margin:0 30px} .vwdn li {list-style-type:disc;margin-bottom:5px;color:#333} .vwdn .gen_right {margin-top:5px;font-weight:bold;font-size:11px} .teas_tipons {background-color:#003A86;width:450px;height:145px;color:#fff= ; margin-bottom:10px;} .teas_tipons2 {background:url(../images/general/teaser_tipons_bg.gif) no-r= epeat;width:360px;color:#fff} .teas_tipons a {text-decoration:none;cursor:hand} .teas_tipons h1 {font-size:25px;text-transform:uppercase;padding:10px 0 8p= x 0;margin:0;color:#f0b808} .teas_tipons h2 {font-size:15px;text-transform:uppercase;padding:0;margin:= 0;color:#fff} .teas_tipons p {margin-top:4px} .teas_tipons a {color:#fff;text-decoration:underline} .teas_tipons a:hover{color:#fff;text-decoration:none} .teas_tipons_field {width:310px;vertical-align:top;font:13px; color:#000;m= argin-left:5px;border:none} .teas_tipons_error {color:#FF0000;font-weight:bold; font-size:13px;} .teas_tipons_textarea {width:310px;height:84px;vertical-align:top;margin-left:5px;border:non= e;font:13px;color:#000; background-color:#FFF} .teas_tipons_bg {width:330px;height:20px;border:1px solid #003A86; margin-= bottom:5px; float:right} .teas_tipons_bg_2 {width:320px;height:90px;border:1px solid #003A86; margi= n-bottom:5px; float:right} .teas_tipons_bg_3 {width:243px;height:20px;background:url(../images/genera= l/teaser_tipons_browsefield_bg.gif) no-repeat;margin-bottom:8px} .teas_tipons form {margin:0;padding:0;} .teas_tipons_right {float:left;width:128px;height:126px} .teas_tipons_left {float:left;width:450px;padding:5px 3px 0 0px} .teas_tipons_left2 {float:left;width:310px;padding:5px 3px 0 8px} .teas_tipons_field_name {font:13px; color:#000; float:left; padding:5px 0= 5px -25xp;} /* einde teaser tipons */ /* OVERLAY: SUBTITEL OP FOTO */ .position_under { margin:-68px 0 0 0; position:relative; width:468px; } .position_right { margin:-264px 0 0 298px; position:relative; width:170px; } .position_left { margin:-264px 0 0 0; position:relative; width:170px; } .template1, .template2, .template3, .template4, .template5, .template6, .te= mplate7, .template8, .template9, .template10, .template11 { background-color:#002069; } .template1 h2, .template2 h2, .template3 h2, .template4 h2, .template5 h2,= .template6 h2, .template7 h2, .template8 h2, .template9 h2, .template10 h2= , .template11 h2{ color:#FFF; font-weight:bold; margin:0; padding:0; } #subtitleColor { opacity:0.9; filter:alpha(opacity=3D90); } #subtitleColor h2{ padding:5px; line-height:normal; } ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.parool.nl/parool/css/parool_app.css /*PAROOL APP CSS*/ @import url("parool_foto.css"); /**************** app1 =3D weer ********************/ .app_disclaimer {clear:both;font-size:10px;margin:20px 0} .app_3col dt {margin:10px 0} .app_3col dd {margin:-25px 0 0 25px} .app1_cntr1 {margin:0;} .app1_cntr1 a {text-decoration:underline;color:#004996} .app1_cntr1 a:hover {text-decoration:none;color:#06c} .app1_cntr1 input {font-size:14px} .app1_cntr1 h1, .app1_box1 h1 {font-size:20px;font-weight:bold;text-transf= orm:uppercase;} .app1_cntr1 h2, .app1_box2 h2 {font-size:18px;font-weight:bold;color:#52525= 2;margin:15px 0 10px 0 } =09 .app1_box1 {margin-top:10px} .app1_box1 .app_label1, b.app_label1 {color:#004996;} .app1_box1_1 span.app_label1 {color:#004996} .app1_box2_1 p {color:#06c} .app1_box2 p {padding:0 0 10px 0} .art_label5 {color:#004996} .app1_box3 {margin:0} .app1_box4 {float:left;margin:5px 5px 5px 0;padding:5px;font-size:11px;= width:216px;background:url(../images/weather/10_days_bg.gif) repeat-x;} .app1_box4 img {float:left;margin:3px 7px 3px 3px;padding:0} .app1_box4 h2 {font-size:30px;margin-bottom:5px;color:#525252} .app1_box4 h3 {font-size:16px;margin:0;} .app1_box4 p {font-size:10px;color:#666} .appl_box4 b {background-color:#eee} .app1_box5 {float:left;padding:0;margin:4px 5px;} .app1_box5 img {margin:10px 0} /*10-daagse weervoorspelling*/ .app1_box6 {float:left;font-size:11px;width:82px;text-align:center;padd= ing:2px 2px 8px 2px;background:url(../images/weather/10_days_bg.gif) repeat= -x;margin:4px 0 8px 5px;border:none} .app1_box6 img {margin:10px 0 0 0;} .app1_box6 div {font-size:11px;text-align:center;} .app1_box6 a, .app1_box6 a:visited {text-transform:uppercase; text-decorati= on:underline} .app1_box6 a:hover {text-transform:uppercase; text-decoration:none} =09 .weather_forecast {margin:5px 10px 5px 0;padding:10px 0} .weather_forecast a, .weather_forecast a:visited {color:#0000ff;text-decora= tion:underline} =09 .app1_box7 {float:left;width:230px;margin:0 0 20px 0;} .app1_box7 img {float:left;margin:5px 10px 30px 0} .app1_box7 dt {margin:0 4px 4px 4px} .app1_box7 dd {margin:-18px 0 0 130px;font-weight:bold} .app1_box8 {float:left;width:230px;margin:0 0 0 2px;} h3.tempmin, h3.tempmax {font-size:14px;text-transform:lowercase} .tempmin, .gen_imgbox .tempmin, .gen_box5 .tempmin {color:#039;font-weight:= bold} .tempmax, .gen_imgbox .tempmax, .gen_box5 .tempmax {color:#ef000f;font-weig= ht:bold} .mapBorder {border:1px solid #ccc} .liPadding {padding:3px 0} /*list item*/ .app_list_cntr1 {clear:left;} ul.app_list_cntr1 {list-style-type:none;} .app_list_cntr1 li {background:url(../images/general/matrix_cube.gif)= no-repeat;margin:0 3px 6px 3px;padding-left:12px} /* word list */ .app_list_cntr2 {margin:5px 0;padding:5px;word-spacing:-2px} .app_list_cntr2 img {padding:10px 0 5px 0} .app1a_box1 {width: 97%} .app1a_box1 img {margin:10px 0 0 45px} .app1a_box2 {width: 100%; position: relative; left: 0; top: -220px; marg= in-bottom: -200px; z-index: 1} .app1a_box3 {width:140px;border:1px solid #DDD;background:#fff;margin:5p= x} .app1a_box3 img {float:left;margin:3px 5px 0 3px;border:1px solid #ccc} .app1a_box4 {padding-left:2px; background: #eeeeee} .app1a_box4 dt {font-size:11px;width:98%;margin:7px 0 0 3px} .app1a_box4 dd {font-size:11px;font-weight:bold;margin-top:-13px;word-spa= cing:2px} .app1a_box5 {border: 1px solid #dddddd; padding: 4px; width:150px;backgr= ound:#fff; margin-right:5px} .app1a_box5 dt {font-size:11px;width:100%;margin:10px 0 0 3px} .app1a_box5 dd {padding-left:50px;font-weight:bold;margin-top:-14px} /**teaserbox application 1:weer **/ /* het weer in */ .appl_teas_box2 {float:left;width:90px;text-align:center;padding:5px;ma= rgin:4px;background:url(../images/weather/10_days_bg.gif) repeat-x;} .appl_teas_box2 img {float:left;margin:4px} .appl_teas_box2 p {font-weight:bold;font-size:11px;padding:5px 0;text-tra= nsform:uppercase} .appl_teas_box2b {float:left;padding:5px;text-align:center;line-heigh= t:14px;background:#D6E7FF;width:77px;font-size:11px;margin:0;border-right:1= px solid #fff} .appl_teas_box2b img {margin:4px 0} .appl_teas_box2b a {color:#000} .appl_teas_box2b a:hover {color:#f00;text-decoration:none} .appl_teas_box2b p {font-weight:bold} /* meer waarnemingen */ .appl_teas_box3 {background:#fff;margin-bottom:10px;padding:5px;} .appl_teas_box3 a {color:#004996} .appl_teas_box3 a:hover {color:#06c;text-decoration:none} .appl_teas_box3 dt {margin:5px 0 10px 12px;font-size:16px;padding:5px 0} .appl_teas_box3 dd {margin-top:-33px; margin-left:130px;font-size:16px}=20 /******** app =3Dgeneral ****/ /*footnote */ .app_footnote1 {font:normal 11px/14px "Verdana", sans-serif;color:#666;m= argin:5px 0} /*labels */ h2 span.app_label1 {text-transform:uppercase !important} .app_label1 {color:#006} .app_button {font: bold 12px Arial, sans-serif;color:#fff;background:#00= 6;padding:0 5px;text-align:center;margin:0} .app1_pad {padding:6px 3px;width:100%} .app1_pad2 {padding:5px 5px 8px 5px} .app1_clear {clear:both } /*2 and 3 col */ .app_2col {float:left;width:210px;padding:0 0 15px 15px} .app_3col {float:left;width:155px;padding:0;margin:0;} ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.parool.nl/static/nmc/nmc/teasers/teasers.css .dos_vancouver-2010 {width:1136px;height:70px;margin:20px 0 0 20px;back= ground:url(/static/nmc/nmc/teasers/dos/dossier_head_vancouver2010.jpg) no-r= epeat} .dos_stadsgezichten {width:1136px;height:70px;margin:20px 0 0 20px;bac= kground:url(/static/nmc/nmc/teasers/dos/dossier_head_stadsgezicht.jpg) no-r= epeat} .dos_dam-tot-damloop {width:956px;height:70px;margin:20px 0 0 20px;bac= kground:url(/static/nmc/nmc/teasers/dos/dossier_head_damloop.gif) no-repeat} .dos_taxi-amsterdam {width:956px;height:70px;margin:20px 0 0 20px;back= ground:url(/static/nmc/nmc/teasers/dos/dossier_head_taxi-amsterdam.jpg) no-= repeat} .dos_liquidatieproces {width:956px;height:70px;margin:20px 0 0 20px;ba= ckground:url(/static/nmc/nmc/teasers/dos/dossier_head_liquidatieproces.jpg)= no-repeat} .dos_affaire-rochdale {width:956px;height:70px;margin:20px 0 0 20px;ba= ckground:url(/static/nmc/nmc/teasers/dos/dossier_head_rochdale.jpg) no-repe= at} .dos_de-columnisten {width:1136px;height:70px;margin:20px 0 0 20px;bac= kground:url(/static/nmc/nmc/teasers/dos/dossier_head_holman.jpg) no-repeat} .dos_de-wallen {width:956px;height:70px;margin:20px 0 0 20px;backgroun= d:url(/static/nmc/nmc/teasers/dos/dossier_head_dewallen.jpg) no-repeat} .dos_dossier_fotografie {width:956px;height:70px;margin:20px 0 0 20px;= background:url(/static/nmc/nmc/teasers/dos/dossier_head_fotografie.gif) no-= repeat} .dos_kredietcrisis {width:956px;height:70px;margin:20px 0 0 20px;backg= round:url(/static/nmc/nmc/teasers/dos/dossier_head_kredietcrisis.jpg) no-re= peat} .dos_dossier-noordzuidlijn {width:956px;height:70px;margin:20px 0 0 20= px;background:url(/static/nmc/nmc/teasers/dos/dossier_head_nzlijn.gif) no-r= epeat} .dos_nationale-scriptieprijs {width:956px;height:70px;margin:20px 0 0= 20px;background:url(/static/nmc/nmc/teasers/dos/dossier_head_scriptieprijs= .jpg) no-repeat} .dos_radovan-karadzic {width:956px;height:70px;margin:20px 0 0 20px;back= ground:url(/static/nmc/nmc/teasers/dos/dossier_head_karadzic.gif) no-repeat} .dos_parooltv {width:956px;height:70px;margin:20px 0 0 20px;background= :url(/static/nmc/nmc/teasers/dos/dossier_head_parooltv.gif) no-repeat} .dos_olympische-spelen-2008 {width:956px;height:70px;margin:20px 0 0 20px= ;background:url(/static/nmc/nmc/teasers/dos/dossier_head_olymp.gif) no-repe= at} /* begin stijlen voor teaser banen */ .teas_job {background:url(/static/nmc/nmc/rp/nav/teaserbanen/images/general= /teaser_banen_bg.gif) no-repeat;width:360px;height:145px;color:#fff} .teas_job h1 {font-size:16px;padding:5px 0;margin:0} .teas_job a,.teas_job a:hover {color:#fff;text-decoration:underline} .teas_job a:hover {text-decoration:none} .teas_job_field {width:165px;vertical-align:top;font-size:10px;color:#06c;= background:#fff;margin-left:5px;border:none} .teas_job_bg {width:180px;height:20px;background-image: url(/static/nmc/n= mc/rp/nav/teaserbanen/images/general/teaser_banen_field_bg.gif);background-= repeat: no-repeat;margin-bottom:2px} .teas_job form {margin:0;padding:0;} .teas_job_left {float:left;width:128px;height:128px;} .teas_job_right {float:left;width:200px;margin-left:16px} /* einde stijlen voor teaser banen */ ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/javascript Content-Transfer-Encoding: quoted-printable Content-Location: http://www.parool.nl/parool/js/activecontent/AC_RunActiveContent.js //v1.7 // Flash Player Version Detection // Detect Client Browser type // Copyright 2005-2007 Adobe Systems Incorporated. All rights reserved. var isIE =3D (navigator.appVersion.indexOf("MSIE") !=3D -1) ? true : false; var isWin =3D (navigator.appVersion.toLowerCase().indexOf("win") !=3D -1)= ? true : false; var isOpera =3D (navigator.userAgent.indexOf("Opera") !=3D -1) ? true : fal= se; function ControlVersion() { var version; var axo; var e; // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in= the registry try { // version will be set for 7.X or greater players axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); version =3D axo.GetVariable("$version"); } catch (e) { } if (!version) { try { // version will be set for 6.X players only axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); =09 // installed player is some revision of 6.0 // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, // so we have to be careful.=20 =09 // default to the first public version version =3D "WIN 6,0,21,0"; // throws if AllowScripAccess does not exist (introduced in 6.0r47) =09 axo.AllowScriptAccess =3D "always"; // safe to call for 6.0r47 or greater version =3D axo.GetVariable("$version"); } catch (e) { } } if (!version) { try { // version will be set for 4.X or 5.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version =3D axo.GetVariable("$version"); } catch (e) { } } if (!version) { try { // version will be set for 3.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version =3D "WIN 3,0,18,0"; } catch (e) { } } if (!version) { try { // version will be set for 2.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); version =3D "WIN 2,0,0,11"; } catch (e) { version =3D -1; } } =09 return version; } // JavaScript helper required to detect Flash Player PlugIn version informa= tion function GetSwfVer(){ // NS/Opera version >=3D 3 check for Flash plugin in plugin array var flashVer =3D -1; =09 if (navigator.plugins !=3D null && navigator.plugins.length > 0) { if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockw= ave Flash"]) { var swVer2 =3D navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; var flashDescription =3D navigator.plugins["Shockwave Flash" + swVer2].d= escription; var descArray =3D flashDescription.split(" "); var tempArrayMajor =3D descArray[2].split("."); =09 var versionMajor =3D tempArrayMajor[0]; var versionMinor =3D tempArrayMajor[1]; var versionRevision =3D descArray[3]; if (versionRevision =3D=3D "") { versionRevision =3D descArray[4]; } if (versionRevision[0] =3D=3D "d") { versionRevision =3D versionRevision.substring(1); } else if (versionRevision[0] =3D=3D "r") { versionRevision =3D versionRevision.substring(1); if (versionRevision.indexOf("d") > 0) { versionRevision =3D versionRevision.substring(0, versionRevision.index= Of("d")); } } var flashVer =3D versionMajor + "." + versionMinor + "." + versionRevisi= on; } } // MSN/WebTV 2.6 supports Flash 4 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") !=3D -1)= flashVer =3D 4; // WebTV 2.5 supports Flash 3 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") !=3D -1)= flashVer =3D 3; // older WebTV supports Flash 2 else if (navigator.userAgent.toLowerCase().indexOf("webtv") !=3D -1) flash= Ver =3D 2; else if ( isIE && isWin && !isOpera ) { flashVer =3D ControlVersion(); }=09 return flashVer; } // When called with reqMajorVer, reqMinorVer, reqRevision returns true if= that version or greater is available function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) { versionStr =3D GetSwfVer(); if (versionStr =3D=3D -1 ) { return false; } else if (versionStr !=3D 0) { if(isIE && isWin && !isOpera) { // Given "WIN 2,0,0,11" tempArray =3D versionStr.split(" "); // ["WIN", "2,0,0,11"] tempString =3D tempArray[1]; // "2,0,0,11" versionArray =3D tempString.split(","); // ['2', '0', '0', '11'] } else { versionArray =3D versionStr.split("."); } var versionMajor =3D versionArray[0]; var versionMinor =3D versionArray[1]; var versionRevision =3D versionArray[2]; // is the major.revision >=3D requested major.revision AND the min= or version >=3D requested minor if (versionMajor > parseFloat(reqMajorVer)) { return true; } else if (versionMajor =3D=3D parseFloat(reqMajorVer)) { if (versionMinor > parseFloat(reqMinorVer)) return true; else if (versionMinor =3D=3D parseFloat(reqMinorVer)) { if (versionRevision >=3D parseFloat(reqRevision)) return true; } } return false; } } function AC_AddExtension(src, ext) { if (src.indexOf('?') !=3D -1) return src.replace(/\?/, ext+'?');=20 else return src + ext; } function AC_Generateobj(objAttrs, params, embedAttrs)=20 {=20 var str =3D ''; if (isIE && isWin && !isOpera) { str +=3D ''; for (var i in params) { str +=3D ' '; } str +=3D ''; } else { str +=3D ' '; } document.write(str); } function AC_FL_RunContent(){ var ret =3D=20 AC_GetArgs ( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540= 000" , "application/x-shockwave-flash" ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); } function AC_SW_RunContent(){ var ret =3D=20 AC_GetArgs ( arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-44455354000= 0" , null ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); } function AC_GetArgs(args, ext, srcParamName, classid, mimeType){ var ret =3D new Object(); ret.embedAttrs =3D new Object(); ret.params =3D new Object(); ret.objAttrs =3D new Object(); for (var i=3D0; i < args.length; i=3Di+2){ var currArg =3D args[i].toLowerCase(); =20 switch (currArg){=09 case "classid": break; case "pluginspage": ret.embedAttrs[args[i]] =3D args[i+1]; break; case "src": case "movie":=09 args[i+1] =3D AC_AddExtension(args[i+1], ext); ret.embedAttrs["src"] =3D args[i+1]; ret.params[srcParamName] =3D args[i+1]; break; case "onafterupdate": case "onbeforeupdate": case "onblur": case "oncellchange": case "onclick": case "ondblclick": case "ondrag": case "ondragend": case "ondragenter": case "ondragleave": case "ondragover": case "ondrop": case "onfinish": case "onfocus": case "onhelp": case "onmousedown": case "onmouseup": case "onmouseover": case "onmousemove": case "onmouseout": case "onkeypress": case "onkeydown": case "onkeyup": case "onload": case "onlosecapture": case "onpropertychange": case "onreadystatechange": case "onrowsdelete": case "onrowenter": case "onrowexit": case "onrowsinserted": case "onstart": case "onscroll": case "onbeforeeditfocus": case "onactivate": case "onbeforedeactivate": case "ondeactivate": case "type": case "codebase": case "id": ret.objAttrs[args[i]] =3D args[i+1]; break; case "width": case "height": case "align": case "vspace":=20 case "hspace": case "class": case "title": case "accesskey": case "name": case "tabindex": ret.embedAttrs[args[i]] =3D ret.objAttrs[args[i]] =3D args[i+1]; break; default: ret.embedAttrs[args[i]] =3D ret.params[args[i]] =3D args[i+1]; } } ret.objAttrs["classid"] =3D classid; if (mimeType) ret.embedAttrs["type"] =3D mimeType; return ret; } ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/javascript Content-Transfer-Encoding: quoted-printable Content-Location: http://www.parool.nl/parool/js/prototype.js /* Prototype JavaScript framework, version 1.6.0.3 * (c) 2005-2008 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style licen= se. * For details, see the Prototype web site: http://www.prototypejs.org/ * *-------------------------------------------------------------------------= -*/ var Prototype =3D { Version: '1.6.0.3', Browser: { IE: !!(window.attachEvent && navigator.userAgent.indexOf('Opera') =3D=3D=3D -1), Opera: navigator.userAgent.indexOf('Opera') > -1, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') =3D=3D=3D -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: document.createElement('div')['__proto__'] && document.createElement('div')['__proto__'] !=3D=3D document.createElement('form')['__proto__'] }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions =3D false; /* Based on Alex Arnell's inheritance implementation. */ var Class =3D { create: function() { var parent =3D null, properties =3D $A(arguments); if (Object.isFunction(properties[0])) parent =3D properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass =3D parent; klass.subclasses =3D []; if (parent) { var subclass =3D function() { }; subclass.prototype =3D parent.prototype; klass.prototype =3D new subclass; parent.subclasses.push(klass); } for (var i =3D 0; i < properties.length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize =3D Prototype.emptyFunction; klass.prototype.constructor =3D klass; return klass; } }; Class.Methods =3D { addMethods: function(source) { var ancestor =3D this.superclass && this.superclass.prototype; var properties =3D Object.keys(source); if (!Object.keys({ toString: true }).length) properties.push("toString", "valueOf"); for (var i =3D 0, length =3D properties.length; i < length; i++) { var property =3D properties[i], value =3D source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() =3D=3D "$super") { var method =3D value; value =3D (function(m) { return function() { return ancestor[m].apply(this, arguments) }; })(property).wrap(method); value.valueOf =3D method.valueOf.bind(method); value.toString =3D method.toString.bind(method); } this.prototype[property] =3D value; } return this; } }; var Abstract =3D { }; Object.extend =3D function(destination, source) { for (var property in source) destination[property] =3D source[property]; return destination; }; Object.extend(Object, { inspect: function(object) { try { if (Object.isUndefined(object)) return 'undefined'; if (object =3D=3D=3D null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } }, toJSON: function(object) { var type =3D typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object =3D=3D=3D null) return 'null'; if (object.toJSON) return object.toJSON(); if (Object.isElement(object)) return; var results =3D []; for (var property in object) { var value =3D Object.toJSON(object[property]); if (!Object.isUndefined(value)) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; }, toQueryString: function(object) { return $H(object).toQueryString(); }, toHTML: function(object) { return object && object.toHTML ? object.toHTML() : String.interpret(obj= ect); }, keys: function(object) { var keys =3D []; for (var property in object) keys.push(property); return keys; }, values: function(object) { var values =3D []; for (var property in object) values.push(object[property]); return values; }, clone: function(object) { return Object.extend({ }, object); }, isElement: function(object) { return !!(object && object.nodeType =3D=3D 1); }, isArray: function(object) { return object !=3D null && typeof object =3D=3D "object" && 'splice' in object && 'join' in object; }, isHash: function(object) { return object instanceof Hash; }, isFunction: function(object) { return typeof object =3D=3D "function"; }, isString: function(object) { return typeof object =3D=3D "string"; }, isNumber: function(object) { return typeof object =3D=3D "number"; }, isUndefined: function(object) { return typeof object =3D=3D "undefined"; } }); Object.extend(Function.prototype, { argumentNames: function() { var names =3D this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/= )[1] .replace(/\s+/g, '').split(','); return names.length =3D=3D 1 && !names[0] ? [] : names; }, bind: function() { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return th= is; var __method =3D this, args =3D $A(arguments), object =3D args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } }, bindAsEventListener: function() { var __method =3D this, args =3D $A(arguments), object =3D args.shift(); return function(event) { return __method.apply(object, [event || window.event].concat(args)); } }, curry: function() { if (!arguments.length) return this; var __method =3D this, args =3D $A(arguments); return function() { return __method.apply(this, args.concat($A(arguments))); } }, delay: function() { var __method =3D this, args =3D $A(arguments), timeout =3D args.shift()= * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); }, defer: function() { var args =3D [0.01].concat($A(arguments)); return this.delay.apply(this, args); }, wrap: function(wrapper) { var __method =3D this; return function() { return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)= )); } }, methodize: function() { if (this._methodized) return this._methodized; var __method =3D this; return this._methodized =3D function() { return __method.apply(null, [this].concat($A(arguments))); }; } }); Date.prototype.toJSON =3D function() { return '"' + this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z"'; }; var Try =3D { these: function() { var returnValue; for (var i =3D 0, length =3D arguments.length; i < length; i++) { var lambda =3D arguments[i]; try { returnValue =3D lambda(); break; } catch (e) { } } return returnValue; } }; RegExp.prototype.match =3D RegExp.prototype.test; RegExp.escape =3D function(str) { return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1'); }; /*-------------------------------------------------------------------------= -*/ var PeriodicalExecuter =3D Class.create({ initialize: function(callback, frequency) { this.callback =3D callback; this.frequency =3D frequency; this.currentlyExecuting =3D false; this.registerCallback(); }, registerCallback: function() { this.timer =3D setInterval(this.onTimerEvent.bind(this), this.frequency= * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer =3D null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting =3D true; this.execute(); } finally { this.currentlyExecuting =3D false; } } } }); Object.extend(String, { interpret: function(value) { return value =3D=3D null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, { gsub: function(pattern, replacement) { var result =3D '', source =3D this, match; replacement =3D arguments.callee.prepareReplacement(replacement); while (source.length > 0) { if (match =3D source.match(pattern)) { result +=3D source.slice(0, match.index); result +=3D String.interpret(replacement(match)); source =3D source.slice(match.index + match[0].length); } else { result +=3D source, source =3D ''; } } return result; }, sub: function(pattern, replacement, count) { replacement =3D this.gsub.prepareReplacement(replacement); count =3D Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); }, scan: function(pattern, iterator) { this.gsub(pattern, iterator); return String(this); }, truncate: function(length, truncation) { length =3D length || 30; truncation =3D Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); }, strip: function() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }, stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); }, extractScripts: function() { var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img'); var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return eval(script)= }); }, escapeHTML: function() { var self =3D arguments.callee; self.text.data =3D this; return self.div.innerHTML; }, unescapeHTML: function() { var div =3D new Element('div'); div.innerHTML =3D this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return memo+node= .nodeValue }) : div.childNodes[0].nodeValue) : ''; }, toQueryParams: function(separator) { var match =3D this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair= ) { if ((pair =3D pair.split('=3D'))[0]) { var key =3D decodeURIComponent(pair.shift()); var value =3D pair.length > 1 ? pair.join('=3D') : pair[0]; if (value !=3D undefined) value =3D decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]]; hash[key].push(value); } else hash[key] =3D value; } return hash; }); }, toArray: function() { return this.split(''); }, succ: function() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); }, times: function(count) { return count < 1 ? '' : new Array(count + 1).join(this); }, camelize: function() { var parts =3D this.split('-'), len =3D parts.length; if (len =3D=3D 1) return parts[0]; var camelized =3D this.charAt(0) =3D=3D '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i =3D 1; i < len; i++) camelized +=3D parts[i].charAt(0).toUpperCase() + parts[i].substring(= 1); return camelized; }, capitalize: function() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); }, underscore: function() { return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gs= ub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); }, dasherize: function() { return this.gsub(/_/,'-'); }, inspect: function(useDoubleQuotes) { var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) { var character =3D String.specialChar[match[0]]; return character ? character : '\\u00' + match[0].charCodeAt().toPadd= edString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') += '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); }, isJSON: function() { var str =3D this; if (str.blank()) return false; str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); }, evalJSON: function(sanitize) { var json =3D this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); }, include: function(pattern) { return this.indexOf(pattern) > -1; }, startsWith: function(pattern) { return this.indexOf(pattern) =3D=3D=3D 0; }, endsWith: function(pattern) { var d =3D this.length - pattern.length; return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d; }, empty: function() { return this =3D=3D ''; }, blank: function() { return /^\s*$/.test(this); }, interpolate: function(object, pattern) { return new Template(this, pattern).evaluate(object); } }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.= prototype, { escapeHTML: function() { return this.replace(/&/g,'&').replace(//g,'&g= t;'); }, unescapeHTML: function() { return this.stripTags().replace(/&/g,'&').replace(/</g,'<').repl= ace(/>/g,'>'); } }); String.prototype.gsub.prepareReplacement =3D function(replacement) { if (Object.isFunction(replacement)) return replacement; var template =3D new Template(replacement); return function(match) { return template.evaluate(match) }; }; String.prototype.parseQuery =3D String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.tex= t); var Template =3D Class.create({ initialize: function(template, pattern) { this.template =3D template.toString(); this.pattern =3D pattern || Template.Pattern; }, evaluate: function(object) { if (Object.isFunction(object.toTemplateReplacements)) object =3D object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object =3D=3D null) return ''; var before =3D match[1] || ''; if (before =3D=3D '\\') return match[2]; var ctx =3D object, expr =3D match[3]; var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match =3D pattern.exec(expr); if (match =3D=3D null) return before; while (match !=3D null) { var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', ']')= : match[1]; ctx =3D ctx[comp]; if (null =3D=3D ctx || '' =3D=3D match[3]) break; expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : mat= ch[0].length); match =3D pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/; var $break =3D { }; var Enumerable =3D { each: function(iterator, context) { var index =3D 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e !=3D $break) throw e; } return this; }, eachSlice: function(number, iterator, context) { var index =3D -number, slices =3D [], array =3D this.toArray(); if (number < 1) return array; while ((index +=3D number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); }, all: function(iterator, context) { iterator =3D iterator || Prototype.K; var result =3D true; this.each(function(value, index) { result =3D result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; }, any: function(iterator, context) { iterator =3D iterator || Prototype.K; var result =3D false; this.each(function(value, index) { if (result =3D !!iterator.call(context, value, index)) throw $break; }); return result; }, collect: function(iterator, context) { iterator =3D iterator || Prototype.K; var results =3D []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; }, detect: function(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result =3D value; throw $break; } }); return result; }, findAll: function(iterator, context) { var results =3D []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; }, grep: function(filter, iterator, context) { iterator =3D iterator || Prototype.K; var results =3D []; if (Object.isString(filter)) filter =3D new RegExp(filter); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; }, include: function(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) !=3D -1) return true; var found =3D false; this.each(function(value) { if (value =3D=3D object) { found =3D true; throw $break; } }); return found; }, inGroupsOf: function(number, fillWith) { fillWith =3D Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); }, inject: function(memo, iterator, context) { this.each(function(value, index) { memo =3D iterator.call(context, memo, value, index); }); return memo; }, invoke: function(method) { var args =3D $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }, max: function(iterator, context) { iterator =3D iterator || Prototype.K; var result; this.each(function(value, index) { value =3D iterator.call(context, value, index); if (result =3D=3D null || value >=3D result) result =3D value; }); return result; }, min: function(iterator, context) { iterator =3D iterator || Prototype.K; var result; this.each(function(value, index) { value =3D iterator.call(context, value, index); if (result =3D=3D null || value < result) result =3D value; }); return result; }, partition: function(iterator, context) { iterator =3D iterator || Prototype.K; var trues =3D [], falses =3D []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results =3D []; this.each(function(value) { results.push(value[property]); }); return results; }, reject: function(iterator, context) { var results =3D []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; }, sortBy: function(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a =3D left.criteria, b =3D right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.map(); }, zip: function() { var iterator =3D Prototype.K, args =3D $A(arguments); if (Object.isFunction(args.last())) iterator =3D args.pop(); var collections =3D [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); }, size: function() { return this.toArray().length; }, inspect: function() { return '#'; } }; Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, filter: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray, every: Enumerable.all, some: Enumerable.any }); function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); var length =3D iterable.length || 0, results =3D new Array(length); while (length--) results[length] =3D iterable[length]; return results; } if (Prototype.Browser.WebKit) { $A =3D function(iterable) { if (!iterable) return []; // In Safari, only use the `toArray` method if it's not a NodeList. // A NodeList is a function, has an function `item` property, and a num= eric // `length` property. Adapted from Google Doctype. if (!(typeof iterable =3D=3D=3D 'function' && typeof iterable.length = =3D=3D=3D 'number' && typeof iterable.item =3D=3D=3D 'function') && iterable.= toArray) return iterable.toArray(); var length =3D iterable.length || 0, results =3D new Array(length); while (length--) results[length] =3D iterable[length]; return results; }; } Array.from =3D $A; Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) Array.prototype._reverse =3D Array.prototype= .reverse; Object.extend(Array.prototype, { _each: function(iterator) { for (var i =3D 0, length =3D this.length; i < length; i++) iterator(this[i]); }, clear: function() { this.length =3D 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value !=3D null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(Object.isArray(value) ? value.flatten() : [value]); }); }, without: function() { var values =3D $A(arguments); return this.select(function(value) { return !values.include(value); }); }, reverse: function(inline) { return (inline !=3D=3D false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(sorted) { return this.inject([], function(array, value, index) { if (0 =3D=3D index || (sorted ? array.last() !=3D value : !array.incl= ude(value))) array.push(value); return array; }); }, intersect: function(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item =3D=3D=3D value }); }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; }, toJSON: function() { var results =3D []; this.each(function(object) { var value =3D Object.toJSON(object); if (!Object.isUndefined(value)) results.push(value); }); return '[' + results.join(', ') + ']'; } }); // use native browser JS 1.6 implementation if available if (Object.isFunction(Array.prototype.forEach)) Array.prototype._each =3D Array.prototype.forEach; if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, i)= { i || (i =3D 0); var length =3D this.length; if (i < 0) i =3D length + i; for (; i < length; i++) if (this[i] =3D=3D=3D item) return i; return -1; }; if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D function(= item, i) { i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n =3D this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; }; Array.prototype.toArray =3D Array.prototype.clone; function $w(string) { if (!Object.isString(string)) return []; string =3D string.strip(); return string ? string.split(/\s+/) : []; } if (Prototype.Browser.Opera){ Array.prototype.concat =3D function() { var array =3D []; for (var i =3D 0, length =3D this.length; i < length; i++) array.push(t= his[i]); for (var i =3D 0, length =3D arguments.length; i < length; i++) { if (Object.isArray(arguments[i])) { for (var j =3D 0, arrayLength =3D arguments[i].length; j < arrayLen= gth; j++) array.push(arguments[i][j]); } else { array.push(arguments[i]); } } return array; }; } Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(iterator, context) { $R(0, this, true).each(iterator, context); return this; }, toPaddedString: function(length, radix) { var string =3D this.toString(radix || 10); return '0'.times(length - string.length) + string; }, toJSON: function() { return isFinite(this) ? this.toString() : 'null'; } }); $w('abs round ceil floor').each(function(method){ Number.prototype[method] =3D Math[method].methodize(); }); function $H(object) { return new Hash(object); }; var Hash =3D Class.create(Enumerable, (function() { function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=3D' + encodeURIComponent(String.interpret(value)); } return { initialize: function(object) { this._object =3D Object.isHash(object) ? object.toObject() : Object.c= lone(object); }, _each: function(iterator) { for (var key in this._object) { var value =3D this._object[key], pair =3D [key, value]; pair.key =3D key; pair.value =3D value; iterator(pair); } }, set: function(key, value) { return this._object[key] =3D value; }, get: function(key) { // simulating poorly supported hasOwnProperty if (this._object[key] !=3D=3D Object.prototype[key]) return this._object[key]; }, unset: function(key) { var value =3D this._object[key]; delete this._object[key]; return value; }, toObject: function() { return Object.clone(this._object); }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, index: function(value) { var match =3D this.detect(function(pair) { return pair.value =3D=3D=3D value; }); return match && match.key; }, merge: function(object) { return this.clone().update(object); }, update: function(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); }, toQueryString: function() { return this.inject([], function(results, pair) { var key =3D encodeURIComponent(pair.key), values =3D pair.value; if (values && typeof values =3D=3D 'object') { if (Object.isArray(values)) return results.concat(values.map(toQueryPair.curry(key))); } else results.push(toQueryPair(key, values)); return results; }).join('&'); }, inspect: function() { return '#'; }, toJSON: function() { return Object.toJSON(this.toObject()); }, clone: function() { return new Hash(this); } } })()); Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject; Hash.from =3D $H; var ObjectRange =3D Class.create(Enumerable, { initialize: function(start, end, exclusive) { this.start =3D start; this.end =3D end; this.exclusive =3D exclusive; }, _each: function(iterator) { var value =3D this.start; while (this.include(value)) { iterator(value); value =3D value.succ(); } }, include: function(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <=3D this.end; } }); var $R =3D function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); }; var Ajax =3D { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders =3D { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders =3D this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base =3D Class.create({ initialize: function(options) { this.options =3D { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method =3D this.options.method.toLowerCase(); if (Object.isString(this.options.parameters)) this.options.parameters =3D this.options.parameters.toQueryParams(); else if (Object.isHash(this.options.parameters)) this.options.parameters =3D this.options.parameters.toObject(); } }); Ajax.Request =3D Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport =3D Ajax.getTransport(); this.request(url); }, request: function(url) { this.url =3D url; this.method =3D this.options.method; var params =3D Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { // simulate other verbs over post params['_method'] =3D this.method; this.method =3D 'post'; } this.parameters =3D params; if (params =3D Object.toQueryString(params)) { // when GET, append parameters to URL if (this.method =3D=3D 'get') this.url +=3D (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params +=3D '&_=3D'; } try { var response =3D new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).de= fer(1); this.transport.onreadystatechange =3D this.onStateChange.bind(this); this.setRequestHeaders(); this.body =3D this.method =3D=3D 'post' ? (this.options.postBody ||= params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState =3D this.transport.readyState; if (readyState > 1 && !((readyState =3D=3D 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers =3D { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method =3D=3D 'post') { headers['Content-type'] =3D this.options.contentType + (this.options.encoding ? '; charset=3D' + this.options.encoding := ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 20= 05) headers['Connection'] =3D 'close'; } // user-defined headers if (typeof this.options.requestHeaders =3D=3D 'object') { var extras =3D this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2) headers[extras[i]] =3D extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] =3D pair.value= }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status =3D this.getStatus(); return !status || (status >=3D 200 && status < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state =3D Ajax.Request.Events[readyState], response =3D new Ajax.Re= sponse(this); if (state =3D=3D 'Complete') { try { this._complete =3D true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType =3D response.getHeader('Content-type'); if (this.options.evalJS =3D=3D 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)scr= ipt(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, res= ponse.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.heade= rJSON); } catch (e) { this.dispatchException(e); } if (state =3D=3D 'Complete') { // avoid memory leak in MSIE: clean up this.transport.onreadystatechange =3D Prototype.emptyFunction; } }, isSameOrigin: function() { var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] =3D=3D '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events =3D ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response =3D Class.create({ initialize: function(request){ this.request =3D request; var transport =3D this.transport =3D request.transport, readyState =3D this.readyState =3D transport.readyState; if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) { this.status =3D this.getStatus(); this.statusText =3D this.getStatusText(); this.responseText =3D String.interpret(transport.responseText); this.headerJSON =3D this._getHeaderJSON(); } if(readyState =3D=3D 4) { var xml =3D transport.responseXML; this.responseXML =3D Object.isUndefined(xml) ? null : xml; this.responseJSON =3D this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json =3D this.getHeader('X-JSON'); if (!json) return null; json =3D decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options =3D this.request.options; if (!options.evalJSON || (options.evalJSON !=3D 'force' && !(this.getHeader('Content-type') || '').include('application/json'))= || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater =3D Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container =3D { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options =3D Object.clone(options); var onComplete =3D options.onComplete; options.onComplete =3D (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver =3D this.container[this.success() ? 'success' : 'failure'], options =3D this.options; if (!options.evalScripts) responseText =3D responseText.stripScripts(); if (receiver =3D $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion =3D { }; insertion[options.insertion] =3D responseT= ext; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete =3D this.options.onComplete; this.frequency =3D (this.options.frequency || 2); this.decay =3D (this.options.decay || 1); this.updater =3D { }; this.container =3D container; this.url =3D url; this.start(); }, start: function() { this.options.onComplete =3D this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete =3D undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay =3D (response.responseText =3D=3D this.lastText ? this.decay * this.options.decay : 1); this.lastText =3D response.responseText; } this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * this.fre= quency); }, onTimerEvent: function() { this.updater =3D new Ajax.Updater(this.container, this.url, this.option= s); } }); function $(element) { if (arguments.length > 1) { for (var i =3D 0, elements =3D [], length =3D arguments.length; i < len= gth; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element =3D document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath =3D function(expression, parentElement) { var results =3D []; var query =3D document.evaluate(expression, $(parentElement) || documen= t, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i =3D 0, length =3D query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*-------------------------------------------------------------------------= -*/ if (!window.Node) var Node =3D { }; if (!Node.ELEMENT_NODE) { // DOM level 2 ECMAScript Language Binding Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function() { var element =3D this.Element; this.Element =3D function(tagName, attributes) { attributes =3D attributes || { }; tagName =3D tagName.toLowerCase(); var cache =3D Element.cache; if (Prototype.Browser.IE && attributes.name) { tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attrib= utes); } if (!cache[tagName]) cache[tagName] =3D Element.extend(document.createE= lement(tagName)); return Element.writeAttribute(cache[tagName].cloneNode(false), attribut= es); }; Object.extend(this.Element, element || { }); if (element) this.Element.prototype =3D element.prototype; }).call(window); Element.cache =3D { }; Element.Methods =3D { visible: function(element) { return $(element).style.display !=3D 'none'; }, toggle: function(element) { element =3D $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element =3D $(element); element.style.display =3D 'none'; return element; }, show: function(element) { element =3D $(element); element.style.display =3D ''; return element; }, remove: function(element) { element =3D $(element); element.parentNode.removeChild(element); return element; }, update: function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content =3D Object.toHTML(content); element.innerHTML =3D content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }, replace: function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); else if (!Object.isElement(content)) { content =3D Object.toHTML(content); var range =3D element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content =3D range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element =3D $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElemen= t || insertions.toHTML))) insertions =3D {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content =3D insertions[position]; position =3D position.toLowerCase(); insert =3D Element._insertionTranslations[position]; if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content =3D Object.toHTML(content); tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes =3D Element._getContentFromAnonymousElement(tagName, conte= nt.stripScripts()); if (position =3D=3D 'top' || position =3D=3D 'after') childNodes.reve= rse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element =3D $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, att= ributes); else wrapper =3D new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element =3D $(element); var result =3D '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property =3D pair.first(), attribute =3D pair.last(); var value =3D (element[property] || '').toString(); if (value) result +=3D ' ' + attribute + '=3D' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element =3D $(element); var elements =3D []; while (element =3D element[property]) if (element.nodeType =3D=3D 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return $(element).select("*"); }, firstDescendant: function(element) { element =3D $(element).firstChild; while (element && element.nodeType !=3D 1) element =3D element.nextSibl= ing; return $(element); }, immediateDescendants: function(element) { if (!(element =3D $(element).firstChild)) return []; while (element && element.nodeType !=3D 1) element =3D element.nextSibl= ing; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element =3D $(element); return element.previousSiblings().reverse().concat(element.nextSiblings= ()); }, match: function(element, selector) { if (Object.isString(selector)) selector =3D new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return $(element.parentNode); var ancestors =3D element.ancestors(); return Object.isNumber(expression) ? ancestors[expression] : Selector.findElement(ancestors, expression, index); }, down: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return element.firstDescendant(); return Object.isNumber(expression) ? element.descendants()[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return $(Selector.handlers.previousEleme= ntSibling(element)); var previousSiblings =3D element.previousSiblings(); return Object.isNumber(expression) ? previousSiblings[expression] : Selector.findElement(previousSiblings, expression, index); }, next: function(element, expression, index) { element =3D $(element); if (arguments.length =3D=3D 1) return $(Selector.handlers.nextElementSi= bling(element)); var nextSiblings =3D element.nextSiblings(); return Object.isNumber(expression) ? nextSiblings[expression] : Selector.findElement(nextSiblings, expression, index); }, select: function() { var args =3D $A(arguments), element =3D $(args.shift()); return Selector.findChildElements(element, args); }, adjacent: function() { var args =3D $A(arguments), element =3D $(args.shift()); return Selector.findChildElements(element.parentNode, args).without(ele= ment); }, identify: function(element) { element =3D $(element); var id =3D element.readAttribute('id'), self =3D arguments.callee; if (id) return id; do { id =3D 'anonymous_element_' + self.counter++ } while ($(id)); element.writeAttribute('id', id); return id; }, readAttribute: function(element, name) { element =3D $(element); if (Prototype.Browser.IE) { var t =3D Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name =3D t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element =3D $(element); var attributes =3D { }, t =3D Element._attributeTranslations.write; if (typeof name =3D=3D 'object') attributes =3D name; else attributes[name] =3D Object.isUndefined(value) ? true : value; for (var attr in attributes) { name =3D t.names[attr] || attr; value =3D attributes[attr]; if (t.values[attr]) name =3D t.values[attr](element, value); if (value =3D=3D=3D false || value =3D=3D=3D null) element.removeAttribute(name); else if (value =3D=3D=3D true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element =3D $(element))) return; var elementClassName =3D element.className; return (elementClassName.length > 0 && (elementClassName =3D=3D classNa= me || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))= ); }, addClassName: function(element, className) { if (!(element =3D $(element))) return; if (!element.hasClassName(className)) element.className +=3D (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element =3D $(element))) return; element.className =3D element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element =3D $(element))) return; return element[element.hasClassName(className) ? 'removeClassName' : 'addClassName'](className); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element =3D $(element); var node =3D element.firstChild; while (node) { var nextNode =3D node.nextSibling; if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node =3D nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element =3D $(element), ancestor =3D $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !=3D=3D element; while (element =3D element.parentNode) if (element =3D=3D ancestor) return true; return false; }, scrollTo: function(element) { element =3D $(element); var pos =3D element.cumulativeOffset(); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element =3D $(element); style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize(); var value =3D element.style[style]; if (!value || value =3D=3D 'auto') { var css =3D document.defaultView.getComputedStyle(element, null); value =3D css ? css[style] : null; } if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0; return value =3D=3D 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element =3D $(element); var elementStyle =3D element.style, match; if (Object.isString(styles)) { element.style.cssText +=3D ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : ele= ment; } for (var property in styles) if (property =3D=3D 'opacity') element.setOpacity(styles[property]); else elementStyle[(property =3D=3D 'float' || property =3D=3D 'cssFloat'= ) ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styl= eFloat') : property] =3D styles[property]; return element; }, setOpacity: function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? ''= : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element =3D $(element); var display =3D element.getStyle('display'); if (display !=3D 'none' && display !=3D null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display no= ne, // so enable the element temporarily var els =3D element.style; var originalVisibility =3D els.visibility; var originalPosition =3D els.position; var originalDisplay =3D els.display; els.visibility =3D 'hidden'; els.position =3D 'absolute'; els.display =3D 'block'; var originalWidth =3D element.clientWidth; var originalHeight =3D element.clientHeight; els.display =3D originalDisplay; els.position =3D originalPosition; els.visibility =3D originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element =3D $(element); var pos =3D Element.getStyle(element, 'position'); if (pos =3D=3D 'static' || !pos) { element._madePositioned =3D true; element.style.position =3D 'relative'; // Opera returns the offset relative to the positioning context, when= an // element is position relative but top and left have not been defined if (Prototype.Browser.Opera) { element.style.top =3D 0; element.style.left =3D 0; } } return element; }, undoPositioned: function(element) { element =3D $(element); if (element._madePositioned) { element._madePositioned =3D undefined; element.style.position =3D element.style.top =3D element.style.left =3D element.style.bottom =3D element.style.right =3D ''; } return element; }, makeClipping: function(element) { element =3D $(element); if (element._overflow) return element; element._overflow =3D Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !=3D=3D 'hidden') element.style.overflow =3D 'hidden'; return element; }, undoClipping: function(element) { element =3D $(element); if (!element._overflow) return element; element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : eleme= nt._overflow; element._overflow =3D null; return element; }, cumulativeOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }, positionedOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; element =3D element.offsetParent; if (element) { if (element.tagName.toUpperCase() =3D=3D 'BODY') break; var p =3D Element.getStyle(element, 'position'); if (p !=3D=3D 'static') break; } } while (element); return Element._returnOffset(valueL, valueT); }, absolutize: function(element) { element =3D $(element); if (element.getStyle('position') =3D=3D 'absolute') return element; // Position.prepare(); // To be done manually by Scripty when it needs= it. var offsets =3D element.positionedOffset(); var top =3D offsets[1]; var left =3D offsets[0]; var width =3D element.clientWidth; var height =3D element.clientHeight; element._originalLeft =3D left - parseFloat(element.style.left || 0); element._originalTop =3D top - parseFloat(element.style.top || 0); element._originalWidth =3D element.style.width; element._originalHeight =3D element.style.height; element.style.position =3D 'absolute'; element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.width =3D width + 'px'; element.style.height =3D height + 'px'; return element; }, relativize: function(element) { element =3D $(element); if (element.getStyle('position') =3D=3D 'relative') return element; // Position.prepare(); // To be done manually by Scripty when it needs= it. element.style.position =3D 'relative'; var top =3D parseFloat(element.style.top || 0) - (element._originalTo= p || 0); var left =3D parseFloat(element.style.left || 0) - (element._originalLe= ft || 0); element.style.top =3D top + 'px'; element.style.left =3D left + 'px'; element.style.height =3D element._originalHeight; element.style.width =3D element._originalWidth; return element; }, cumulativeScrollOffset: function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.scrollTop || 0; valueL +=3D element.scrollLeft || 0; element =3D element.parentNode; } while (element); return Element._returnOffset(valueL, valueT); }, getOffsetParent: function(element) { if (element.offsetParent) return $(element.offsetParent); if (element =3D=3D document.body) return $(element); while ((element =3D element.parentNode) && element !=3D document.body) if (Element.getStyle(element, 'position') !=3D 'static') return $(element); return $(document.body); }, viewportOffset: function(forElement) { var valueT =3D 0, valueL =3D 0; var element =3D forElement; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; // Safari fix if (element.offsetParent =3D=3D document.body && Element.getStyle(element, 'position') =3D=3D 'absolute') break; } while (element =3D element.offsetParent); element =3D forElement; do { if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.= toUpperCase() =3D=3D 'BODY'))) { valueT -=3D element.scrollTop || 0; valueL -=3D element.scrollLeft || 0; } } while (element =3D element.parentNode); return Element._returnOffset(valueL, valueT); }, clonePosition: function(element, source) { var options =3D Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); // find page position of source source =3D $(source); var p =3D source.viewportOffset(); // find coordinate system to use element =3D $(element); var delta =3D [0, 0]; var parent =3D null; // delta [0,0] will do fine with position: fixed elements, // position:absolute needs offsetParent deltas if (Element.getStyle(element, 'position') =3D=3D 'absolute') { parent =3D element.getOffsetParent(); delta =3D parent.viewportOffset(); } // correct by body offsets (fixes Safari) if (parent =3D=3D document.body) { delta[0] -=3D document.body.offsetLeft; delta[1] -=3D document.body.offsetTop; } // set position if (options.setLeft) element.style.left =3D (p[0] - delta[0] + optio= ns.offsetLeft) + 'px'; if (options.setTop) element.style.top =3D (p[1] - delta[1] + optio= ns.offsetTop) + 'px'; if (options.setWidth) element.style.width =3D source.offsetWidth + 'px= '; if (options.setHeight) element.style.height =3D source.offsetHeight += 'px'; return element; } }; Element.Methods.identify.counter =3D 1; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations =3D { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle =3D Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'left': case 'top': case 'right': case 'bottom': if (proceed(element, 'position') =3D=3D=3D 'static') return null; case 'height': case 'width': // returns '0px' for hidden elements; we want it to return null if (!Element.visible(element)) return null; // returns the border-box dimensions rather than the content-box // dimensions, so we subtract padding and borders from the value var dim =3D parseInt(proceed(element, style), 10); if (dim !=3D=3D element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style =3D=3D=3D 'height') { properties =3D ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties =3D ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val =3D proceed(element, property); return val =3D=3D=3D null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute =3D=3D=3D 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { // IE doesn't report offsets correctly for static elements, so we change= them // to "relative" to get the values, then change them back. Element.Methods.getOffsetParent =3D Element.Methods.getOffsetParent.wrap( function(proceed, element) { element =3D $(element); // IE throws an error if element is not in document try { element.offsetParent } catch(e) { return $(document.body) } var position =3D element.getStyle('position'); if (position !=3D=3D 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value =3D proceed(element); element.setStyle({ position: position }); return value; } ); $w('positionedOffset viewportOffset').each(function(method) { Element.Methods[method] =3D Element.Methods[method].wrap( function(proceed, element) { element =3D $(element); try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } var position =3D element.getStyle('position'); if (position !=3D=3D 'static') return proceed(element); // Trigger hasLayout on the offset parent so that IE6 reports // accurate offsetTop and offsetLeft values for position: fixed. var offsetParent =3D element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D 'fi= xed') offsetParent.setStyle({ zoom: 1 }); element.setStyle({ position: 'relative' }); var value =3D proceed(element); element.setStyle({ position: position }); return value; } ); }); Element.Methods.cumulativeOffset =3D Element.Methods.cumulativeOffset.wra= p( function(proceed, element) { try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } return proceed(element); } ); Element.Methods.getStyle =3D function(element, style) { element =3D $(element); style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? 'styleFlo= at' : style.camelize(); var value =3D element.style[style]; if (!value && element.currentStyle) value =3D element.currentStyle[styl= e]; if (style =3D=3D 'opacity') { if (value =3D (element.getStyle('filter') || '').match(/alpha\(opacit= y=3D(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value =3D=3D 'auto') { if ((style =3D=3D 'width' || style =3D=3D 'height') && (element.getSt= yle('display') !=3D 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity =3D function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element =3D $(element); var currentStyle =3D element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom =3D=3D 'normal')) element.style.zoom =3D 1; var filter =3D element.getStyle('filter'), style =3D element.style; if (value =3D=3D 1 || value =3D=3D=3D '') { (filter =3D stripAlpha(filter)) ? style.filter =3D filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value =3D 0; style.filter =3D stripAlpha(filter) + 'alpha(opacity=3D' + (value * 100) + ')'; return element; }; Element._attributeTranslations =3D { read: { names: { 'class': 'className', 'for': 'htmlFor' }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node =3D element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: function(element, attribute) { attribute =3D element.getAttribute(attribute); return attribute ? attribute.toString().slice(23, -2) : null; }, _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } }; Element._attributeTranslations.write =3D { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked =3D !!value; }, style: function(element, value) { element.style.cssText =3D value ? value : ''; } } }; Element._attributeTranslations.has =3D {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr= ) { Element._attributeTranslations.write.names[attr.toLowerCase()] =3D attr; Element._attributeTranslations.has[attr.toLowerCase()] =3D attr; }); (function(v) { Object.extend(v, { href: v._getAttr, src: v._getAttr, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent))= { Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1) ? 0.999999 : (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity =3D function(element, value) { element =3D $(element); element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? ''= : (value < 0.00001) ? 0 : value; if (value =3D=3D 1) if(element.tagName.toUpperCase() =3D=3D 'IMG' && element.width) { element.width++; element.width--; } else try { var n =3D document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; // Safari returns margins on body which is incorrect if the child is abso= lutely // positioned. For performance reasons, redefine Element#cumulativeOffse= t for // KHTML/WebKit only. Element.Methods.cumulativeOffset =3D function(element) { var valueT =3D 0, valueL =3D 0; do { valueT +=3D element.offsetTop || 0; valueL +=3D element.offsetLeft || 0; if (element.offsetParent =3D=3D document.body) if (Element.getStyle(element, 'position') =3D=3D 'absolute') break; element =3D element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }; } if (Prototype.Browser.IE || Prototype.Browser.Opera) { // IE and Opera are missing .innerHTML support for TABLE-related and SELE= CT elements Element.Methods.update =3D function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content =3D Object.toHTML(content); var tagName =3D element.tagName.toUpperCase(); if (tagName in Element._insertionTranslations.tags) { $A(element.childNodes).each(function(node) { element.removeChild(node= ) }); Element._getContentFromAnonymousElement(tagName, content.stripScripts= ()) .each(function(node) { element.appendChild(node) }); } else element.innerHTML =3D content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } if ('outerHTML' in document.createElement('div')) { Element.Methods.replace =3D function(element, content) { element =3D $(element); if (content && content.toElement) content =3D content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content =3D Object.toHTML(content); var parent =3D element.parentNode, tagName =3D parent.tagName.toUpperCa= se(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling =3D element.next(); var fragments =3D Element._getContentFromAnonymousElement(tagName, co= ntent.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibli= ng) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML =3D content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset =3D function(l, t) { var result =3D [l, t]; result.left =3D l; result.top =3D t; return result; }; Element._getContentFromAnonymousElement =3D function(tagName, html) { var div =3D new Element('div'), t =3D Element._insertionTranslations.tags= [tagName]; if (t) { div.innerHTML =3D t[0] + html + t[1]; t[2].times(function() { div =3D div.firstChild }); } else div.innerHTML =3D html; return $A(div.childNodes); }; Element._insertionTranslations =3D { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['', '
', 1], TBODY: ['', '
', 2], TR: ['', '
', 3], TD: ['
', '
', 4], SELECT: ['', 1] } }; (function() { Object.extend(this.tags, { THEAD: this.tags.TBODY, TFOOT: this.tags.TBODY, TH: this.tags.TD }); }).call(Element._insertionTranslations); Element.Methods.Simulated =3D { hasAttribute: function(element, attribute) { attribute =3D Element._attributeTranslations.has[attribute] || attribut= e; var node =3D $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag =3D { }; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement('div')['__proto__']) { window.HTMLElement =3D { }; window.HTMLElement.prototype =3D document.createElement('div')['__proto__= ']; Prototype.BrowserFeatures.ElementExtensions =3D true; } Element.extend =3D (function() { if (Prototype.BrowserFeatures.SpecificElementExtensions) return Prototype.K; var Methods =3D { }, ByTag =3D Element.Methods.ByTag; var extend =3D Object.extend(function(element) { if (!element || element._extendedByPrototype || element.nodeType !=3D 1 || element =3D=3D window) return element; var methods =3D Object.clone(Methods), tagName =3D element.tagName.toUpperCase(), property, value; // extend methods for specific tags if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); for (property in methods) { value =3D methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] =3D value.methodize(); } element._extendedByPrototype =3D Prototype.emptyFunction; return element; }, { refresh: function() { // extend methods for all tags (Safari doesn't need this) if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); Element.hasAttribute =3D function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods =3D function(methods) { var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length =3D=3D 2) { var tagName =3D methods; methods =3D arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName =3D tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] =3D { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent =3D onlyIfAbsent || false; for (var property in methods) { var value =3D methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] =3D value.methodize(); } } function findDOMClass(tagName) { var klass; var trans =3D { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR= ": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass =3D 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; window[klass] =3D { }; window[klass].prototype =3D document.createElement(tagName)['__proto__'= ]; return window[klass]; } if (F.ElementExtensions) { copy(Element.Methods, HTMLElement.prototype); copy(Element.Methods.Simulated, HTMLElement.prototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass =3D findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache =3D { }; }; document.viewport =3D { getDimensions: function() { var dimensions =3D { }, B =3D Prototype.Browser; $w('width height').each(function(d) { var D =3D d.capitalize(); if (B.WebKit && !document.evaluate) { // Safari <3.0 needs self.innerWidth/Height dimensions[d] =3D self['inner' + D]; } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) { // Opera <9.5 needs document.body.clientWidth/Height dimensions[d] =3D document.body['client' + D] } else { dimensions[d] =3D document.documentElement['client' + D]; } }); return dimensions; }, getWidth: function() { return this.getDimensions().width; }, getHeight: function() { return this.getDimensions().height; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document= .body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.= body.scrollTop); } }; /* Portions of the Selector class are derived from Jack Slocum's DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector =3D Class.create({ initialize: function(expression) { this.expression =3D expression.strip(); if (this.shouldUseSelectorsAPI()) { this.mode =3D 'selectorsAPI'; } else if (this.shouldUseXPath()) { this.mode =3D 'xpath'; this.compileXPathMatcher(); } else { this.mode =3D "normal"; this.compileMatcher(); } }, shouldUseXPath: function() { if (!Prototype.BrowserFeatures.XPath) return false; var e =3D this.expression; // Safari 3 chokes on :*-of-type and :empty if (Prototype.Browser.WebKit && (e.include("-of-type") || e.include(":empty"))) return false; // XPath can't do namespaced attributes, nor can it read // the "checked" property from DOM nodes if ((/(\[[\w-]*?:|:checked)/).test(e)) return false; return true; }, shouldUseSelectorsAPI: function() { if (!Prototype.BrowserFeatures.SelectorsAPI) return false; if (!Selector._div) Selector._div =3D new Element('div'); // Make sure the browser treats the selector as valid. Test on an // isolated element to minimize cost of this check. try { Selector._div.querySelector(this.expression); } catch(e) { return false; } return true; }, compileMatcher: function() { var e =3D this.expression, ps =3D Selector.patterns, h =3D Selector.han= dlers, c =3D Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher =3D Selector._cache[e]; return; } this.matcher =3D ["this.matcher =3D function(root) {", "var r =3D root, h =3D Selector.handlers, c =3D false,= n;"]; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { p =3D ps[i]; if (m =3D e.match(p)) { this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : new Template(c[i]).evaluate(m)); e =3D e.replace(m[0], ''); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] =3D this.matcher; }, compileXPathMatcher: function() { var e =3D this.expression, ps =3D Selector.patterns, x =3D Selector.xpath, le, m; if (Selector._cache[e]) { this.xpath =3D Selector._cache[e]; return; } this.matcher =3D ['.//*']; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { if (m =3D e.match(ps[i])) { this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m)); e =3D e.replace(m[0], ''); break; } } } this.xpath =3D this.matcher.join(''); Selector._cache[this.expression] =3D this.xpath; }, findElements: function(root) { root =3D root || document; var e =3D this.expression, results; switch (this.mode) { case 'selectorsAPI': // querySelectorAll queries document-wide, then filters to descenda= nts // of the context element. That's not what we want. // Add an explicit context to the selector if necessary. if (root !=3D=3D document) { var oldId =3D root.id, id =3D $(root).identify(); e =3D "#" + id + " " + e; } results =3D $A(root.querySelectorAll(e)).map(Element.extend); root.id =3D oldId; return results; case 'xpath': return document._getElementsByXPath(this.xpath, root); default: return this.matcher(root); } }, match: function(element) { this.tokens =3D []; var e =3D this.expression, ps =3D Selector.patterns, as =3D Selector.as= sertions; var le, p, m; while (e && le !=3D=3D e && (/\S/).test(e)) { le =3D e; for (var i in ps) { p =3D ps[i]; if (m =3D e.match(p)) { // use the Selector.assertions methods unless the selector // is too complex. if (as[i]) { this.tokens.push([i, Object.clone(m)]); e =3D e.replace(m[0], ''); } else { // reluctantly do a document-wide search // and look for a match in the array return this.findElements(document).include(element); } } } } var match =3D true, name, matches; for (var i =3D 0, token; token =3D this.tokens[i]; i++) { name =3D token[0], matches =3D token[1]; if (!Selector.assertions[name](element, matches)) { match =3D false; break; } } return match; }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }); Object.extend(Selector, { _cache: { }, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] =3D=3D '*') return ''; return "[local-name()=3D'" + m[1].toLowerCase() + "' or local-name()=3D'" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id=3D'#{1}']", attrPresence: function(m) { m[1] =3D m[1].toLowerCase(); return new Template("[@#{1}]").evaluate(m); }, attr: function(m) { m[1] =3D m[1].toLowerCase(); m[3] =3D m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h =3D Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (Object.isFunction(h)) return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=3D': "[@#{1}=3D'#{3}']", '!=3D': "[@#{1}!=3D'#{3}']", '^=3D': "[starts-with(@#{1}, '#{3}')]", '$=3D': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3= }') + 1))=3D'#{3}']", '*=3D': "[contains(@#{1}, '#{3}')]", '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', 'empty': "[count(*) =3D 0 and (count(text()) =3D 0)]", 'checked': "[@checked]", 'disabled': "[(@disabled) and (@type!=3D'hidden')]", 'enabled': "[not(@disabled) and (@type!=3D'hidden')]", 'not': function(m) { var e =3D m[6], p =3D Selector.patterns, x =3D Selector.xpath, le, v; var exclusion =3D []; while (e && le !=3D e && (/\S/).test(e)) { le =3D e; for (var i in p) { if (m =3D e.match(p[i])) { v =3D Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).= evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e =3D e.replace(m[0], ''); break; } } } return "[not(" + exclusion.join(" and ") + ")]"; }, 'nth-child': function(m) { return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*)= + 1) ", m); }, 'nth-last-child': function(m) { return Selector.xpath.pseudos.nth("(count(./following-sibling::*)= + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); }, 'first-of-type': function(m) { m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] =3D "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + p[= 'last-of-type'](m); }, nth: function(fragment, m) { var mm, formula =3D m[6], predicate; if (formula =3D=3D 'even') formula =3D '2n+0'; if (formula =3D=3D 'odd') formula =3D '2n+1'; if (mm =3D formula.match(/^(\d+)$/)) // digit only return '[' + fragment + "=3D " + mm[1] + ']'; if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (mm[1] =3D=3D "-") mm[1] =3D -1; var a =3D mm[1] ? Number(mm[1]) : 1; var b =3D mm[2] ? Number(mm[2]) : 0; predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " + "((#{fragment} - #{b}) div #{a} >=3D 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;', className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;', id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;', attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;', attr: function(m) { m[3] =3D (m[5] || m[6]); return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", c);= c =3D false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"'); return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c =3D= false;').evaluate(m); }, descendant: 'c =3D "descendant";', child: 'c =3D "child";', adjacent: 'c =3D "adjacent";', laterSibling: 'c =3D "laterSibling";' }, patterns: { // combinators must be listed first // (and descendant needs to be last combinator) laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, // selectors follow tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)a= bled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/, attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/, attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\= 4]*?)\4|([^'"][^\]]*?)))?\]/ }, // for Selector.match and Element#match assertions: { tagName: function(element, matches) { return matches[1].toUpperCase() =3D=3D element.tagName.toUpperCase(); }, className: function(element, matches) { return Element.hasClassName(element, matches[1]); }, id: function(element, matches) { return element.id =3D=3D=3D matches[1]; }, attrPresence: function(element, matches) { return Element.hasAttribute(element, matches[1]); }, attr: function(element, matches) { var nodeValue =3D Element.readAttribute(element, matches[1]); return nodeValue && Selector.operators[matches[2]](nodeValue, matches= [5] || matches[6]); } }, handlers: { // UTILITY FUNCTIONS // joins two collections concat: function(a, b) { for (var i =3D 0, node; node =3D b[i]; i++) a.push(node); return a; }, // marks an array of nodes for counting mark: function(nodes) { var _true =3D Prototype.emptyFunction; for (var i =3D 0, node; node =3D nodes[i]; i++) node._countedByPrototype =3D _true; return nodes; }, unmark: function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node._countedByPrototype =3D undefined; return nodes; }, // mark each child node with its position (for nth calls) // "ofType" flag indicates whether we're indexing for nth-of-type // rather than nth-child index: function(parentNode, reverse, ofType) { parentNode._countedByPrototype =3D Prototype.emptyFunction; if (reverse) { for (var nodes =3D parentNode.childNodes, i =3D nodes.length - 1,= j =3D 1; i >=3D 0; i--) { var node =3D nodes[i]; if (node.nodeType =3D=3D 1 && (!ofType || node._countedByPrototyp= e)) node.nodeIndex =3D j++; } } else { for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++) if (node.nodeType =3D=3D 1 && (!ofType || node._countedByPrototyp= e)) node.nodeIndex =3D j++; } }, // filters out duplicates and extends all nodes unique: function(nodes) { if (nodes.length =3D=3D 0) return nodes; var results =3D [], n; for (var i =3D 0, l =3D nodes.length; i < l; i++) if (!(n =3D nodes[i])._countedByPrototype) { n._countedByPrototype =3D Prototype.emptyFunction; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, // COMBINATOR FUNCTIONS descendant: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { for (var j =3D 0, child; child =3D node.childNodes[j]; j++) if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') results.pu= sh(child); } return results; }, adjacent: function(nodes) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { var next =3D this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node =3D node.nextSibling) if (node.nodeType =3D=3D 1) return node; return null; }, previousElementSibling: function(node) { while (node =3D node.previousSibling) if (node.nodeType =3D=3D 1) return node; return null; }, // TOKEN FUNCTIONS tagName: function(nodes, root, tagName, combinator) { var uTagName =3D tagName.toUpperCase(); var results =3D [], h =3D Selector.handlers; if (nodes) { if (combinator) { // fastlane for ordinary descendant combinators if (combinator =3D=3D "descendant") { for (var i =3D 0, node; node =3D nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes =3D this[combinator](nodes); if (tagName =3D=3D "*") return nodes; } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.tagName.toUpperCase() =3D=3D=3D uTagName) results.push(n= ode); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode =3D $(id), h =3D Selector.handlers; if (!targetNode) return []; if (!nodes && root =3D=3D document) return [targetNode]; if (nodes) { if (combinator) { if (combinator =3D=3D 'child') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (targetNode.parentNode =3D=3D node) return [targetNode]; } else if (combinator =3D=3D 'descendant') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return [targetNod= e]; } else if (combinator =3D=3D 'adjacent') { for (var i =3D 0, node; node =3D nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) =3D= =3D node) return [targetNode]; } else nodes =3D h[combinator](nodes); } for (var i =3D 0, node; node =3D nodes[i]; i++) if (node =3D=3D targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? [targ= etNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes =3D Selector.handlers.descendant([root]); var needle =3D ' ' + className + ' '; for (var i =3D 0, results =3D [], node, nodeClassName; node =3D nodes= [i]; i++) { nodeClassName =3D node.className; if (nodeClassName.length =3D=3D 0) continue; if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' ').i= nclude(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr, combinator) { if (!nodes) nodes =3D root.getElementsByTagName("*"); if (nodes && combinator) nodes =3D this[combinator](nodes); var results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator, combinator) { if (!nodes) nodes =3D root.getElementsByTagName("*"); if (nodes && combinator) nodes =3D this[combinator](nodes); var handler =3D Selector.operators[operator], results =3D []; for (var i =3D 0, node; node =3D nodes[i]; i++) { var nodeValue =3D Element.readAttribute(node, attr); if (nodeValue =3D=3D=3D null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes =3D this[combinator](nodes); if (!nodes) nodes =3D root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h =3D Selector.handlers; for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p =3D Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), fo= rmula, root); }, // handles the an+b logic getIndices: function(a, b, total) { if (a =3D=3D 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i); return memo; }); }, // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-ty= pe nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length =3D=3D 0) return []; if (formula =3D=3D 'even') formula =3D '2n+0'; if (formula =3D=3D 'odd') formula =3D '2n+1'; var h =3D Selector.handlers, results =3D [], indexed =3D [], m; h.mark(nodes); for (var i =3D 0, node; node =3D nodes[i]; i++) { if (!node.parentNode._countedByPrototype) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula =3D Number(formula); for (var i =3D 0, node; node =3D nodes[i]; i++) if (node.nodeIndex =3D=3D formula) results.push(node); } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (m[1] =3D=3D "-") m[1] =3D -1; var a =3D m[1] ? Number(m[1]) : 1; var b =3D m[2] ? Number(m[2]) : 0; var indices =3D Selector.pseudos.getIndices(a, b, nodes.length); for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; i+= +) { for (var j =3D 0; j < l; j++) if (node.nodeIndex =3D=3D indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) { // IE treats comments as element nodes if (node.tagName =3D=3D '!' || node.firstChild) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h =3D Selector.handlers, selectorType, m; var exclusions =3D new Selector(selector).findElements(root); h.mark(exclusions); for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node._countedByPrototype) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (!node.disabled && (!node.type || node.type !=3D=3D 'hidden')) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=3D': function(nv, v) { return nv =3D=3D v; }, '!=3D': function(nv, v) { return nv !=3D v; }, '^=3D': function(nv, v) { return nv =3D=3D v || nv && nv.startsWith(v);= }, '$=3D': function(nv, v) { return nv =3D=3D v || nv && nv.endsWith(v); }, '*=3D': function(nv, v) { return nv =3D=3D v || nv && nv.include(v); }, '$=3D': function(nv, v) { return nv.endsWith(v); }, '*=3D': function(nv, v) { return nv.include(v); }, '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + '= '); }, '|=3D': function(nv, v) { return ('-' + (nv || "").toUpperCase() + '-').include('-' + (v || "").toUpperCase() + '-'); } }, split: function(expression) { var expressions =3D []; expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m)= { expressions.push(m[1].strip()); }); return expressions; }, matchElements: function(elements, expression) { var matches =3D $$(expression), h =3D Selector.handlers; h.mark(matches); for (var i =3D 0, results =3D [], element; element =3D elements[i]; i++) if (element._countedByPrototype) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (Object.isNumber(expression)) { index =3D expression; expression =3D false; } return Selector.matchElements(elements, expression || '*')[index || 0]; }, findChildElements: function(element, expressions) { expressions =3D Selector.split(expressions.join(',')); var results =3D [], h =3D Selector.handlers; for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) { selector =3D new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); if (Prototype.Browser.IE) { Object.extend(Selector.handlers, { // IE returns comment nodes on getElementsByTagName("*"). // Filter them out. concat: function(a, b) { for (var i =3D 0, node; node =3D b[i]; i++) if (node.tagName !=3D=3D "!") a.push(node); return a; }, // IE improperly serializes _countedByPrototype in (inner|outer)HTML. unmark: function(nodes) { for (var i =3D 0, node; node =3D nodes[i]; i++) node.removeAttribute('_countedByPrototype'); return nodes; } }); } function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form =3D { reset: function(form) { $(form).reset(); return form; }, serializeElements: function(elements, options) { if (typeof options !=3D 'object') options =3D { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash =3D true; var key, value, submitted =3D false, submit =3D options.submit; var data =3D elements.inject({ }, function(result, element) { if (!element.disabled && element.name) { key =3D element.name; value =3D $(element).getValue(); if (value !=3D null && element.type !=3D 'file' && (element.type != =3D 'submit' || (!submitted && submit !=3D=3D false && (!submit || key =3D=3D submit) && (subm= itted =3D true)))) { if (key in result) { // a key is already present; construct an array of values if (!Object.isArray(result[key])) result[key] =3D [result[key]]; result[key].push(value); } else result[key] =3D value; } } return result; }); return options.hash ? data : Object.toQueryString(data); } }; Form.Methods =3D { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { return $A($(form).getElementsByTagName('*')).inject([], function(elements, child) { if (Form.Element.Serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; } ); }, getInputs: function(form, typeName, name) { form =3D $(form); var inputs =3D form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i <= length; i++) { var input =3D inputs[i]; if ((typeName && input.type !=3D typeName) || (name && input.name != =3D name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form =3D $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form =3D $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements =3D $(form).getElements().findAll(function(element) { return 'hidden' !=3D element.type && !element.disabled; }); var firstByIndex =3D elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return ['input', 'select', 'textarea'].include(element.tagName.toLowe= rCase()); }); }, focusFirstElement: function(form) { form =3D $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form =3D $(form), options =3D Object.clone(options || { }); var params =3D options.parameters, action =3D form.readAttribute('actio= n') || ''; if (action.blank()) action =3D window.location.href; options.parameters =3D form.serialize(true); if (params) { if (Object.isString(params)) params =3D params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method =3D form.method; return new Ajax.Request(action, options); } }; /*-------------------------------------------------------------------------= -*/ Form.Element =3D { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods =3D { serialize: function(element) { element =3D $(element); if (!element.disabled && element.name) { var value =3D element.getValue(); if (value !=3D undefined) { var pair =3D { }; pair[element.name] =3D value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element =3D $(element); var method =3D element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element =3D $(element); var method =3D element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value =3D ''; return element; }, present: function(element) { return $(element).value !=3D ''; }, activate: function(element) { element =3D $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() !=3D 'input' || !['button', 'reset', 'submit'].include(element.type))) element.select(); } catch (e) { } return element; }, disable: function(element) { element =3D $(element); element.disabled =3D true; return element; }, enable: function(element) { element =3D $(element); element.disabled =3D false; return element; } }; /*-------------------------------------------------------------------------= -*/ var Field =3D Form.Element; var $F =3D Form.Element.Methods.getValue; /*-------------------------------------------------------------------------= -*/ Form.Element.Serializers =3D { input: function(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element, value); default: return Form.Element.Serializers.textarea(element, value); } }, inputSelector: function(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value= : null; else element.checked =3D !!value; }, textarea: function(element, value) { if (Object.isUndefined(value)) return element.value; else element.value =3D value; }, select: function(element, value) { if (Object.isUndefined(value)) return this[element.type =3D=3D 'select-one' ? 'selectOne' : 'selectMany'](element); else { var opt, currentValue, single =3D !Object.isArray(value); for (var i =3D 0, length =3D element.length; i < length; i++) { opt =3D element.options[i]; currentValue =3D this.optionValue(opt); if (single) { if (currentValue =3D=3D value) { opt.selected =3D true; return; } } else opt.selected =3D value.include(currentValue); } } }, selectOne: function(element) { var index =3D element.selectedIndex; return index >=3D 0 ? this.optionValue(element.options[index]) : null; }, selectMany: function(element) { var values, length =3D element.length; if (!length) return null; for (var i =3D 0, values =3D []; i < length; i++) { var opt =3D element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { // extend element because hasAttribute may not be native return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; } }; /*-------------------------------------------------------------------------= -*/ Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element =3D $(element); this.lastValue =3D this.getValue(); }, execute: function() { var value =3D this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue !=3D value : String(this.lastValue) !=3D String(valu= e)) { this.callback(this.element, value); this.lastValue =3D value; } } }); Form.Element.Observer =3D Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer =3D Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*-------------------------------------------------------------------------= -*/ Abstract.EventObserver =3D Class.create({ initialize: function(element, callback) { this.element =3D $(element); this.callback =3D callback; this.lastValue =3D this.getValue(); if (this.element.tagName.toLowerCase() =3D=3D 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value =3D this.getValue(); if (this.lastValue !=3D value) { this.callback(this.element, value); this.lastValue =3D value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver =3D Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) var Event =3D { }; Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: { }, relatedTarget: function(event) { var element; switch(event.type) { case 'mouseover': element =3D event.fromElement; break; case 'mouseout': element =3D event.toElement; break; default: return null; } return Element.extend(element); } }); Event.Methods =3D (function() { var isButton; if (Prototype.Browser.IE) { var buttonMap =3D { 0: 1, 1: 4, 2: 2 }; isButton =3D function(event, code) { return event.button =3D=3D buttonMap[code]; }; } else if (Prototype.Browser.WebKit) { isButton =3D function(event, code) { switch (code) { case 0: return event.which =3D=3D 1 && !event.metaKey; case 1: return event.which =3D=3D 1 && event.metaKey; default: return false; } }; } else { isButton =3D function(event, code) { return event.which ? (event.which =3D=3D=3D code + 1) : (event.button= =3D=3D=3D code); }; } return { isLeftClick: function(event) { return isButton(event, 0) }, isMiddleClick: function(event) { return isButton(event, 1) }, isRightClick: function(event) { return isButton(event, 2) }, element: function(event) { event =3D Event.extend(event); var node =3D event.target, type =3D event.type, currentTarget =3D event.currentTarget; if (currentTarget && currentTarget.tagName) { // Firefox screws up the "click" event when moving between radio bu= ttons // via arrow keys. It also screws up the "load" and "error" events= on images, // reporting the document as the target instead of the original ima= ge. if (type =3D=3D=3D 'load' || type =3D=3D=3D 'error' || (type =3D=3D=3D 'click' && currentTarget.tagName.toLowerCase() = =3D=3D=3D 'input' && currentTarget.type =3D=3D=3D 'radio')) node =3D currentTarget; } if (node.nodeType =3D=3D Node.TEXT_NODE) node =3D node.parentNode; return Element.extend(node); }, findElement: function(event, expression) { var element =3D Event.element(event); if (!expression) return element; var elements =3D [element].concat(element.ancestors()); return Selector.findElement(elements, expression, 0); }, pointer: function(event) { var docElement =3D document.documentElement, body =3D document.body || { scrollLeft: 0, scrollTop: 0 }; return { x: event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)), y: event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)) }; }, pointerX: function(event) { return Event.pointer(event).x }, pointerY: function(event) { return Event.pointer(event).y }, stop: function(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped =3D true; } }; })(); Event.extend =3D (function() { var methods =3D Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] =3D Event.Methods[name].methodize(); return m; }); if (Prototype.Browser.IE) { Object.extend(methods, { stopPropagation: function() { this.cancelBubble =3D true }, preventDefault: function() { this.returnValue =3D false }, inspect: function() { return "[object Event]" } }); return function(event) { if (!event) return false; if (event._extendedByPrototype) return event; event._extendedByPrototype =3D Prototype.emptyFunction; var pointer =3D Event.pointer(event); Object.extend(event, { target: event.srcElement, relatedTarget: Event.relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); return Object.extend(event, methods); }; } else { Event.prototype =3D Event.prototype || document.createEvent("HTMLEvents= ")['__proto__']; Object.extend(Event.prototype, methods); return Prototype.K; } })(); Object.extend(Event, (function() { var cache =3D Event.cache; function getEventID(element) { if (element._prototypeEventID) return element._prototypeEventID[0]; arguments.callee.id =3D arguments.callee.id || 1; return element._prototypeEventID =3D [++arguments.callee.id]; } function getDOMEventName(eventName) { if (eventName && eventName.include(':')) return "dataavailable"; return eventName; } function getCacheForID(id) { return cache[id] =3D cache[id] || { }; } function getWrappersForEventName(id, eventName) { var c =3D getCacheForID(id); return c[eventName] =3D c[eventName] || []; } function createWrapper(element, eventName, handler) { var id =3D getEventID(element); var c =3D getWrappersForEventName(id, eventName); if (c.pluck("handler").include(handler)) return false; var wrapper =3D function(event) { if (!Event || !Event.extend || (event.eventName && event.eventName !=3D eventName)) return false; Event.extend(event); handler.call(element, event); }; wrapper.handler =3D handler; c.push(wrapper); return wrapper; } function findWrapper(id, eventName, handler) { var c =3D getWrappersForEventName(id, eventName); return c.find(function(wrapper) { return wrapper.handler =3D=3D handler= }); } function destroyWrapper(id, eventName, handler) { var c =3D getCacheForID(id); if (!c[eventName]) return false; c[eventName] =3D c[eventName].without(findWrapper(id, eventName, handle= r)); } function destroyCache() { for (var id in cache) for (var eventName in cache[id]) cache[id][eventName] =3D null; } // Internet Explorer needs to remove event handlers on page unload // in order to avoid memory leaks. if (window.attachEvent) { window.attachEvent("onunload", destroyCache); } // Safari has a dummy event handler on page unload so that it won't // use its bfcache. Safari <=3D 3.1 has an issue with restoring the "docu= ment" // object when page is returned to via the back button using its bfcache. if (Prototype.Browser.WebKit) { window.addEventListener('unload', Prototype.emptyFunction, false); } return { observe: function(element, eventName, handler) { element =3D $(element); var name =3D getDOMEventName(eventName); var wrapper =3D createWrapper(element, eventName, handler); if (!wrapper) return element; if (element.addEventListener) { element.addEventListener(name, wrapper, false); } else { element.attachEvent("on" + name, wrapper); } return element; }, stopObserving: function(element, eventName, handler) { element =3D $(element); var id =3D getEventID(element), name =3D getDOMEventName(eventName); if (!handler && eventName) { getWrappersForEventName(id, eventName).each(function(wrapper) { element.stopObserving(eventName, wrapper.handler); }); return element; } else if (!eventName) { Object.keys(getCacheForID(id)).each(function(eventName) { element.stopObserving(eventName); }); return element; } var wrapper =3D findWrapper(id, eventName, handler); if (!wrapper) return element; if (element.removeEventListener) { element.removeEventListener(name, wrapper, false); } else { element.detachEvent("on" + name, wrapper); } destroyWrapper(id, eventName, handler); return element; }, fire: function(element, eventName, memo) { element =3D $(element); if (element =3D=3D document && document.createEvent && !element.dispa= tchEvent) element =3D document.documentElement; var event; if (document.createEvent) { event =3D document.createEvent("HTMLEvents"); event.initEvent("dataavailable", true, true); } else { event =3D document.createEventObject(); event.eventType =3D "ondataavailable"; } event.eventName =3D eventName; event.memo =3D memo || { }; if (document.createEvent) { element.dispatchEvent(event); } else { element.fireEvent(event.eventType, event); } return Event.extend(event); } }; })()); Object.extend(Event, Event.Methods); Element.addMethods({ fire: Event.fire, observe: Event.observe, stopObserving: Event.stopObserving }); Object.extend(document, { fire: Element.Methods.fire.methodize(), observe: Element.Methods.observe.methodize(), stopObserving: Element.Methods.stopObserving.methodize(), loaded: false }); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards and John Resig. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearInterval(timer); document.fire("dom:loaded"); document.loaded =3D true; } if (document.addEventListener) { if (Prototype.Browser.WebKit) { timer =3D window.setInterval(function() { if (/loaded|complete/.test(document.readyState)) fireContentLoadedEvent(); }, 0); Event.observe(window, "load", fireContentLoadedEvent); } else { document.addEventListener("DOMContentLoaded", fireContentLoadedEvent, false); } } else { document.write(" =20 =20 =20 =20 =20 =20 =20 =20 =20
=09 =20
Zoek in Van de afgelopen
Zoek in Het Parool =20 Help & Zoektips
In de krant   &= nbsp;
 Artikel nummer 6 -&nb= sp;7 - 8 - 9 -&= nbsp;10=
 <&n= bsp;Terug naar de resultatenlijst
 =
=20 =20 =20
=20 =20 =20

Amsterdam, vrijdag 29 mei 2009

Centrum Tanja's mogen............

Centrum

Tanja's mogen

gratis naar Artis

Nijlpaard Tanja viert op 2= juni haar 49ste verjaardag in Artis. De Amsterdamse dierentuin nodigt om= dit te vieren alle Tanja's in Nederland uit om langs te komen. Iedere= Tanja mag gratis naar binnen. Tanja is het oudste nijlpaard van Nederland.= De eveneens jarige Tanja Bleiksch bakt op de speciale dag een groente-verj= aardagstaart als cadeau.

Stegen niet in juni open=

De steegjes bij de Zeedijk gaan toch niet half ju= ni overdag open, zoals eerder gemeld. Het stadsdeel wil eerst wat praktisch= e zaken bespreken met omwonenden, waaronder de datum van openstelling.

=

Geuzenveld

Niet sportende bew= oners op cursus

Mensen die regelmatig naar de huis= arts gaan met klachten die geen medische oorzaak hebben, kunnen op cursus.= Ook als ze klachten hebben die komen doordat ze ongezond leven, kunnen ze= bij de stichting Beweeg je Beter terecht. Het idee is dat de deelnemers mi= nder vaak naar de huisarts gaan en zich beter voelen.

Noord

Jazzartiesten spelen

op NSDM-werf

De jazzliefhebbers kunnen vanaf= 5 juni weer drie dagen lang genieten van artiesten als Sabrina Starke, Ole= ta Adams, Kyteman en Wouter Hamel op de NDSM-werf. Verscheidene jazzartiest= en treden op tijdens het festival IJazz, op zes podia. Een dagkaart voor IJ= azz 2009 kost Euro 29,50 en een passe-partout voor alle drie de dagen kost= Euro 3,50.

Brommerongeluk

Drie mannen zijn gistermiddag gewond geraakt na een aanrijding tussen twe= e brommers op de Buiksloterweg. Twee mannen van 18 jaar reden op een crossb= rommer en namen de bocht iets te ruim, waardoor ze frontaal op de andere br= ommer knalde. Alle drie moesten naar het ziekenhuis worden gebracht.

Oud-West

Drinkwaterfontein

=

op WG-terrein

Op het Wilhelminagasthuisterrein wordt 10 juni een nieuw drink= waterfonteintje onthuld. Het fonteintje is geleased van Waternet, dat het= ook onderhoudt. Volgens het stadsdeel is zo'n fontein milieuvriendeli= jker dan drank uit een blikje, en 'goed voor elk'. Het fonteintje= is ontworpen door kunstenares Siomara van Eer, die in Oud-West woont en we= rkt.

Osdorp

Maar =E9=E9n= coffeeshop voor heel stadsdeel

In Osdorp mag maar= =E9=E9n coffeeshop zijn. Dat heeft een meerderheid in de deelraad besloten= . Volgens de huidige regels is in het stadsdeel ruimte voor twee coffeeshop= s. Een motie van die strekking die de fractie van Osdorp Onafhankelijk Zelf= bestuur '81 had ingediend, is onlangs aangenomen.

Zeeburg

Zondag Dag van het Park in Flevopark=

Zondagmiddag wordt de landelijke Dag van het Park= ook gevierd in het Flevopark. Dat gebeurt met een kindermusical, een Ierse= band, poppentheater, dansworkouts en diverse wandelingen door het park met= uitleg over de historie en de planten en dieren die er leven. Voor de spor= tievelingen staat er een klimrots en is er handboogschieten. Het is de vijf= de keer dat de ANWB de Dag van het Park samen met verschillende gemeenten= in Nederland organiseert, onder meer dus in Amsterdam.

Slotervaart

Gratis fitnesstoestellen Sloterp= ark in gebruik

De nieuwe - gratis te gebruiken -= fitnesstoestellen in het Sloterpark zijn gisteren officieel in gebruik gen= omen door stadsdeelbestuurder Paulus de Wilt en de sporters van de 55+condi= tietrainingsgroep van het Sloterpark. Het parcours is toegankelijk voor mee= rdere sporters tegelijk. Pictogrammen geven het gebruik van het fitnesstoes= tel aan. De gratis zijn bedoeld om jong en oud zoveel mogelijk te laten bew= egen in de strijd tegen overgewicht. De toestellen staan ter hoogte van het= Kr=F6ller M=FCllerpark.

Zuideramstel

Besluitvorming Zuidas Noord gaat moeizaam

Donderdag buigen deelraadsleden zich in een commissievergadering over= het Plan Strawinsky, voor de ontwikkeling van het gebied Zuidas Noord. Doo= r de vele kritiek tijdens de inspraak is de besluitvorming vertraagd. Er be= staan veel bezwaren van particulieren, buurtverenigingen en bedrijven. Ze= zeggen dat de verkeersveiligheid erop achteruit gaat. Bovendien vermoeden=

ze dat de gemeente grote finan-

ci=EBle risico's gaat nemen met het project.

Zuidoost

Arena dient zaterdag als drive-in= bioscoop

De Amsterdam Arena is zaterdag een drive-= inbioscoop. Driehonderd bestuurders en passagiers mogen dan, ter ere Veroni= ca Meimaand Filmmaand, naar de film Terminator Salvation (zonder Arnold Sch= warzenegger) kijken. Het spektakel wordt deels live uitgezonden

Almere

Havenmeesters vervangen door= pinpas

In de haven van Almere kunnen passanten bi= nnenkort alleen nog maar pinnen. Ze voeren zelf de gegevens in van hun boot= , waarop een betaalautomaat het havengeld berekent en een ticket uitgeeft.= Havenmeesters innen dus niet langer zelf het havengeld. Voor doorgang van= de sluis betaalt de plezierschipper 2, 25 euro.

= Amstelveen

Extra uren Burgerzaken vanwege zomerdr= ukte

Vanwege de zomerdrukte is de afdeling Burgerz= aken extra open. Op dinsdagavond 9 en 16 juni kunt u dan terecht voor het= aanvragen van een reisdocument, rijbewijs, uittreksel of verklaring omtren= t gedrag,van 17.00 - 19.30 uur.

Copyright: Het Parool

=20





=20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =09 =09
=09 =09 =20
=20 =20 =20 =20 =20 =20 =20 =20 =20 ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/javascript Content-Transfer-Encoding: quoted-printable Content-Location: http://www.parool.nl/static/nmc/nmc/varia/archief_search.js // JavaScript Document function framedata() { var parentUrlParms =3D top.location.search.substring(1); if(parentUrlParms !=3D null && parentUrlParms.length > 0) { var iFrameUrl =3D window.location.toString(); if(iFrameUrl.indexOf(parentUrlParms) =3D=3D -1) { // als de iframe-url zelf al parameters heeft: de parameters toev= oegen met een & // zoniet met een ? var connector =3D '?'; if(iFrameUrl.indexOf('?') !=3D -1) { connector =3D '&'; } // parameters van parent-Url toevoegen aan iframe iFrameUrl =3DiFrameUrl + connector + parentUrlParms; // iFrame herladen document.location =3D iFrameUrl; } else { alert('params already attached'); } } } =20 =20 =20 ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/css Content-Transfer-Encoding: quoted-printable Content-Location: http://archief.parool.nl/css/ext_parool_archief.css /* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Parool ARCHIEF integration CSS :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ body { color: #333; text-align: left; background: #fff; font-family: Lucida= Sans Unicode, Lucida Grande, sans-serif; font-size: 12px; line-height: 16p= x; font-style: normal; font-variant: normal; font-weight: normal; } body, p, img, div {margin:0;padding:0} img {border:0;} =09 hr.ext_r1 {clear:left;border:none;width:100%;text-align:center;color:#cc= c;background-color:#ccc;height:1px;text-align:center;margin:12px 0 10px 0;m= argin:3px 0 2px 0} div a {color:#525252;text-decoration:none} div a:hover {color:#666;text-decoration:none} h1.ext_k10 {font-size:22px;line-height:22px;font-weight:bold} h1.ext_k20 {font-size:20px;line-height:20px;font-weight:bold} h1.ext_k30 {font-size:17px;line-height:17px;font-weight:bold} h1.ext_k10,h1.ext_k20,h1.ext_k30{color:#525252;margin:6px 0 4px 0;padding:0= 5px 0 0} h1.ext_k10 a,h1.ext_k20 a,h1.ext_k30 a{color:#525252;} h1.ext_k10 a:hover,h1.ext_k20 a:hover,h1.ext_k30 a:hover{color:#06c;} /*kolom 1 archief specifiek*/ .ext_data_archief { display: block; color: #06C; font-size: 11px; } .ext_auteur_archief {display: block; margin:6px 0 12px 0; font-size: 11px;} .ext_result_number {font-size:17px;line-height:17px;font-weight:bold; color= :#06C;width: 25px;float:left; margin:6px 0 4px 0;} .ext_result_intro {width:443px;float:left;} .ext_gen_copyright_archief {display: block; margin:12px 0 6px 0; font-size:= 11px; width: 160px;float:left;} .ext_archief_print {display: block; margin:12px 0 6px 0; font-size: 11px;= width: 160px;float:left;} .ext_gen_footnote_archief {color:#666;padding:0px;font-size:13px;} .ext_gen_footnote_archief a{color:#06c;text-decoration:none} .ext_gen_footnote_archief a:hover{text-decoration:none} /*kolom 2 adv sug meer minder */ .ext_rectangle_archief {margin: 0 0 8px 0;} .ext_gen_box_archief_head { background-image: url(../images/general/ext_gen= _img_head.gif); background-position: top; font-weight: bold; height: 18px;= text-align: left; margin: 0; padding: 4px 0 2px 10px; background-color: #D= DDEDF; background-repeat: no-repeat; } .ext_gen_box_archief_head h3 { color: #525252; } .ext_gen_box_archief {border:1px solid #dddedf;margin:0 0 8px 0;} .ext_gen_box_archief h3 {font-size:14px;font-weight:bold;color:#333;paddi= ng:6px 0 6px 15px;margin:0;border-top:1px solid #dddedf} .ext_gen_box_archief h3 a:hover {font-size:14px;font-weight:bold;color:#06c= ;padding:6px 0 6px 0;margin:0;} .ext_gen_box_archief_comment { font-size:11px;font-weight:normal;color:#06c= ;padding:6px 0 6px 10px;margin:0; } /*fixes float clear */ .clearfix:after { content: "."; display: block;height: 0;clear: both;visibi= lity: hidden;} .clearfix {display: inline-block;} /* Hides from IE-mac \*/ * html .clearfix {height: 1%;} .clearfix {display: block;} /* End hide from IE-mac */ /*fixes border padding problem */ .ext_gen_borderfix {width:100%} =09 /*stucture integration*/ #ext_str_col1, #ext_str_col2, #ext_str_col12 {float:left;text-align:left;ov= erflow:hidden;word-wrap:break-word;margin-top:15px;}=09 #ext_str_col1 {width:468px;padding-left:0px;padding-bottom:15px;} #ext_str_col2 {width:336px;margin-left:11px;padding:0;} #ext_str_col12 {width:814px;padding-left:0;padding-bottom:15px;} /*result container*/ .ext_result_cntr1 { margin: 0 0 16px 0; width: 468px; float: left; } /*article containers*/ .ext_art_cntr1,.ext_art_box2{background:#fff;color:#525252; width:468px;} .ext_art_cntr1 p a {text-decoration:none;display:block;color:#3d3d3d;line= -height:18px} .ext_art_cntr1 p a:hover{text-decoration:none;display:block;color:#333} /*list types */ .ext_list_cntr1a {font-size:12px;color:#333;padding:0;margin:0} ul.ext_list_cntr1a {list-style-type:none;margin:0;padding:0} .ext_list_cntr1a li {margin:5px 0;} .ext_list_cntr1a li a {color:#06c;text-decoration:none;} .ext_list_cntr1a li a:hover {color:#06c;text-decoration:underline;} /*general list types degra darl light list_cntr1d:white; */ ul.ext_list_cntr1d {list-style-type:none;margin:0;padding:0} .ext_list_cntr1d li { font-size:11px; font-weight:normal; margin:0;padding:0px 10px 2px 25px; background-image: url(../images/general/ext_matrix_arrow_12x12.gif);backgr= ound-repeat: no-repeat;background-position: 5px 0; } .ext_list_cntr1d li a { color:#525252;text-decoration:none}=20 .ext_list_cntr1d li a:hover { color:#06c;text-decoration:none}=20 /*form */ /* .ext_form_box1 dl {margin:20px} .ext_form_box1 dt {margin:10px 0} .ext_form_box1 dd {margin:-28px 0 0 170px} .ext_gen_radiocheck {border:none;background:transparent} .ext_gen_button {font:bold 11px "Arial", sans-serif;color:#fff;background:= #888;text-align:center;text-transform:uppercase;margin:0;padding:0 6px} .ext_gen_error_txt {color:#F90;font-weight:bold} input {border:1px solid #ccc;margin-top:1px;background:#fff;color:#333;= font-size:10px} textarea {width:250px;border:1px solid #000;margin-right:3px;margin-top:= 1px;background:#fff} select {font-size:11px;text-transform:uppercase;margin:0 0 1px 0;paddin= g:0} */ ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://archief.parool.nl/nix.gif R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/javascript Content-Transfer-Encoding: quoted-printable Content-Location: http://www.google-analytics.com/ga.js (function(){var aa=3D"_gat",ba=3D"_gaq",r=3Dtrue,v=3Dfalse,w=3Dundefined,ca= =3D"4.6.5",x=3D"length",y=3D"cookie",A=3D"location",B=3D"&",C=3D"=3D",D=3D"= __utma=3D",E=3D"__utmb=3D",G=3D"__utmc=3D",da=3D"__utmk=3D",H=3D"__utmv=3D"= ,J=3D"__utmz=3D",K=3D"__utmx=3D",L=3D"GASO=3D";var N=3Dfunction(i){return= w=3D=3Di||"-"=3D=3Di||""=3D=3Di},ea=3Dfunction(i){return i[x]>0&&" \n\r\t"= .indexOf(i)>-1},P=3Dfunction(i,l,g){var t=3D"-",k;if(!N(i)&&!N(l)&&!N(g)){k= =3Di.indexOf(l);if(k>-1){g=3Di.indexOf(g,k);if(g<0)g=3Di[x];t=3DO(i,k+l.ind= exOf(C)+1,g)}}return t},Q=3Dfunction(i){var l=3Dv,g=3D0,t,k;if(!N(i)){l=3Dr= ;for(t=3D0;t-1)}}return l},S=3Dfunction(= i,l){var g=3DencodeURIComponent;return g instanceof Function?l?encodeURI(i)= :g(i):escape(i)}, T=3Dfunction(i,l){var g=3DdecodeURIComponent,t;i=3Di.split("+").join(" ");i= f(g instanceof Function)try{t=3Dl?decodeURI(i):g(i)}catch(k){t=3Dunescape(i= )}else t=3Dunescape(i);return t},U=3Dfunction(i,l){return i.indexOf(l)>-1},= V=3Dfunction(i,l){i[i[x]]=3Dl},W=3Dfunction(i){return i.toLowerCase()},X=3D= function(i,l){return i.split(l)},fa=3Dfunction(i,l){return i.indexOf(l)},O= =3Dfunction(i,l,g){g=3Dw=3D=3Dg?i[x]:g;return i.substring(l,g)},ga=3Dfuncti= on(i,l){return i.join(l)},ia=3Dfunction(i){var l=3D1,g=3D0,t;if(!N(i)){l=3D= 0;for(t=3Di[x]-1;t>=3D0;t--){g=3D i.charCodeAt(t);l=3D(l<<6&268435455)+g+(g<<14);g=3Dl&266338304;l=3Dg!=3D0?l= ^g>>21:l}}return l},ja=3Dfunction(){var i=3Dwindow,l=3Dw;if(i&&i.gaGlobal&&= i.gaGlobal.hid)l=3Di.gaGlobal.hid;else{l=3DY();i.gaGlobal=3Di.gaGlobal?i.ga= Global:{};i.gaGlobal.hid=3Dl}return l},Y=3Dfunction(){return Math.round(Mat= h.random()*2147483647)},Z=3D{Ha:function(i,l){this.bb=3Di;this.nb=3Dl},ib:v= ,_gasoDomain:w,_gasoCPath:w};Z.Gb=3Dfunction(){function i(k){return new t(k= [0],k[1])}function l(k){var p=3D[];k=3Dk.split(",");var f;for(f=3D0;f0)n=3Dn.split("^")[0];j=3Dn.split(":");n=3Dj[1];s=3DparseInt(j[0],10);= if(!c&&s0?k(j):"";if(f.o){a=3Dp.kc(f.a[y],d,f.o,a,j);d=3D"2"+d;c=3Dj>= 0?k(f.v):""}t(d+a,c)};p.kc=3Dfunction(d,a,j,c,n){var s=3D"";n=3Dn||f.v;c=3D= g([c,p.r+n*1],j);s=3DP(d,"2"+a,";");if(!N(s)){d=3Dg(l(d,a,j,r),j);s=3Dga(s.= split(d),"");return s=3Dc+s}return c};p.fb=3Dfunction(){return N(f.b)?"":"d= omain=3D"+f.b+";"}};Z.$=3Dfunction(i){function l(b){b=3Db instanceof Array?= b.join("."):"";return N(b)?"-":b}function g(b,e){var o=3D[];if(!N(b)){o=3Db= .split(".");if(e)for(b=3D0;b=3D1){f[2]=3DMath.min(Math.floor(f[2]*1+d),g.Pb);f[3]=3Dh}return f};l.= H=3Dfunction(f,h,d,a,j,c){var n,s=3Dg.I,b=3Dg.a[A];t.ua(d);n=3DX(t.C(),".")= ;if(n[1]<500||a){if(j)n=3Dp(n);if(a||!j||n[2]>=3D1){if(!a&&j)n[2]=3Dn[2]*1-= 1;n[1]=3Dn[1]*1+1;f=3D"?utmwv=3D"+ca+"&utmn=3D"+Y()+(N(b.hostname)?"":"&utm= hn=3D"+S(b.hostname))+(g.U=3D=3D100?"":"&utmsp=3D"+S(g.U))+f;if(0=3D=3Ds||2= =3D=3Ds){a=3D2=3D=3Ds?k:c||k;l.$a(g.oa+f,a)}if(1=3D=3Ds|| 2=3D=3Ds){f=3D("https:"=3D=3Db.protocol?"https://ssl.google-analytics.com/_= _utm.gif":"http://www.google-analytics.com/__utm.gif")+f+"&utmac=3D"+h+"&ut= mcc=3D"+l.ac(d);if(ka)f+=3D"&gaq=3D1";l.$a(f,c)}}}t.ya(n.join("."));t.Ea()}= ;l.$a=3Dfunction(f,h){var d=3Dnew Image(1,1);d.src=3Df;d.onload=3Dfunction(= ){d.onload=3Dnull;(h||k)()}};l.ac=3Dfunction(f){var h=3D[],d=3D[D,J,H,K],a,= j=3Dt.k(),c;for(a=3D0;a0)for(f=3D0;f0;)f+=3Dh--^d++= ;return ia(f)}};Z.m=3Dfunction(i,l,g,t){function k(d){var a=3D"";d=3DW(d.sp= lit("://")[1]);if(U(d,"/")){d=3Dd.split("/")[1];if(U(d,"?"))a=3Dd.split("?"= )[0]}return a}function p(d){var a=3D"";a=3DW(d.split("://")[1]);if(U(a,"/")= )a=3Da.split("/")[0];return a}var f=3Dt,h=3Dthis;h.c=3Di;h.rb=3Dl;h.r=3Dg;h= .ic=3Dfunction(d){var a=3Dh.gb();return new Z.m.w(P(d,f.Ka+C,B),P(d,f.Na+C,= B),P(d,f.Pa+C,B),h.Q(d,f.Ia,"(not set)"),h.Q(d,f.La,"(not set)"),h.Q(d,f.Oa= ,a&&!N(a.K)?T(a.K):w),h.Q(d,f.Ja,w))};h.jb=3Dfunction(d){var a=3Dp(d),j=3Dk= (d);if(U(a,"google")){d=3Dd.split("?").join(B); if(U(d,B+f.oc+C))if(j=3D=3Df.nc)return r}return v};h.gb=3Dfunction(){var d,= a=3Dh.rb,j,c,n=3Df.T;if(!(N(a)||"0"=3D=3Da||!U(a,"://")||h.jb(a))){d=3Dp(a)= ;for(j=3D0;j9?O(a,e+1= )*1:0;s++;a=3D0=3D=3Da?1:a;d.wb([o,h.r,a,s,n.Da()].join("."));d.Ga();return= B+"utmcn=3D1"}else return B+"utmcr=3D1"}}; Z.m.w=3Dfunction(i,l,g,t,k,p,f){var h=3Dthis;h.q=3Di;h.X=3Dl;h.ea=3Dg;h.D= =3Dt;h.S=3Dk;h.K=3Dp;h.Ya=3Df;h.Da=3Dfunction(){var d=3D[],a=3D[["cid",h.q]= ,["csr",h.X],["gclid",h.ea],["ccn",h.D],["cmd",h.S],["ctr",h.K],["cct",h.Ya= ]],j,c;if(h.mb())for(j=3D0;j0&&j<=3Dd.ob){c=3DS(c);n=3DS(n);if(c[x]+n[x= ]<=3D64){p.p[j]=3D[c,n,s];p.Z();b=3Dr}}return b};p.mc=3Dfunction(j){if((j= =3Dp.p[j])&&1=3D=3D=3Dj[2])return j[1]};p.Ub=3Dfunction(j){var c=3Dp.p;if(c= [j]){delete c[j];p.Z()}};p.Qb=3Dfunction(){a._clearKey(8);a._clearKey(9);a.= _clearKey(11);var j=3Dp.p,c,n;for(n in j)if(c=3Dj[n]){a._setKey(8,n,c[0]);a= ._setKey(9,n,c[1]);(c=3Dc[2])&&3!=3Dc&&a._setKey(11,n,""+c)}}};Z.N=3Dfuncti= on(){function i(m,q,u,z){if(w=3D=3Df[m])f[m]=3D{};if(w=3D=3Df[m][q])f[m][q]= =3D[];f[m][q][u]=3Dz}function l(m,q){if(w!=3Df[m]&&w!=3Df[m][q]){f[m][q]=3D= w;q=3Dr;var u;for(u=3D0;u-1}function k(b,e,o){if(N(b)||N(e)||N(o))return"-";b=3DP(= b,D+a.c+".",e);if(!N(b)){b=3Db.split(".");b[5]=3Db[5]?b[5]*1+1:1;b[3]=3Db[4= ];b[4]=3Do;b=3Db.join(".")}return b}function p(){return"file:"!=3Dc.a[A].pr= otocol&&t()}function f(b){if(!b||""=3D=3Db)return"";for(;ea(b.charAt(0));)b= =3D O(b,1);for(;ea(b.charAt(b[x]-1));)b=3DO(b,0,b[x]-1);return b}function h(b,e= ,o,m){if(!N(b())){e(m?T(b()):b());U(b(),";")||o()}}function d(b){var e,o=3D= ""!=3Db&&c.a[A].host!=3Db;if(o)for(e=3D0;e=3D0&&e<=3D8?"0":"["=3D=3Db.charAt(0)&&"]"=3D= =3Db.charAt(b[x]-1)?"-":b}return b};a.wa=3Dfunction(b){var e=3D"",o=3Dc.a;e= +=3Dc.fa?a.A.Ic():"";e+=3Dc.da?a.Ua:"";e+=3Dc.ga&&!N(o.title)?"&utmdt=3D"+S= (o.title):"";e+=3D"&utmhid=3D"+ja()+"&utmr=3D"+S(a.ia)+"&utmp=3D"+S(a.Bc(b)= );return e};a.Bc=3Dfunction(b){var e=3Dc.a[A]; return b=3Dw!=3Db&&""!=3Db?S(b,r):S(e.pathname+e.search,r)};a.Lc=3Dfunction= (b){if(a.J()){var e=3D"";if(a.g!=3Dw&&a.g.G()[x]>0)e+=3D"&utme=3D"+S(a.g.G(= ));e+=3Da.wa(b);j.H(e,a.s,a.c)}};a.Tb=3Dfunction(){var b=3Dnew Z.$(c);retur= n b.ua(a.c)?b.Hc():w};a._getLinkerUrl=3Dfunction(b,e){var o=3Db.split("#"),= m=3Db,q=3Da.Tb();if(q)if(e&&1>=3Do[x])m+=3D"#"+q;else if(!e||1>=3Do[x])if(1= >=3Do[x])m+=3D(U(b,"?")?B:"?")+q;else m=3Do[0]+(U(b,"?")?B:"?")+q+"#"+o[1];= return m};a.Fc=3Dfunction(){var b;if(a.wc()){a.i.Dc(a.B);a.i.Oc();Z._gasoDo= main=3Dc.b;Z._gasoCPath=3D c.h;b=3Dc.a.createElement("script");b.type=3D"text/javascript";b.id=3D"_gas= ojs";b.src=3D"https://www.google.com/analytics/reporting/overlay_js?gaso=3D= "+a.B+B+Y();c.a.getElementsByTagName("head")[0].appendChild(b)}};a.pc=3Dfun= ction(){var b=3Da.r,e=3Da.i,o=3De.k(),m=3Da.c+"",q=3Dc.e,u=3Dq?q.gaGlobal:w= ,z,M=3DU(o,D+m+"."),la=3DU(o,E+m),ma=3DU(o,G+m),F,I=3D[],R=3D"",ha=3Dv;o=3D= N(o)?"":o;if(c.z){z=3Dc.a[A]&&c.a[A].hash?c.a[A].href.substring(c.a[A].href= .indexOf("#")):"";if(c.ba&&!N(z))R=3Dz+B;R+=3Dc.a[A].search;if(!N(R)&&U(R,D= )){e.zc(R);e.kb()||e.Sb(); F=3De.ja()}h(e.ma,e.vb,e.Eb,true);h(e.la,e.Aa,e.Fa)}if(N(F))if(M)if(!la||!m= a){F=3Dk(o,";",b);a.F=3Dr}else{F=3DP(o,D+m+".",";");I=3DX(P(o,E+m,";"),".")= }else{F=3Dga([m,a.jc(),b,b,b,1],".");ha=3Da.F=3Dr}else if(N(e.C())||N(e.ka(= ))){F=3Dk(R,B,b);a.F=3Dr}else{I=3DX(e.C(),".");m=3DI[0]}F=3DF.split(".");if= (q&&u&&u.dh=3D=3Dm&&!c.o){F[4]=3Du.sid?u.sid:F[4];if(ha){F[3]=3Du.sid?u.sid= :F[4];if(u.vid){b=3Du.vid.split(".");F[1]=3Db[0];F[2]=3Db[1]}}}e.tb(F.join(= "."));I[0]=3Dm;I[1]=3DI[1]?I[1]:0;I[2]=3Dw!=3DI[2]?I[2]:c.Jc;I[3]=3DI[3]?I[= 3]:F[4];e.ya(I.join(".")); e.ub(m);N(e.lc())||e.za(e.P());e.Cb();e.Ea();e.Db()};a.rc=3Dfunction(){j=3D= new Z.Kb(c)};a._initData=3Dfunction(){var b;if(!n){if(!a.A){a.A=3Dnew Z.Fb(= c);a.A.bc()}a.c=3Da.ec();a.i=3Dnew Z.$(c);a.g=3Dnew Z.N;s=3Dnew Z.Ib(c,a.c,= a.i,a.g);a.rc()}if(p()){a.pc();s.tc()}if(!n){if(p()){a.ia=3Da.Yb(a.ab,c.a.d= omain);if(c.da){b=3Dnew Z.m(a.c,a.ia,a.r,c);a.Ua=3Db.cc(a.i,a.F)}}a.cb=3Dne= w Z.N;n=3Dr}Z.ib||a.sc()};a._visitCode=3Dfunction(){a._initData();var b=3DP= (a.i.k(),D+a.c+".",";");b=3Db.split(".");return b[x]<4?"":b[1]};a._cookiePa= thCopy=3Dfunction(b){a._initData(); a.i&&a.i.Nc(a.c,b)};a.sc=3Dfunction(){var b=3Dc.a[A].hash;if(b&&1=3D=3Db.in= dexOf("gaso=3D"))b=3DP(b,"gaso=3D",B);else b=3D(b=3Dc.e.name)&&0<=3Db.index= Of("gaso=3D")?P(b,"gaso=3D",B):P(a.i.k(),L,";");if(b[x]>=3D10){a.B=3Db;a.Fc= ()}Z.ib=3Dr};a.J=3Dfunction(){return a._visitCode()%1E40){t=3DO(k,0,p);k=3DO(k,p+1= )}var f=3D$._getAsyncTracker(t);f[k].apply(f,i[g].slice(1))}}catch(h){l++}r= eturn l}};window[aa]=3DZ;function na(){var i=3Dwindow[ba],l=3Dv;if(i&&typeo= f i.push=3D=3D"function"){l=3Di.constructor=3D=3DArray;if(!l)return}window[= ba]=3D$;l&&$.push.apply($,i)}na();})() ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.parool.nl/parool/images/logos/rss.gif R0lGODlhDgAOAPcAAN1XD/zu5uNzNvSJItxXD99cFui0jO59IvubON5dF+qCIey+lPiSL+KMQ/rQ pNxyKPzu592CRvHLouSjde2bXOetc/ucOd1cF/KHGfnNoOSBGvueOu2QTO2siuONSuadcPuaMuuC KOGfb/fl0tlkI91lIvufPvicPuGib+GYR9+NNfrTqO5+Iuy7jOqTNeate+6LKuR2J9Z+Se+MMtlT DOFwIedxIveMJeOAH/HJoe/MqeBwJvbfxvKNINtaH+qHHel3ItNgIN58P9+AH+SZSvGKIfOEIfCK IOFoIu2EHfqaOd99H99/HvmdOvCFHeiHH+OLNvfcwueFIOOQU95XD+qTSeOJWt1WDfXRs9lZIuqU XvKvavvRpOV4KeOcUfSMIfCZSN5rJdZUDt1hHuSLT+FuMfjIm+CFNvufPO2/lPiSLdp5F/jn1txb FeWldu2DLvSMG+l9KvaWNvvz6vOLLvaQMffDivKjUvjZutuGRuSLQvCELOWkfvHOrOByJvKEIuaI M9lWD/LXv9laIt95F9xgIt9dF+NvMdxNAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAOAA4A AAjNACEIGNPmQgJDCA0VKHAogIASQfh8IBMjzh46dRioOUSAhIxEIBNhASMHwQYQiK6EiTDBjQFB IDM0QWMBEYAdD6boAQSlAptEK0woseknD8goW1ykGJHoxA2bXRos0AHSzhMvicwYQUTlzQwYUojw SHRnSJpELBARCJEEA5wfKhLhWfIiEQdEgQjlSMSlB5M+ic6gSKQFkZg1c0B+wdEikQcRiTogoqFB QiIHAxRUoVBDiJVBiMo4OVJkwJ8DQGwgKZTFR8NDiGLLnt0wIAA7 ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.parool.nl/parool/images/logos/acap.gif R0lGODlhUQAPANUAAAAAAP///wAigF5VX1JMZ87N2CEeU19dgWtpi4SCnrW0xUZEblJQeKmn13d2 lZCPqJybsqmou8HBz9ra4ubm7PPz9ffDAOu7B9+yD9SqFqWMLfHemMihHbyZJbCQLKSIM5l/O413 QoFuSXVmUWldWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAUQAPAAAG/8CFcEgsGo/IpHLJ JG6e0Kh0St1oFo2sdsvter/grEG4sZjP6LR6fW0033DieFE+Y9QcTvpuvuQvZm1CDA6FBwsORIlD h0MIDo2IjoWJB4UMcmRoJIBmHgQjJCJnHh9nHKAEd4KIFQUFDwsVCEMBRAqLCwUTFQlCtkK7rwsQ FAUBEENzdRYeC6YWqBlm02YDBJ0cIxYgpqwOBUQBs7+MAeHBDgnowLq5EMkHFL4Ly2cDn2YhHmoe IyHQtFkQ4Q2LEAcU4CUK8GACpnYKitHSBUFBhHLBIiaDJ+SBBCH2LHTYJoLfCD1pSHDIMMAMByEi AH1LCGHhgoYMgDGowKBisLUJxjDq0kgsGSJ0IUcMUNoSYJqXI0Ys4CfwzDd0GBsCg+BqQoBDBRJN sJluCEdiCkBq4jAgD9sOGAiYumDyQ54PJKJts2rwqLghD2ztTFBIwsWwDCjQahfWbLIHFBrZG8HP 07YMUuWyRdO2aqC+DgKITtaOGFpGPI8FuLhAtC3VtiCInjCxnqY1uHPzdROnN5OQuoOnYeW7+JE5 GpIrX868ufPk9QxIn069uvXr2LNLN869e/EgADs= ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.parool.nl/parool/images/logos/logo_parool2.gif R0lGODlhXgASAMQAANHR097e4MvLzb+/wKCgoZSUlKamp6ysrY2Njrm5usXFxoeHh9jY2ZqamrKy s4GBgeTk5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAA AAAALAAAAABeABIAAAX/ICSOZGmeaKqubOu+cCwKjAoIcl4CTe83h0RAxPDhRIdfz+CojRiGh3Th GJIcC+mD4HR4v04dKnDQGgaNKQDCMI8U2UdBUJYORIBsg8EoyK0QBA8LAmSDawdxW2EpBj4JRT5r KH4PDiJpDwgQCXELV1INIglaNZVWbQ8HIg52I34IQ3UFLgBSCaOajCaZlxCtUoF1DwojwKJsWgkD UgQklQwBWqCWv6Eu0sgQzHc7Yb2sWtJ9UgbG1xDSdoLVI1GqpHIkAlKbxy4KD7gigrt5kxDAQXiH YIC9euceIGM2KFW7cArfaYNAT0qAey2iAJS3rYEXPZN6OWBHiMAqW1Im/x2jk2XBHS1HICLINLHi AwEYWejp4WeVAQKt8hAohEmKAx8Hom3xomWVNYWZYomASU0huhkwc9rYIqCrIABJthVo063oQxH5 fCBA+LSBzW5ayralOa+U1hStiolAsICsAwQASAEKaLTEzxEoH6y5F1VEJV8i3hmIV3NK2xZ+ED8w kOgMP1okBI5YsG+vlFX3El+KZ+6VFBqWE6K+OtApiTbOcqFBpsCWAwBl157Np5cfQmCg3/UNsHYB KnR1YvpxPlAK6Oq5n0RpMERAlpEPBhwokO/vmgDsBumFo2m9IgKKLjkcm2czHz8FrARIg6BQmQWL aaHQX4Vd8QUNXzigQDYDCxwQwH4ETMJAgg50M8AXFlJI4Sg+3BGAAZ5UUQKBzXSh4RcAiaGiDHyo EECKK8Yo44wrhAAAOw== ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://stat.onestat.com/stat.aspx?tagver=2&sid=163110&url=http%3A//www.parool.nl/static/nmc/nmc/frameset/archief.html%3Ftext%3Ddrinkfontein%26ED%3Dola&ti=Het%20Parool%3A%20ARCHIEF§ion=&rf=http%3A//www.parool.nl/parool/article/search.do&tz=-60&ch=16&js=1&ul=nl&sr=1680x1050&cd=32&jo=Yes R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0000_96C00354.75311C24 Content-Type: text/css Content-Transfer-Encoding: quoted-printable Content-Location: http://www.parool.nl/parool/css/parool_foto.css /*PAROOL FOTO CSS*/ /*FOTOBANDEN*/ .wib_cntr1 {padding:0;margin:15px 0 0 0;width:820px;float:left} .wib_cntr1 .gen_bread,#nav_cntr1_wib,.wib_box1 hr.r1 {display:none} .wib_cntr1 .gen_right a {font-weight:bold} .wib_box1,.wib_box2 {background:#d9d9d9 url(../images/general/wib_bg.gif)= repeat-x top;padding:10px;margin:0 0 10px 0;color:#333} .wib_box1 h1 {font-size:20px;margin:0 0 10px 0;padding:0;text-transform:upp= ercase;color:#06c} #photoAlbumType1 h1 {margin:0} .wib_box1 p {margin:10px 0} .wib_box1 p a,#wib_disclaimer span a {text-decoration:underline} .wib_box1 p a:hover,#wib_disclaimer span a:hover {text-decoration:none} .wib_box1 .gen_box3 {margin:0;border:0;padding:10px;background:#fff} .wib_box1 #mailFriend {padding:10px;background:#fff;margin:-10px 0 0 0} /*m= ail een vriend*/ ul.wib_list_large {margin-bottom:20px} .wib_list_large li {float:left;width:258px;height:278px;overflow:hidden;mar= gin:0 10px 0 0;color:#999;background:#fff;border:1px solid #fff} .wib_list_large li div {height:200px;width:258px} .wib_list_large li img {margin:0;border:0;padding:0;float:none} .wib_list_large li .landscape img {height:280px;margin-left:-30px} .wib_list_large li .portrait img {width:260px;margin-top:-25px} .wib_list_large li h2 {height:68px;letter-spacing:-1px;padding:5px 8px;marg= in:0;overflow:hidden;background:#000;line-height:21px;filter:alpha(Opacity= =3D85);-moz-opacity:.85;opacity:.85} .wib_list_large li h2 a,.wib_list_large li h2 a:hover {color:#fff} .wib_box2 h2,.wib_box2 h2 a {font-size:16px;margin:0;padding:0;text-transfo= rm:uppercase;color:#06c;text-decoration:none} .wib_list li {float:left;width:150px;height:250px;overflow:hidden;margin:10= px 10px 0 0;color:#999;background:#fff;border:1px solid #fff} .wib_list li img {margin:0;border:0;padding:0;width:150px;float:left} .wib_list li h3 {padding:3px 5px;margin:0;font-size:14px;word-wrap:break-wo= rd;font-weight:normal;height:76px;width:140px;overflow:hidden;color:#222;fl= oat:left} .wib_list li p.gen_footnote {margin:0;padding:0;line-height:normal;font-siz= e:11px;color:#797979;position:relative;width:150px;height:250px;right:5px;t= op:0;text-align:right;float:right} .wib_list li h3 a,.wib_box1 .gen_right a,.wib_box2 .gen_right a,.wib_box2= a:hover h2,.wib_box1 p a,#wib_disclaimer span a {color:#004996} .wib_list li h3 a:hover,.wib_box1 .gen_right a:hover,.wib_box2 .gen_right= a:hover,.wib_box1 p a:hover,#wib_disclaimer span a:hover {color:#06c} .wib_list li.wib_teaser {background:url(../images/general/wib_teaser_bg.gif= ) repeat-x top} .wib_list li.wib_teaser h3 {color:#fff;height:74px;padding:3px 6px} .wib_list li.wib_teaser a {color:#fff;text-decoration:underline} .wib_list li.wib_teaser a:hover {color:#9abcdd;text-decoration:none} #wib_disclaimer {background:#fff;padding:1px 7px 5px 7px;margin-top:20px} #wib_disclaimer h3 {text-transform:capitalize} #wib_disclaimer span {float:right;margin-top:-23px} #wib_disclaimer li {background:url(../images/general/matrix_cube.gif) no-re= peat left;padding-left:12px;color:#525252} .wib_cntr1 .list_cntr1a {margin:0 0 15px 0} ------=_NextPart_000_0000_96C00354.75311C24--