mime-version: 1.0
date: Wed, 8 Oct 2014 10:50:54 +0200
x-mimeole: Produced By Microsoft MimeOLE V6.0.6002.18463
from: "Guardado por Windows Internet Explorer 9"
subject: The implementation of simplified cost options with the European Social Fund in Italy - European Social Fund - EU Bookshop
content-type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CFE2E5.BBA2CAB0"





This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/html;
	charset="utf-8"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/en/the-implementation-of-simplified-cost-options-with-the-european-social-fund-in-italy-pbKE0414633/

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h=
ttp://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www=
.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><HTML=20
xml:lang=3D"gb" xmlns=3D"http://www.w3.org/1999/xhtml" xmlns:mso=3D"urn:sc=
hemas-microsoft-com:office:office" xmlns:msdt=3D"uuid:C2F41010-65B3-11d1-A=
29F-00AA00C14882"><!--a_number=3D2640--><HEAD>
<META content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Type">
<META content=3D"GB" http-equiv=3D"Content-Language"><TITLE>The implementa=
tion of simplified cost options with the European Social Fund in Italy - E=
uropean Social Fund - EU Bookshop</TITLE>
<META name=3D"description" content=3D"A case study on the 2007-2013 experi=
ence">
<META name=3D"keywords" content=3D"The implementation of simplified cost o=
ptions with the European Social Fund in Italy, European Social Fund, KE-04=
-14-633-EN-C, PAPER, KE-04-14-633-EN-C, PDF">
<META name=3D"WT.ti" content=3D"The implementation of simplified cost opti=
ons with the Europ">
<META name=3D"WT.pn_su_1" content=3D"CEU">
<META name=3D"WT.pn_su_2" content=3D"EMPL_2">
<META name=3D"WT.pn" content=3D"The implementation of simplified cost opti=
ons with the Europ">
<META name=3D"ROBOTS" content=3D"index,follow">
<META name=3D"WT.si_p" content=3D"ProductDetail;CartView">
<META name=3D"WT.seg_1" content=3D"publ">
<META name=3D"WT.pn_gr" content=3D"EN">
<META name=3D"WT.pn_sc" content=3D"pdf">
<META name=3D"WT.pc" content=3D"PDF">
<META name=3D"WT.si_n" content=3D"CheckoutProcess;ShoppingCart">
<META name=3D"WT.tx_e" content=3D"v">
<META name=3D"WT.pn_sku" content=3D"KE-04-14-633-EN-C">
<META name=3D"DCSext.vstr" content=3D"publ">
<META name=3D"WT.pn_fa" content=3D"F01E">
<META name=3D"WT.pn_id" content=3D"free">
<META name=3D"WT.sp" content=3D"en_GB"><LINK rel=3D"stylesheet" type=3D"te=
xt/css" href=3D"http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-B=
ookshop-Site/-/en_GB/css/b2c.css"=20
media=3D"screen"><LINK rel=3D"stylesheet" type=3D"text/css" href=3D"http:/=
/bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/c=
ss/print.css"=20
media=3D"print"><!--[if IE 8]>
<link rel=3D"stylesheet" type=3D"text/css" href=3D"http://bookshop.europa.=
eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/ie8.css"/>
<![endif]-->
<SCRIPT type=3D"text/javascript" src=3D"http://bookshop.europa.eu/is-bin/i=
ntershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/cookies.js"></SCRIPT>

<SCRIPT type=3D"text/javascript" src=3D"http://bookshop.europa.eu/is-bin/i=
ntershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/behaviour.js"></SCRIP=
T>

<SCRIPT type=3D"text/javascript" src=3D"http://bookshop.europa.eu/is-bin/i=
ntershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/behaviours.js"></SCRI=
PT>

<SCRIPT type=3D"text/javascript" src=3D"http://bookshop.europa.eu/is-bin/i=
ntershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/prototype.js"></SCRIP=
T>

<SCRIPT type=3D"text/javascript" src=3D"http://bookshop.europa.eu/is-bin/i=
ntershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/webtrends.js"></SCRIP=
T>
<LINK rel=3D"shortcut icon" type=3D"image/x-icon" href=3D"http://bookshop.=
europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/images/fav.=
ico">
<META name=3D"msapplication-task" content=3D"name=3DEuropean Social Fund; =
action-uri=3Dhttp://bookshop.europa.eu/en/european-social-fund-cbViUKABstc=
4wAAAEjnpAY4e5L/; icon-uri=3D/is-bin/intershop.static/WFS/EU-Bookshop-Site=
/-/en_GB/images/fav.ico">
<META name=3D"msapplication-task" content=3D"name=3DAdvanced search; actio=
n-uri=3Dhttp://bookshop.europa.eu/en/search/advanced/; icon-uri=3D/is-bin/=
intershop.static/WFS/EU-Bookshop-Site/-/en_GB/images/fav.ico">
<META name=3D"msapplication-task" content=3D"name=3DRegister; action-uri=
=3Dhttps://bookshop.europa.eu/is-bin/INTERSHOP.enfinity/WFS/EU-Bookshop-Si=
te/en_GB/-/EUR/ViewUser-New; icon-uri=3D/is-bin/intershop.static/WFS/EU-Bo=
okshop-Site/-/en_GB/images/fav.ico">
<META name=3D"msapplication-starturl"=20
content=3D"http://bookshop.europa.eu/en/home/">
<META name=3D"application-name" content=3D"EU Bookshop"><LINK rel=3D"canon=
ical" href=3D"http://bookshop.europa.eu/en/the-implementation-of-simplifie=
d-cost-options-with-the-european-social-fund-in-italy-pbKE0414633/">
<META name=3D"GENERATOR" content=3D"MSHTML 9.00.8112.16450">
<!--[if gte mso 9]><xml>
<mso:CustomDocumentProperties>
<mso:Descripcion msdt:dt=3D"string">The implementation of simplified cost =
options with the European Social Fund in Italy - European Social Fund - EU=
 Bookshop</mso:Descripcion>
<mso:Centro_x0020_Directivo msdt:dt=3D"string">DGFC</mso:Centro_x0020_Dire=
ctivo>
<mso:Estado msdt:dt=3D"string">Final</mso:Estado>
<mso:_DCDateCreated msdt:dt=3D"string">2014-10-08T00:00:00Z</mso:_DCDateCr=
eated>
<mso:Palabra_x0020_clave msdt:dt=3D"string"></mso:Palabra_x0020_clave>
<mso:_Author msdt:dt=3D"string"></mso:_Author>
<mso:Categorizaci=C3=B3n msdt:dt=3D"string">;#Fondos de la Uni=C3=B3n Euro=
pea;#</mso:Categorizaci=C3=B3n>
<mso:_DCDateModified msdt:dt=3D"string">2014-10-08T00:00:00Z</mso:_DCDateM=
odified>
<mso:display_urn_x003a_schemas-microsoft-com_x003a_office_x003a_office_x00=
23_Editor msdt:dt=3D"string">Mart=C3=ADn Perez, Montserrat</mso:display_ur=
n_x003a_schemas-microsoft-com_x003a_office_x003a_office_x0023_Editor>
<mso:display_urn_x003a_schemas-microsoft-com_x003a_office_x003a_office_x00=
23_Author msdt:dt=3D"string">Mart=C3=ADn Perez, Montserrat</mso:display_ur=
n_x003a_schemas-microsoft-com_x003a_office_x003a_office_x0023_Author>
</mso:CustomDocumentProperties>
</xml><![endif]-->
</HEAD>
<BODY>
<DIV style=3D'margin: 0px auto; padding: 5px 20px 10px; border: 1px solid =
rgb(51, 102, 153); line-height: 1.5; font-family: Verdana,Arial,Helvetica,=
"DejaVu Sans",sans-serif; display: none;'=20
id=3D"cookie-consent-banner" class=3D"cookie-consent-banner">
<H2>Cookies</H2>
<P class=3D"cookie-consent-inform">		We use cookies to improve your websit=
e=20
experience.		<A id=3D"cookie-notice" title=3D"" href=3D"http://bookshop.eu=
ropa.eu/en/the-implementation-of-simplified-cost-options-with-the-european=
-social-fund-in-italy-pbKE0414633/">Find=20
out more about cookies</A> and how to disable them.		By continuing, you co=
nsent=20
to our use of cookies.	</P>
<DIV style=3D"margin-right: 20px;" class=3D"cookie-consent-actions"><A hre=
f=3D"javascript:bannerAccept();">ok</A></DIV>
</DIV>
<DIV id=3D"main-container">
<DIV id=3D"body-container">
<P id=3D"quick-navigation" class=3D"invisible">Go directly to <A accessKey=
=3D"n"=20
title=3D"" tabIndex=3D"10" href=3D"http://bookshop.europa.eu/en/the-implem=
entation-of-simplified-cost-options-with-the-european-social-fund-in-italy=
-pbKE0414633/The%20implementation%20of%20simplified%20cost%20options%20wit=
h%20the%20European%20Social%20Fund%20in%20Italy%20-%20European%20Social%20=
Fund%20-%20EU%20Bookshop.mht#navigation">Navigation</A>,
<A accessKey=3D"c" title=3D"" tabIndex=3D"11" href=3D"http://bookshop.euro=
pa.eu/en/the-implementation-of-simplified-cost-options-with-the-european-s=
ocial-fund-in-italy-pbKE0414633/The%20implementation%20of%20simplified%20c=
ost%20options%20with%20the%20European%20Social%20Fund%20in%20Italy%20-%20E=
uropean%20Social%20Fund%20-%20EU%20Bookshop.mht#catalogs">Catalogues</A>,
<A accessKey=3D"t" title=3D"" tabIndex=3D"13" href=3D"http://bookshop.euro=
pa.eu/en/the-implementation-of-simplified-cost-options-with-the-european-s=
ocial-fund-in-italy-pbKE0414633/The%20implementation%20of%20simplified%20c=
ost%20options%20with%20the%20European%20Social%20Fund%20in%20Italy%20-%20E=
uropean%20Social%20Fund%20-%20EU%20Bookshop.mht#categories">Themes</A>,
<A accessKey=3D"m" title=3D"" tabIndex=3D"14" href=3D"http://bookshop.euro=
pa.eu/en/the-implementation-of-simplified-cost-options-with-the-european-s=
ocial-fund-in-italy-pbKE0414633/The%20implementation%20of%20simplified%20c=
ost%20options%20with%20the%20European%20Social%20Fund%20in%20Italy%20-%20E=
uropean%20Social%20Fund%20-%20EU%20Bookshop.mht#content">Main=20
content</A>,<A accessKey=3D"f" title=3D"" tabIndex=3D"15" href=3D"http://b=
ookshop.europa.eu/en/the-implementation-of-simplified-cost-options-with-th=
e-european-social-fund-in-italy-pbKE0414633/The%20implementation%20of%20si=
mplified%20cost%20options%20with%20the%20European%20Social%20Fund%20in%20I=
taly%20-%20European%20Social%20Fund%20-%20EU%20Bookshop.mht#footer">Footer=
=20
section</A></P>
<DIV id=3D"header">
<P id=3D"europa-gateway">This site is part of<A accessKey=3D"g" title=3D"T=
he gateway to the European Union"=20
tabIndex=3D"16" href=3D"http://www.europa.eu/index_en.htm" target=3D"_blan=
k"><SPAN>
EUROPA</SPAN></A></P>
<UL id=3D"navigation" class=3D"list separated">
  <LI class=3D"regular"><A title=3D"" href=3D"http://bookshop.europa.eu/en=
/about-eu-bookshop-cbiHgKABst6j0AAAEj4ngY4e5M/">About=20
  EU Bookshop</A></LI>
  <LI class=3D"regular"><A title=3D"" href=3D"http://bookshop.europa.eu/en=
/frequently-asked-questions-cb_hOep2IxqasAAAEyL98Gp_h2/">Frequently=20
  asked questions</A></LI>
  <LI class=3D"regular"><A title=3D"" href=3D"http://bookshop.europa.eu/en=
/contact-cbT3MKABstpRwAAAEj4HgY4e5M/">Contact</A>
  </LI>
  <LI><A accessKey=3D"m" title=3D"View the sitemap" tabIndex=3D"30" href=
=3D"http://bookshop.europa.eu/en/sitemap/Start">Sitemap</A>
  </LI>
  <LI class=3D"regular"><A title=3D"" href=3D"http://bookshop.europa.eu/en=
/general-conditions--cbmh0KABstpRoAAAEj4HgY4e5M/">General=20
  conditions </A></LI>
  <LI class=3D"regular last-child"><A title=3D"" href=3D"http://bookshop.e=
uropa.eu/en/legal-notice-cbNcAKABstjokAAAEjzngY4e5M/">Legal=20
  notice</A></LI></UL>
<DIV id=3D"logo"><A title=3D"EU Bookshop - Home" href=3D"http://bookshop.e=
uropa.eu/en/home/">
<IMG alt=3D"EU Bookshop - Home" src=3D"http://bookshop.europa.eu/is-bin/in=
tershop.static/WFS/EU-Bookshop-Site/-/en_GB/images/eu-bookshop-logo-big.pn=
g">
</A></DIV>
<P id=3D"slogan">All EU publications <STRONG>YOU are looking for</STRONG>!=
</P>
<P id=3D"language"><LABEL accessKey=3D"g" class=3D"invisible"=20
for=3D"language-selection">Select your language:</LABEL><SELECT id=3D"lang=
uage-selection"=20
title=3D"" tabIndex=3D"40"><OPTION value=3D"http%3a//bookshop.europa.eu/bg=
/the-implementation-of-simplified-cost-options-with-the-european-social-fu=
nd-in-italy-pbKE0414633/">=D0=B1=D1=8A=D0=BB=D0=B3=D0=B0=D1=80=D1=81=D0=BA=
=D0=B8=20
  (bg)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/es/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">espa=C3=B1ol=20
  (es)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/cs/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">=C4=8De=C5=A1tina=20
  (cs)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/da/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">dansk=20
  (da)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/de/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">Deutsch=20
  (de)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/et/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">eesti=20
  keel (et)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/el/the-im=
plementation-of-simplified-cost-options-with-the-european-social-fund-in-i=
taly-pbKE0414633/">=CE=B5=CE=BB=CE=BB=CE=B7=CE=BD=CE=B9=CE=BA=CE=AC=20
  (el)</OPTION><OPTION selected=3D"selected" value=3D"http%3a//bookshop.eu=
ropa.eu/en/the-implementation-of-simplified-cost-options-with-the-european=
-social-fund-in-italy-pbKE0414633/">English=20
  (en)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/fr/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">fran=C3=A7ais=20
  (fr)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/ga/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">Gaeilge=20
  (ga)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/hr/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">hrvatski=20
  (hr)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/it/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">italiano=20
  (it)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/lv/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">latvie=C5=A1u=20
  valoda (lv)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/lt/the-=
implementation-of-simplified-cost-options-with-the-european-social-fund-in=
-italy-pbKE0414633/">lietuvi=C5=B3=20
  kalba (lt)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/hu/the-i=
mplementation-of-simplified-cost-options-with-the-european-social-fund-in-=
italy-pbKE0414633/">magyar=20
  (hu)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/mt/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">Malti=20
  (mt)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/nl/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">Nederlands=20
  (nl)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/pl/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">polski=20
  (pl)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/pt/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">portugu=C3=AAs=20
  (pt)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/ro/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">rom=C3=A2n=C4=83=20
  (ro)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/sk/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">sloven=C4=8Dina=20
  (sk)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/sl/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">sloven=C5=A1=C4=8Dina=20
  (sl)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/fi/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">suomi=20
  (fi)</OPTION><OPTION value=3D"http%3a//bookshop.europa.eu/sv/the-impleme=
ntation-of-simplified-cost-options-with-the-european-social-fund-in-italy-=
pbKE0414633/">svenska=20
  (sv)</OPTION></SELECT>
<SCRIPT type=3D"text/javascript">
/*<![CDATA[*/
if (typeof Behaviour !=3D=3D 'undefined') {
Behaviour.register({
'#language-selection' : function(element) {
element.onchange =3D function(evt) {
if (this.value !=3D '')
window.location =3D decodeURIComponent(this.value);
}
}
});
}
/*]]>*/
</SCRIPT>
</P></DIV>
<DIV id=3D"publications-categories" class=3D"active">
<P class=3D"invisible"><STRONG>Catalogues</STRONG></P>
<UL id=3D"catalogs" class=3D"list">
  <LI><A title=3D"" tabIndex=3D"102" href=3D"http://bookshop.europa.eu/en/=
bundles/discover-cb.u6ep2IxwqYAAAEuJV8BgSLq/">Discover</A></LI>
  <LI class=3D"active"><A title=3D"" tabIndex=3D"103" href=3D"http://books=
hop.europa.eu/en/themes-cbsS0KABst8rMAAAEjcqkY4e5J/">Themes</A></LI>
  <LI><A title=3D"" tabIndex=3D"104" href=3D"http://bookshop.europa.eu/en/=
authors-cbPVMKABstWPgAAAEjQoUY4e5J/">Authors</A></LI>
  <LI><A title=3D"" tabIndex=3D"105" href=3D"http://bookshop.europa.eu/en/=
e-books-cbDyaep2OwDPcAAAFH2zdqoBpl/">e-Books</A></LI></UL>
<P class=3D"invisible"><STRONG>Search</STRONG></P>
<DIV id=3D"search">
<FORM method=3D"get" name=3D"SimSearch" action=3D"http://bookshop.europa.e=
u/en/search/">
<INPUT name=3D"webform-id" value=3D"WFSimpleSearch" type=3D"hidden"><INPUT=
 name=3D"DefaultButton"=20
value=3D"findSimple" type=3D"hidden">
<FIELDSET class=3D"inline"><LABEL id=3D"label-for-search-term" title=3D"Se=
arch" for=3D"search-for">&nbsp;</LABEL>
<INPUT accessKey=3D"k" id=3D"search-for" title=3D"" tabIndex=3D"151" name=
=3D"WFSimpleSearch_NameOrID"=20
type=3D"text"><LABEL accessKey=3D"i" id=3D"search-in-selection" class=3D"i=
nvisible" for=3D"search-in">in</LABEL>
<SELECT id=3D"search-in" title=3D"" tabIndex=3D"152" name=3D"SearchConditi=
ons"><OPTION=20
  value=3D"">whole site</OPTION><OPTION value=3D"title">title only</OPTION=
></SELECT>
<INPUT name=3D"SearchType" value=3D"1" type=3D"hidden"><INPUT name=3D"Sort=
ingAttribute"=20
value=3D"LatestYear-desc" type=3D"hidden"><INPUT accessKey=3D"p" id=3D"sim=
ple-search-go"=20
title=3D"Start search" tabIndex=3D"153" name=3D"findSimple" alt=3D"Start s=
earch" value=3D"GO"=20
src=3D"http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-S=
ite/-/en_GB/images/search-button.gif"=20
type=3D"image"><A accessKey=3D"d" title=3D"" tabIndex=3D"154" href=3D"http=
://bookshop.europa.eu/en/search/advanced/">Advanced=20
search</A></FIELDSET></FORM></DIV></DIV>
<DIV id=3D"content" class=3D"triple">
<UL id=3D"breadcrumb" class=3D"list">
  <LI><A href=3D"http://www.europa.eu/index_en.htm" target=3D"_blank">EURO=
PA</A>
  </LI>
  <LI>&nbsp;&gt;&nbsp;<A href=3D"http://bookshop.europa.eu/en/home/">EU=20
  Bookshop</A></LI>
  <LI>&nbsp;&gt;&nbsp;<A href=3D"http://bookshop.europa.eu/en/themes-cbsS0=
KABst8rMAAAEjcqkY4e5J/">Themes</A>
  </LI>
  <LI>&nbsp;&gt;&nbsp;<A href=3D"http://bookshop.europa.eu/en/social-cbaFc=
KABstILwAAAEjPpEY4e5L/">Social</A>
  </LI>
  <LI>&nbsp;&gt;&nbsp;<A href=3D"http://bookshop.europa.eu/en/social-polic=
y-cbWpIKABst.SMAAAEjGJEY4e5L/">Social=20
  policy</A></LI>
  <LI>&nbsp;&gt;&nbsp;<A href=3D"http://bookshop.europa.eu/en/european-soc=
ial-fund-cbViUKABstc4wAAAEjnpAY4e5L/">European=20
  Social Fund</A></LI>
  <LI>&nbsp;&gt;&nbsp; The implementation of simplified cost options with =
the=20
  European Social Fund in Italy</LI></UL>
<P id=3D"details-caption">Publication details</P>
<DIV id=3D"publication">
<P class=3D"cover"><SPAN><A title=3D"" tabIndex=3D"420" href=3D"http://boo=
kshop.europa.eu/en/the-implementation-of-simplified-cost-options-with-the-=
european-social-fund-in-italy-pbKE0414633/?CatalogCategoryID=3DViUKABstc4w=
AAAEjnpAY4e5L"><IMG=20
alt=3D"The implementation of simplified cost options with the European Soc=
ial Fund in Italy"=20
src=3D"http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-S=
ite/EU-Bookshop/en_GB/KE0414633.jpg"></A>
</SPAN></P>
<DIV id=3D"description">
<H1>The implementation of simplified cost options with the European Social=
 Fund=20
in Italy</H1>
<H2>A case study on the 2007-2013 experience</H2>
<P>SCOs were introduced in the 2007=E2=80=932013 programming period for ES=
F in order to=20
reduce the administrative burden on Managing Authorities when implementing=
 ESF=20
co-funded projects and on beneficiaries. SCOs enable also to shift the foc=
us=20
from input to output and results. This thematic paper shares the Italian=20
experience with this tool in the hope that good practices can be taken up =
by=20
other EU countries when managing ESF projects</P>
<UL id=3D"options" class=3D"list">
  <LI id=3D"add-to-bookmarks"><A accessKey=3D"0" class=3D"bookmark-trigger=
" title=3D"Add this publication to your bookmarks (Javascript should be en=
abled)."=20
  tabIndex=3D"499" href=3D"http://bookshop.europa.eu/en/the-implementation=
-of-simplified-cost-options-with-the-european-social-fund-in-italy-pbKE041=
4633/The%20implementation%20of%20simplified%20cost%20options%20with%20the%=
20European%20Social%20Fund%20in%20Italy%20-%20European%20Social%20Fund%20-=
%20EU%20Bookshop.mht#">
  <SPAN class=3D"invisible">Add to favourites</SPAN></A></LI>
  <LI id=3D"send-publicaiton-as-email"><A accessKey=3D"s" title=3D"Recomme=
nd this publication"=20
  tabIndex=3D"411" href=3D"http://bookshop.europa.eu/is-bin/INTERSHOP.enfi=
nity/WFS/EU-Bookshop-Site/en_GB/-/EUR/ViewPublication-Recommend?Publicatio=
nKey=3DKE0414633&amp;CatalogCategoryID=3DViUKABstc4wAAAEjnpAY4e5L"><SPAN=20
  class=3D"invisible">Recommend this publication</SPAN></A></LI>
  <LI id=3D"print-publication-details"><A accessKey=3D"n" class=3D"print-t=
rigger"=20
  title=3D"Print this page" tabIndex=3D"412" href=3D"http://bookshop.europ=
a.eu/en/the-implementation-of-simplified-cost-options-with-the-european-so=
cial-fund-in-italy-pbKE0414633/The%20implementation%20of%20simplified%20co=
st%20options%20with%20the%20European%20Social%20Fund%20in%20Italy%20-%20Eu=
ropean%20Social%20Fund%20-%20EU%20Bookshop.mht#">
  <SPAN class=3D"invisible">Print publication details</SPAN></A></LI></UL>
<DL id=3D"authors" class=3D"clear publication-filters">
  <DT>Corporate author(s):</DT>
  <DD><A title=3D"Browse other publications from European Commission" tabI=
ndex=3D"421"=20
  href=3D"http://bookshop.europa.eu/en/european-commission-cbaLoKABstP1sAA=
AEjGIkY4e5K/">European=20
  Commission</A>, </DD>
  <DD><A title=3D"Browse other publications from Directorate-General for E=
mployment, Social Affairs and Inclusion"=20
  tabIndex=3D"422" href=3D"http://bookshop.europa.eu/en/directorate-genera=
l-for-employment-social-affairs-and-inclusion-cb5Bmep2IxvtAAAAEurxMIaMP7/"=
>Directorate-General=20
  for Employment, Social Affairs and Inclusion</A></DD></DL>
<DL id=3D"personal-authors" class=3D"clear publication-filters">
  <DT>Private author(s): </DT>
  <DD><A title=3D"Browse all publications from Luca Santin" tabIndex=3D"42=
3" href=3D"http://bookshop.europa.eu/en/search/Filter?SearchParameter=3D%2=
6%40QueryTerm%3D*%26Author%3DLuca%2BSantin">Luca=20
  Santin</A></DD></DL>
<DL id=3D"themes" class=3D"clear publication-filters">
  <DT>Themes:</DT>
  <DD><A title=3D"Browse other publications related to European Social Fun=
d"=20
  tabIndex=3D"424" href=3D"http://bookshop.europa.eu/en/european-social-fu=
nd-cbViUKABstc4wAAAEjnpAY4e5L/">European=20
  Social Fund</A></DD></DL>
<DL id=3D"targetaudience" class=3D"clear publication-filters">
  <DT>Target audience:</DT>
  <DD><A href=3D"http://bookshop.europa.eu/en/search/Filter?SearchParamete=
r=3D%26%40QueryTerm%3D*%26TargetAudience%3D702">
  Specialised/Technical</A></DD></DL>
<DL id=3D"eurovoc" class=3D"clear publication-filters">
  <DT>Key words:</DT>
  <DD><A href=3D"http://bookshop.europa.eu/en/search/Filter?SearchParamete=
r=3D%26%40QueryTerm%3D*%26EUROVOC%3D005580">
  structural expenditure</A>, </DD>
  <DD><A href=3D"http://bookshop.europa.eu/en/search/Filter?SearchParamete=
r=3D%26%40QueryTerm%3D*%26EUROVOC%3D004056">
  European Social Fund</A>, </DD>
  <DD><A href=3D"http://bookshop.europa.eu/en/search/Filter?SearchParamete=
r=3D%26%40QueryTerm%3D*%26EUROVOC%3D001519">
  Italy</A>, </DD>
  <DD><A href=3D"http://bookshop.europa.eu/en/search/Filter?SearchParamete=
r=3D%26%40QueryTerm%3D*%26EUROVOC%3D005628">
  case study</A></DD></DL></DIV>
<P class=3D"clear">
<SCRIPT type=3D"text/javascript" src=3D"http://bookshop.europa.eu/is-bin/i=
ntershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/eub-publication.js"><=
/SCRIPT>

<SCRIPT type=3D"text/javascript" src=3D"http://bookshop.europa.eu/is-bin/i=
ntershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/dialog.js"></SCRIPT>

<SCRIPT type=3D"text/javascript" src=3D"http://bookshop.europa.eu/is-bin/i=
ntershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/eub-webtrends.js"></S=
CRIPT>

<SCRIPT type=3D"text/javascript">
/*<![CDATA[*/
Behaviour.register({
'.available-localized-editions' : function(e) {
e.onchange =3D function(evt) {
if (this.options[this.selectedIndex].value.length < 1) return;
var evt =3D evt || window.event;
var url =3D 'http://bookshop.europa.eu/is-bin/INTERSHOP.enfinity/WFS/EU-Bo=
okshop-Site/en_GB/-/EUR/ViewPublication-EditionInfo?PublicationKey=3DKE041=
4633&PaperExistent=3Dtrue&PDFExistent=3Dtrue';
var origin =3D $(this);
var source =3D origin.up('dd.placeholder');
var parameters =3D Form.serializeElements(source.select('.'+origin.classNa=
me)).parseQuery();
parameters.CatalogCategoryID =3D 'ViUKABstc4wAAAEjnpAY4e5L'
AjaxUtils.injectResponse(
url,
parameters,
source,
'/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB',
origin
);
}
},
'#editions form.print-on-demand-confirmation' : function(e) {
e.onsubmit =3D function(evt) {
var parameters =3D $H($(this).serialize(true));
parameters.set('Dialog', 'true');
var dialog =3D new Dialog({
width : 500,
ajax : {
url : this.action,
options : {method: 'post', parameters: parameters, onComplete: function(t)=
 {Behaviour.apply();}}
}
});
dialog.open();
return false;
}
}
});

WTPublication.WEB_ROOT =3D '/is-bin/intershop.static/WFS/EU-Bookshop-Site/=
-/en_GB/';
Behaviour.register({
'.download-file' : function(e) {
e.onclick =3D function(evt) {
evt =3D evt || window.event;
if (!Prototype.Browser.IE) {
WTPublication.file.delay(0.75, this.href);
Event.stop(evt);
}
},
e.onmousedown =3D function(evt) {
evt =3D evt || window.event;
WTPublication.download($(this).up('dd.placeholder'), this.href);
}
}
});

/*]]>*/
</SCRIPT>

<DL id=3D"editions">
  <DT class=3D"invisible">Available editions:</DT>
<SCRIPT type=3D"text/javascript">
function GetSelectedLanguage(fromID,toID) {
var selectedtest =3D document.getElementById(fromID).options[document.getE=
lementById(fromID).selectedIndex].text;
document.getElementById(toID).value =3D selectedtest;
return selectedtest;
}
</SCRIPT>

  <DD id=3D"edition-KE0414633ENC_PDF" class=3D"placeholder">
  <H3>PDF</H3>
  <TABLE class=3D"editions-info" cellSpacing=3D"0" cellPadding=3D"0">
    <THEAD>
    <TR>
      <TH class=3D"edition-information" scope=3D"col">Details</TH>
      <TH class=3D"edition-identificators" scope=3D"col">Identifiers</TH>
      <TH class=3D"aligned-to-center catalogue-number" scope=3D"col">Catal=
ogue=20
        number</TH>
      <TH class=3D"aligned-to-center price" scope=3D"col">Price</TH></TR><=
/THEAD>
    <TFOOT class=3D"item-summary">
    <TR>
      <TH scope=3D"row"><LABEL accessKey=3D"v" for=3D"available-languages-=
PDF">
        Available languages:</LABEL></TH>
      <TD>
        <FORM id=3D"AvailableLanguagesForm" method=3D"post" action=3D"http=
://bookshop.europa.eu/is-bin/INTERSHOP.enfinity/WFS/EU-Bookshop-Site/en_GB=
/-/EUR/ViewPublication-FromEdition?PublicationKey=3DKE0414633&amp;CatalogC=
ategoryID=3DViUKABstc4wAAAEjnpAY4e5L">
        <SELECT id=3D"available-languages-PDF" class=3D"available-localize=
d-editions"=20
        name=3D"EditionKey"><OPTION value=3D"">Select language:</OPTION><O=
PTION=20
          title=3D"English" selected=3D"selected" value=3D"KE0414633ENC_PD=
F">English
          </OPTION></SELECT><NOSCRIPT>&lt; input type=3D"submit" value=3D"=
Choose"=20
        name=3D"select-edition" id=3D"select-edition-PDF" class=3D"noscrip=
t-input"=20
        /&gt;</NOSCRIPT><INPUT class=3D"available-localized-editions" name=
=3D"PreviousLanguage"=20
        value=3D"EN" type=3D"hidden"><INPUT class=3D"webtrends-tags" name=
=3D"WT.pn"=20
        value=3D"The implementation of simplified cost options with the Eu=
rop"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pn_gr" =
value=3D"EN"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pn_sc" =
value=3D"pdf"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pc" val=
ue=3D"PDF"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pn_id" =
value=3D"free"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pn_sku"=
 value=3D"KE-04-14-633-EN-C"=20
        type=3D"hidden"></FORM></TD>
      <TD class=3D"aligned-to-center edition-options" colSpan=3D"2">
        <DL id=3D"download-links">
          <DT class=3D"invisible">PDF:</DT>
          <DD class=3D"download static-files-download"><SPAN><A class=3D"d=
ownload-file"=20
          href=3D"http://bookshop.europa.eu/en/the-implementation-of-simpl=
ified-cost-options-with-the-european-social-fund-in-italy-pbKE0414633/down=
loads/KE-04-14-633-EN-C/KE0414633ENC_002.pdf?FileName=3DKE0414633ENC_002.p=
df&amp;SKU=3DKE0414633ENC_PDF&amp;CatalogueNumber=3DKE-04-14-633-EN-C">
          Download</A></SPAN></DD></DL>&nbsp;</TD></TR></TFOOT>
    <TBODY>
    <TR>
      <TD class=3D"edition-information">
        <P>Publication year: 2014</P>&nbsp;</TD>
      <TD class=3D"edition-identificators">
        <P>ISBN: 978-92-79-39052-4</P>
        <P>DOI: 10.2767/29837</P>&nbsp;</TD>
      <TD class=3D"aligned-to-center catalogue-number">KE-04-14-633-EN-C</=
TD>
      <TD class=3D"aligned-to-center price">Free</TD></TR></TBODY></TABLE>
<SCRIPT type=3D"text/javascript">
/*<![CDATA[*/

Behaviour.apply();
/*]]>*/
</SCRIPT>
  </DD>
<SCRIPT type=3D"text/javascript">
function GetSelectedLanguage(fromID,toID) {
var selectedtest =3D document.getElementById(fromID).options[document.getE=
lementById(fromID).selectedIndex].text;
document.getElementById(toID).value =3D selectedtest;
return selectedtest;
}
</SCRIPT>

  <DD id=3D"edition-KE0414633ENC_PAPER" class=3D"placeholder">
  <H3>PAPER</H3>
  <TABLE class=3D"editions-info" cellSpacing=3D"0" cellPadding=3D"0">
    <THEAD>
    <TR>
      <TH class=3D"edition-information" scope=3D"col">Details</TH>
      <TH class=3D"edition-identificators" scope=3D"col">Identifiers</TH>
      <TH class=3D"aligned-to-center catalogue-number" scope=3D"col">Catal=
ogue=20
        number</TH>
      <TH class=3D"aligned-to-center price" scope=3D"col">Price</TH></TR><=
/THEAD>
    <TFOOT class=3D"item-summary">
    <TR>
      <TH scope=3D"row"><LABEL accessKey=3D"v" for=3D"available-languages-=
PAPER">
        Available languages:</LABEL></TH>
      <TD>
        <FORM id=3D"AvailableLanguagesForm" method=3D"post" action=3D"http=
://bookshop.europa.eu/is-bin/INTERSHOP.enfinity/WFS/EU-Bookshop-Site/en_GB=
/-/EUR/ViewPublication-FromEdition?PublicationKey=3DKE0414633&amp;CatalogC=
ategoryID=3DViUKABstc4wAAAEjnpAY4e5L">
        <SELECT id=3D"available-languages-PAPER" class=3D"available-locali=
zed-editions"=20
        name=3D"EditionKey"><OPTION value=3D"">Select language:</OPTION><O=
PTION=20
          title=3D"English" selected=3D"selected" value=3D"KE0414633ENC_PA=
PER">English
          </OPTION></SELECT><NOSCRIPT>&lt; input type=3D"submit" value=3D"=
Choose"=20
        name=3D"select-edition" id=3D"select-edition-PAPER" class=3D"noscr=
ipt-input"=20
        /&gt;</NOSCRIPT><INPUT class=3D"available-localized-editions" name=
=3D"PreviousLanguage"=20
        value=3D"EN" type=3D"hidden"><INPUT class=3D"webtrends-tags" name=
=3D"WT.pn"=20
        value=3D"The implementation of simplified cost options with the Eu=
rop"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pn_gr" =
value=3D"EN"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pn_sc" =
value=3D"bibl"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pc" val=
ue=3D"PODPAPER"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pn_id" =
value=3D"free"=20
        type=3D"hidden"><INPUT class=3D"webtrends-tags" name=3D"WT.pn_sku"=
 value=3D"KE-04-14-633-EN-C"=20
        type=3D"hidden"></FORM></TD>
      <TD class=3D"aligned-to-center edition-options" colSpan=3D"2"><SPAN =
class=3D"not-avilable-for-ordering">
        <STRONG>Unavailable</STRONG></SPAN>&nbsp;</TD></TR>
    <TR class=3D"print-on-demand background-print-on-demand">
      <TD class=3D"headline-print-on-demand" colSpan=3D"4">
        <H3>Print-On-Demand-service</H3><SPAN class=3D"invisible">To order=
 a print=20
        on demand version</SPAN><A class=3D"policy-new" title=3D"See Print=
 on demand policy "=20
        href=3D"http://bookshop.europa.eu/en/general-conditions--cbmh0KABs=
tpRoAAAEj4HgY4e5M/#print-on-demand-fees">
        <SPAN class=3D"invisible">See Print on demand policy </SPAN>&nbsp;=
</A></TD>
    </TR>
    <TR class=3D"background-print-on-demand">
      <TD colSpan=3D"3"><SPAN class=3D"description-print-on-demand">This=20
        Print-On-Demand copy may be of a different quality than the origin=
al=20
        version.</SPAN></TD>
      <TH class=3D"aligned-to-center price" scope=3D"col">Price</TH></TR>
    <TR class=3D"print-on-demand background-print-on-demand">
      <TD class=3D"language-print-on-demand space-print-on-demand" colSpan=
=3D"2">
        <SPAN id=3D"selected-language-pod"><INPUT id=3D"languagePODPAPER" =
readOnly=3D"readonly"=20
        type=3D"text">
<SCRIPT type=3D"text/javascript">
window.onload=3DGetSelectedLanguage('available-languages-PAPER','languageP=
ODPAPER');
</SCRIPT>
        </SPAN></TD>
      <TD class=3D"edition-options space-print-on-demand">
        <FORM class=3D"print-on-demand-confirmation" method=3D"post" actio=
n=3D"http://bookshop.europa.eu/is-bin/INTERSHOP.enfinity/WFS/EU-Bookshop-S=
ite/en_GB/-/EUR/ViewPublication-PrintOnDemandConfirmation">
        <INPUT name=3D"EditionKey" value=3D"KE0414633ENC_PAPER" type=3D"hi=
dden"><INPUT=20
        name=3D"CatalogCategoryID" value=3D"ViUKABstc4wAAAEjnpAY4e5L" type=
=3D"hidden">
        <SPAN style=3D"padding: 0.6em 0px 0.7em 1.6em;"><INPUT title=3D"To=
 order a print on demand version" name=3D"printOnDemand" value=3D"Print on=
 demand" type=3D"submit">
        </SPAN></FORM></TD>
      <TD class=3D"aligned-to-center price space-print-on-demand">=E2=82=
=AC 3.00</TD></TR>
    <TR>
      <TD></TD></TR></TFOOT>
    <TBODY>
    <TR>
      <TD class=3D"edition-information">
        <P>Pages: 32 _</P>
        <P>Weight: 147 g</P>
        <P>Publication year: 2014</P>&nbsp;</TD>
      <TD class=3D"edition-identificators">
        <P>ISBN: 978-92-79-39052-4</P>
        <P>DOI: 10.2767/29837</P>&nbsp;</TD>
      <TD class=3D"aligned-to-center catalogue-number">KE-04-14-633-EN-C</=
TD>
      <TD class=3D"aligned-to-center price">Free</TD></TR></TBODY></TABLE>
<SCRIPT type=3D"text/javascript">
/*<![CDATA[*/
WTPublication.view('edition-KE0414633ENC_PAPER');
Behaviour.apply();
/*]]>*/
</SCRIPT>
  </DD></DL>
<P id=3D"show-serials" class=3D"additional-publications"></P></DIV></DIV>
<DIV id=3D"categories">
<P id=3D"selected-category"><STRONG><SPAN>Social policy=20
(2&nbsp;466)</SPAN></STRONG></P>
<UL class=3D"categories">
  <LI><SPAN><A title=3D"" tabIndex=3D"302" href=3D"http://bookshop.europa.=
eu/en/social-questions-town-planning-and-housing-cbAeEKABstBb4AAAEjppAY4e5=
L/">Social=20
  questions - town planning and housing (73)</A></SPAN></LI>
  <LI><SPAN><A title=3D"" tabIndex=3D"302" href=3D"http://bookshop.europa.=
eu/en/social-problems-cbtwMKABstaW8AAAEjopEY4e5L/">Social=20
  problems (604)</A></SPAN></LI>
  <LI><SPAN><A title=3D"" tabIndex=3D"302" href=3D"http://bookshop.europa.=
eu/en/demography-and-population-cbWI8KABst1t8AAAEjnZAY4e5L/">Demography=20
  and population (215)</A></SPAN></LI>
  <LI><SPAN><A title=3D"" tabIndex=3D"302" href=3D"http://bookshop.europa.=
eu/en/social-protection-and-social-security-cb.0EKABstOCEAAAEjpZAY4e5L/">S=
ocial=20
  protection and social security (236)</A></SPAN></LI>
  <LI class=3D"active"><SPAN><A title=3D"" tabIndex=3D"302" href=3D"http:/=
/bookshop.europa.eu/en/european-social-fund-cbViUKABstc4wAAAEjnpAY4e5L/">E=
uropean=20
  Social Fund (218)</A></SPAN></LI></UL></DIV>
<DIV id=3D"sidebar">
<UL id=3D"customer-basket" class=3D"sidebar-box">
  <LI id=3D"view-basket">&nbsp;</LI>
  <LI class=3D"first-child basket-anchor">
  <P id=3D"requisition-anchor"><STRONG>My basket</STRONG></P></LI>
  <LI class=3D"invisible"><A accessKey=3D"w" title=3D"" tabIndex=3D"502" h=
ref=3D"http://bookshop.europa.eu/is-bin/INTERSHOP.enfinity/WFS/EU-Bookshop=
-Site/en_GB/-/EUR/ViewStandardCatalog-Browse?CatalogCategoryID=3D#order">H=
ow=20
  to order </A></LI>
  <LI class=3D"to-req"><A accessKey=3D"r" title=3D"" tabIndex=3D"503" href=
=3D"http://bookshop.europa.eu/en/myorder/">Track=20
  an order</A></LI></UL>
<DIV id=3D"login-form" class=3D"sidebar-box">
<P id=3D"login-caption"><STRONG>Log in</STRONG></P>
<FORM id=3D"quick-login-form" method=3D"post" name=3D"quick-login-form" ac=
tion=3D"https://bookshop.europa.eu/is-bin/INTERSHOP.enfinity/WFS/EU-Booksh=
op-Site/en_GB/-/EUR/ViewApplication-Login"><INPUT=20
name=3D"PipelineName" value=3D"ViewPublication" type=3D"hidden"><INPUT nam=
e=3D"StartNodeName"=20
value=3D"Start" type=3D"hidden">
<FIELDSET><INPUT name=3D"LoginForm_State" value=3D"login" type=3D"hidden">
<P><LABEL id=3D"label-for-login-username"=20
for=3D"login-username">Username</LABEL><INPUT accessKey=3D"u" id=3D"login-=
username"=20
title=3D"" tabIndex=3D"510" name=3D"LoginForm_Login" type=3D"text"></P>
<P><LABEL id=3D"label-for-login-password"=20
for=3D"login-password">Password</LABEL><INPUT accessKey=3D"p" id=3D"login-=
password"=20
title=3D"" tabIndex=3D"511" name=3D"LoginForm_Password" type=3D"password">=
</P>
<P id=3D"quick-login" class=3D"button"><INPUT accessKey=3D"m" title=3D"Log=
 in" tabIndex=3D"512"=20
name=3D"LoginForm_Login" alt=3D"Log in" value=3D"Go" src=3D"http://booksho=
p.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/images/lo=
gin-button.png"=20
type=3D"image"></P></FIELDSET><INPUT name=3D"Origin" value=3D"/en/the-impl=
ementation-of-simplified-cost-options-with-the-european-social-fund-in-ita=
ly-pbKE0414633/"=20
type=3D"hidden"></FORM>
<P><A accessKey=3D"r" title=3D"" tabIndex=3D"513" href=3D"https://bookshop=
.europa.eu/is-bin/INTERSHOP.enfinity/WFS/EU-Bookshop-Site/en_GB/-/EUR/View=
User-New">Register
			</A></P>
<P><A accessKey=3D"y" title=3D"" tabIndex=3D"514" href=3D"https://bookshop=
.europa.eu/is-bin/INTERSHOP.enfinity/WFS/EU-Bookshop-Site/en_GB/-/EUR/View=
ForgotLoginData-ForgotPassword">Forgotten=20
your password?</A></P></DIV>
<SCRIPT type=3D"text/javascript">
		/*<![CDATA[*/
			if (typeof Behaviour !=3D=3D 'undefined') {
				document.getElementById('label-for-login-username').style.display =3D =
'none';
				document.getElementById('label-for-login-password').style.display =3D =
'none';
				//document.getElementById('quick-login').style.display =3D 'none';
				document.getElementById('login-username').value =3D 'Username';
				document.getElementById('login-password').value =3D 'Password';
				Behaviour.register({
					'#login-username' : function(element) {
//						element.onblur =3D function(evt) {
//							if (document.getElementById('login-password').value.length > 0 &&=
 this.value.length > 0 && (document.getElementById('login-password').value=
 !=3D 'Password')) {
//								document.getElementById('quick-login-form').submit();
//							}
//						=09
//							if (this.value.length < 1) {
//								this.value =3D 'Username';
//							}
//						},
						element.onfocus =3D function(evt) {
							if (this.value =3D=3D 'Username') {
								this.value =3D '';
							}
						}
					},
					'#login-password' : function(element) {
//						element.onblur =3D function(evt) {
//							if (document.getElementById('login-username').value.length > 0 &&=
 this.value.length > 0 && (document.getElementById('login-username').value=
 !=3D 'Username')) {
//								document.getElementById('quick-login-form').submit();
//							}
//						=09
//							if (this.value.length < 1) {
//								this.value =3D 'Password';
//							}
//						},
						element.onfocus =3D function(evt) {
							if (this.value =3D=3D 'Password') {
								this.value =3D '';
							}
						}
					}
				});
			}
		/*]]>*/
	</SCRIPT>
</DIV></DIV>
<DIV id=3D"footer-placeholder" class=3D"clear">
<DIV>
<UL id=3D"footer">
  <LI id=3D"my-eubookshop">My EU Bookshop</LI>
  <LI id=3D"searches">
  <P><STRONG>Search</STRONG></P>
  <UL>
    <LI><A accessKey=3D"d" title=3D"" tabIndex=3D"901" href=3D"http://book=
shop.europa.eu/en/search/advanced/">Advanced=20
    search</A></LI></UL></LI>
  <LI>
  <P><STRONG>Browse by</STRONG></P>
  <UL>
    <LI><A title=3D"" tabIndex=3D"911" href=3D"http://bookshop.europa.eu/e=
n/authors-cbPVMKABstWPgAAAEjQoUY4e5J/">Corporate=20
    author</A></LI>
    <LI><A title=3D"" tabIndex=3D"912" href=3D"http://bookshop.europa.eu/e=
n/themes-cbsS0KABst8rMAAAEjcqkY4e5J/">Theme</A></LI>
    <LI><A title=3D"" tabIndex=3D"913" href=3D"http://bookshop.europa.eu/e=
n/subscriptions-cbLuEKABst3B4AAAEjWbgY4e5J/">Subscriptions</A></LI>
  </UL></LI>
  <LI>
  <P><STRONG>Practical information</STRONG></P>
  <UL>
    <LI><A title=3D"" tabIndex=3D"921" href=3D"http://bookshop.europa.eu/e=
n/about-eu-bookshop-cbiHgKABst6j0AAAEj4ngY4e5M/">About=20
    EU Bookshop</A></LI>
    <LI><A href=3D"http://bookshop.europa.eu/en/salesagents/">Sales agents=
</A>
    </LI></UL></LI>
  <LI>
  <P><STRONG>Legal information</STRONG></P>
  <UL>
    <LI><A title=3D"" tabIndex=3D"922" href=3D"http://bookshop.europa.eu/e=
n/general-conditions--cbmh0KABstpRoAAAEj4HgY4e5M/">General=20
    conditions </A></LI>
    <LI><A title=3D"" tabIndex=3D"931" href=3D"http://bookshop.europa.eu/e=
n/legal-notice-cbNcAKABstjokAAAEjzngY4e5M/#legal-notice-disclaimer">Discla=
imer</A></LI>
    <LI><A title=3D"" tabIndex=3D"932" href=3D"http://bookshop.europa.eu/e=
n/legal-notice-cbNcAKABstjokAAAEjzngY4e5M/#legal-notice-copyright">Copyrig=
ht=20
    notice</A></LI>
    <LI><A title=3D"" tabIndex=3D"933" href=3D"http://bookshop.europa.eu/e=
n/legal-notice-cbNcAKABstjokAAAEjzngY4e5M/#private-notice">Privacy=20
    notice</A></LI></UL></LI></UL>
<P class=3D"clear"></P></DIV>
<SCRIPT type=3D"text/javascript">
/*<![CDATA[*/
var _tag =3D new WebTrends();
_tag.dcsid =3D "dcs5w0txb10000wocrvqy1nqm_6n1p";
_tag.domain =3D "bookshop.europa.eu";
_tag.dcsGetId();
_tag.dcsCollect();
/*]]>*/
</SCRIPT>
<NOSCRIPT>&lt; div&gt;&lt; img alt=3D"DCSIMG" id=3D"DCSIMG" width=3D"1" he=
ight=3D"1"=20
src=3D"http://bookshop.europa.eu/dcs5w0txb10000wocrvqy1nqm_6n1p/njs.gif?dc=
suri=3D/nojavascript&amp;WT.js=3DNo&amp;WT.tv=3D9.3.0"/&gt;
&lt; /div&gt;</NOSCRIPT><BR></DIV></DIV></BODY></HTML>

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: image/png
content-transfer-encoding: base64
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/images/eu-bookshop-logo-big.png

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

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: image/jpeg
content-transfer-encoding: base64
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/EU-Bookshop/en_GB/KE0414633.jpg

/9j/4QGGRXhpZgAATU0AKgAAAAgADAEAAAMAAAABBnYAAAEBAAMAAAABCSMAAAECAAMAAAADAAAA
ngEGAAMAAAABAAIAAAESAAMAAAABAAEAAAEVAAMAAAABAAMAAAEaAAUAAAABAAAApAEbAAUAAAAB
AAAArAEoAAMAAAABAAIAAAExAAIAAAAeAAAAtAEyAAIAAAAUAAAA0odpAAQAAAABAAAA6AAAASAA
CAAIAAgAHoSAAAAnEAAehIAAACcQQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MAMjAxNDow
ODowNyAxMTozMzoxOAAAAAAEkAAABwAAAAQwMjIxoAEAAwAAAAEAAQAAoAIABAAAAAEAAAB4oAMA
BAAAAAEAAACqAAAAAAAAAAYBAwADAAAAAQAGAAABGgAFAAAAAQAAAW4BGwAFAAAAAQAAAXYBKAAD
AAAAAQACAAACAQAEAAAAAQAAAX4CAgAEAAAAAQAAAAAAAAAAAAAASAAAAAEAAABIAAAAAf/tCCBQ
aG90b3Nob3AgMy4wADhCSU0EBAAAAAAADxwBWgADGyVHHAIAAAIAAAA4QklNBCUAAAAAABDNz/p9
qMe+CQVwdq6vBcNOOEJJTQQ6AAAAAACTAAAAEAAAAAEAAAAAAAtwcmludE91dHB1dAAAAAUAAAAA
Q2xyU2VudW0AAAAAQ2xyUwAAAABSR0JDAAAAAEludGVlbnVtAAAAAEludGUAAAAAQ2xybQAAAABN
cEJsYm9vbAEAAAAPcHJpbnRTaXh0ZWVuQml0Ym9vbAAAAAALcHJpbnRlck5hbWVURVhUAAAAAQAA
ADhCSU0EOwAAAAABsgAAABAAAAABAAAAAAAScHJpbnRPdXRwdXRPcHRpb25zAAAAEgAAAABDcHRu
Ym9vbAAAAAAAQ2xicmJvb2wAAAAAAFJnc01ib29sAAAAAABDcm5DYm9vbAAAAAAAQ250Q2Jvb2wA
AAAAAExibHNib29sAAAAAABOZ3R2Ym9vbAAAAAAARW1sRGJvb2wAAAAAAEludHJib29sAAAAAABC
Y2tnT2JqYwAAAAEAAAAAAABSR0JDAAAAAwAAAABSZCAgZG91YkBv4AAAAAAAAAAAAEdybiBkb3Vi
QG/gAAAAAAAAAAAAQmwgIGRvdWJAb+AAAAAAAAAAAABCcmRUVW50RiNSbHQAAAAAAAAAAAAAAABC
bGQgVW50RiNSbHQAAAAAAAAAAAAAAABSc2x0VW50RiNQeGxAaQAAAAAAAAAAAAp2ZWN0b3JEYXRh
Ym9vbAEAAAAAUGdQc2VudW0AAAAAUGdQcwAAAABQZ1BDAAAAAExlZnRVbnRGI1JsdAAAAAAAAAAA
AAAAAFRvcCBVbnRGI1JsdAAAAAAAAAAAAAAAAFNjbCBVbnRGI1ByY0BZAAAAAAAAOEJJTQPtAAAA
AAAQAMgAAAABAAIAyAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAE
AAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTScQAAAAAAAKAAEA
AAAAAAAAAjhCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAy
AAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA////////////
/////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////
////////////////A+gAAAAA/////////////////////////////wPoAAA4QklNBAgAAAAAABAA
AAABAAACQAAAAkAAAAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADTQAAAAYAAAAAAAAAAAAA
AKoAAAB4AAAADABLAEUAMAA0ADEANAA2ADMAMwBFAE4AQwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA
AQAAAAAAAAAAAAAAeAAAAKoAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA
AQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxv
bmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAKoAAAAAUmdodGxvbmcAAAB4AAAA
BnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAA
AAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRv
R2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpj
AAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRv
bWxvbmcAAACqAAAAAFJnaHRsb25nAAAAeAAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAA
AQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hU
TUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VI
b3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAA
AAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25l
AAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRz
ZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAI/8AAAAAAA
ADhCSU0EFAAAAAAABAAAAAI4QklNBCEAAAAAAFkAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8A
dABvAHMAaABvAHAAAAAVAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADUALgAx
AAAAAQA4QklNBAYAAAAAAAcACAEBAAEBAP/hDUFodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv
ADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4
OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3Jl
IDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpS
REYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMj
Ij4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6Y3JzPSJodHRwOi8vbnMuYWRv
YmUuY29tL2NhbWVyYS1yYXctc2V0dGluZ3MvMS4wLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8v
bnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5j
b20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIg
eG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0
PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIGNyczpB
bHJlYWR5QXBwbGllZD0iVHJ1ZSIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklD
Q1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNC0wOC0wN1Qx
MToyMjoyMiswMjowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTQtMDgtMDdUMTE6MzM6MTgrMDI6MDAi
IHhtcDpNZXRhZGF0YURhdGU9IjIwMTQtMDgtMDdUMTE6MzM6MTgrMDI6MDAiIGRjOmZvcm1hdD0i
aW1hZ2UvanBlZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3N0ZDODdERDE1MUVFNDExODU0
QkUwQjI4NjcwQUYxRCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3N0ZDODdERDE1MUVFNDEx
ODU0QkUwQjI4NjcwQUYxRCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjc3RkM4
N0REMTUxRUU0MTE4NTRCRTBCMjg2NzBBRjFEIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8
cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NzdG
Qzg3REQxNTFFRTQxMTg1NEJFMEIyODY3MEFGMUQiIHN0RXZ0OndoZW49IjIwMTQtMDgtMDdUMTE6
MzM6MTgrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzUuMSBX
aW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8
L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+
/+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNz
cE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQA
AABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAA
AkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVt
aQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgM
YlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENv
bXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2
MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1
AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJ
RUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAuSUVD
IDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVD
IDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2
Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYt
Mi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBML
AANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAA
AAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7
AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYA
ywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1
AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0C
ZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOW
A6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0F
HAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0Qbj
BvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJ
EAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuA
C5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkO
ZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGM
EaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIV
NBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkg
GUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAd
mR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJV
IoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3on
qyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1B
LXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0Yz
fzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5
OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECmQOdB
KUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iR
SNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQ
u1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1ka
WWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfVi
SWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2un
a/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV1
4XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBH
gKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCL
lov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cK
l3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowaj
dqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AA
sHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9
j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2
y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ
8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui8
6Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4
qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///+4AIUFkb2JlAGRAAAAAAQMAEAMCAwYAAAAAAAAA
AAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgIC
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

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: image/gif
content-transfer-encoding: base64
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/images/search-button.gif

iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAIAAACeHvEiAAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABl0RVh0
U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuND6NzHYAAAQ+SURBVDhPjZR7TFtVHMfb4TZw7CHbRGTj
lZBsIuoWX7hsLtmYYqL/+IfZP9P4hzEx+qfRxUTasq4DLJRRHqs8NjJ1U9mW6SYOyHgWqI/EPVzG
OkAyenrf9/Te3tv7ONdz21IgJISTk+ac2/P75Pv7nt/5WQ3DsCwbhhLVyCBi7+sCYSjKmg1Z1o1F
a7OL0zZtt1ity89bMGVhIKTzc1Kgne86yDTvpt3ZVPVW0rU9fCIn7CohGl5nu7+IzfyNNGVJFNax
eK9M+fnzFawnk2vIxL9s/UbGvZmuyTJBVTkh245Q5U7geh7ebNFlcXHgPAXp0Yl2tjGbO72B92bw
Tel4co2Psw2ZTN1mqiaLOPkkcDyNKYlJdb6vQSoFilN0Tf7nZ9a7w0Q0pcOWdZHWtRDP5vV8YwYW
Rbu3kKe24bwScsxpK6DPf6xH+QTIpKjgX7Z1Dz6NVZiIM48J364RfGmYxTetx2hTTvVWwvkUSFHi
rMiAz9B1k4LUGHfhGP3NFiye96bjSIwQ26xCmzXiS8NycF5M/aZ4UtnAnptKKu7RHmy2SYlNjVOe
XUnKmZLoYJ0WCuhUQJs8J107BFuwOzmRm+3qf78wp58B9nzibKU8HRD7PwdxOezlrwyELLCnCl8B
XfsE68kXAz1I4dU7Hnn4a3VuxlDC0tX9XEOeEBgy5Aes9wXgejP6iNYJP+19OSGK8OzXeNJCeisI
J66LbewPx3WJVyY+w1nA5nWw86BCsPqjS3xraWTCpDDNh9mRAUMh+e/eTuUFnCXSvUFLyF6Aa4E8
lQsH+pE0K/70KjaCa8zgvDvFv8YM8R7sOADHMeUh7P1RFQXJbwOOgkXu5InjZy2mSfbcsLMg8sdt
BO/ArlLsJYPrrT43MnrDkKdhRzkcGzI0UYvKhi6J1z8K2fIWewx7a02KOR1F/OifSAzCrlfwdWCb
6NpC6B80pIec7wg3OmRWFT0ZCwMkTDLNZcsotsL4pwKqu1OXKeHyu7hM8STdr4nBWX2uh3KXsSPD
hs7Bi0eJziotpii3fYSreB6UJ/jbLOH68uS+9qhMstpcH/YfuPZyfZd0TYv2fQpsz7HDw4YcpD0v
huyl3FgAxRjhygeJKHBit3S338Jfd6bkEe3HpekgMqtR19mp6LAd2PJDlaULFBzpekcCNIJ3Ge9L
Czct3x8BJ0vnQYWgpoxsfYtqrSA9+4AjmWzYfYBqOQQcRYncw57DVMsbYdcus+q6vzSrDskife7D
xW6tfo1fgBycSL5G/BbC1XtXH5w6CX+vQZqapOCVMH4BOFK2J5vISlxbPt1xTBfZhc6AV0hV4A0P
qFotiPK9pxJTS7vU/C566zei8cjKqQHns/w1R6o/LdGS5CBdpWdhbwPpLcf9dUkrcRQTdfuY7z+R
H/iRIq/UvVP/aRFGDo4LYx2wrw72uSODTdFbv6rkTMLL5eN/C0FRJisaAV8AAAAASUVORK5CYII=

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: image/png
content-transfer-encoding: base64
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/images/login-button.png

iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kHFw4uBff4hNgAAAAIdEVYdENv
bW1lbnQA9syWvwAAAR9JREFUOMvNlC1IQ1EUx3/nvKdvm8F9uCLKMNr8COKCgtFmWFUwWQSjyWYz
mPyIM4gGFWRpsGAWDAuKKAuKYBBE3QzvOa9hGp8+8SL7weFwy4977+F/ZGll3WARF2BhdgZHFcdR
VBVHHdQRVFpnVWl1EVQFEf3sXwUiwvLqBopl/lfoBwH1xqs9YfX8is3iIWfVC3tPfms2KZ+cUtwv
4fuBnT98N4a7+wfWtne5rt3YGYrrunQl4uwdVzgoVUJv+6spe50dZFLdXNZuea43/iY0xvD49IIA
i/MFetLJ8KREwQ8CpvLDTOZHEdHvo/cTibjHXGGabCYVLcthZNNJxoYGmRgfIRbzoi+HMHL9vQzk
+lCVNs1yWwhdgK2dI2vCD1weRJs4jsp4AAAAAElFTkSuQmCC

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/css;
	charset="iso-8859-1"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/reset.css

html {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
body {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
div {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
span {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
applet {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
object {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
iframe {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h1 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h2 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h3 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h4 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h5 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h6 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
p {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
blockquote {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
pre {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
a {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
abbr {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
acronym {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
address {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
big {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
cite {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
code {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
del {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
dfn {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
em {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
font {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
img {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
ins {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
kbd {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
q {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
s {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
samp {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
small {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
strike {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
strong {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
sub {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
sup {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
tt {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
var {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
b {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
u {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
i {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
center {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
dl {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
dt {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
dd {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
ol {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
ul {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
li {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
fieldset {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
form {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
label {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
legend {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
table {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
caption {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
tbody {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
tfoot {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
thead {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
tr {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
body {
	line-height: 1;
}
ol {
	list-style: none;
}
ul {
	list-style: none;
}
blockquote {
	quotes: none;
}
q {
	quotes: none;
}
blockquote::before {
	content: none;
}
blockquote::after {
	content: none;
}
q::before {
	content: none;
}
q::after {
	content: none;
}
:focus {
	outline: 0px;
}
ins {
	text-decoration: none;
}
del {
	text-decoration: line-through;
}
table {
	border-collapse: collapse; border-spacing: 0;
}

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/css;
	charset="iso-8859-1"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/general-styles.css

html {
	font: 80%/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
table {
	font: 80%/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
input {
	font: 80%/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
select {
	font: 80%/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
h1 {
	font-family: Georgia, Arial, Helvetica, sans-serif;
}
h2 {
	font-family: Georgia, Arial, Helvetica, sans-serif;
}
h3 {
	font-family: Georgia, Arial, Helvetica, sans-serif;
}
h1 {
	font-size: 1.6em;
}
h2 {
	font-size: 1.4em;
}
h3 {
	font-size: 1.3em;
}
h4 {
	font-size: 1.1em;
}
input {
	font-size: 100%;
}
select {
	font-size: 100%;
}
.clear {
	clear: both;
}
ul.list li {
	display: inline;
}
dl.list dd {
	display: inline;
}
ol.list {
	display: inline;
}
ul.separated li {
	margin-left: 0.3em; border-right-width: 0.1em; border-right-style: =
solid;
}
dl.separated dd {
	margin-left: 0.3em; border-right-width: 0.1em; border-right-style: =
solid;
}
ul.separated li.last-child {
	border-right-width: 0px;
}
dl.separated dd.last-child {
	border-right-width: 0px;
}
ul.separated li:last-child {
	border-right-width: 0px;
}
dl.separated dd:last-child {
	border-right-width: 0px;
}
.invisible {
	display: none !important;
}
.button input {
	width: auto !important;
}
.buttons {
	margin-top: 1em !important; position: relative;
}
.buttons input {
	width: auto !important;
}
.buttons .rightsided {
	right: 0px; position: absolute;
}
.half-ratio .buttons .rightsided {
	right: 3em;
}
form fieldset {
	margin-top: 1em;
}
form fieldset:first-child {
	margin-top: 0px;
}
form fieldset dl {
	margin: 0.4em 0px !important; clear: both;
}
form fieldset p {
	margin: 0.4em 0px !important; clear: both;
}
form fieldset dl dd {
	margin: 0.3em 0px;
}
form fieldset dl.checkable {
	margin-left: 29% !important;
}
form fieldset p.labeless {
	margin-left: 29% !important;
}
form fieldset p label {
	width: 30%; float: left;
}
form fieldset dl.checkable label {
	width: auto !important; float: none !important;
}
form fieldset p.checkable label {
	width: auto !important; float: none !important;
}
form fieldset p input {
	width: 40%;
}
form fieldset p select {
	width: 40%;
}
form fieldset p.checkable input {
	width: auto; vertical-align: top;
}
form fieldset dl.checkable dd input {
	width: auto; vertical-align: top;
}
form fieldset p.line-fields {
	text-align: left;
}
form fieldset p.line-fields label {
	padding: 0px; width: auto; float: none;
}
form fieldset p.line-fields input {
	padding: 0px; width: auto; float: none;
}
label.first-child {
=09
}
.static-content {
	margin-bottom: 1em;
}
.static-content * {
	text-align: justify;
}
.static-content ul li {
	list-style-type: square !important;
}
.static-content li ul li ul li {
=09
}
.static-content ol li {
	list-style-type: decimal;
}
.static-content ol li {
	margin-left: 2.5em;
}
.static-content ul li {
	margin-left: 2em;
}
.static-content p {
	margin: 0.8em 0px;
}
.static-content h1 {
	padding-left: 0px;
}
.static-content .toc {
	font-weight: bold;
}
.static-content ol {
	margin-left: 0.5em;
}
.static-content table {
	margin: 0px 1em 1.5em; width: 40em; clear: both;
}
#sidebar .static-content table {
	margin: 0px 0px 1.5em !important; width: 99% !important; text-align: =
center;
}
.static-content table th {
=09
}
.static-content table th {
	padding: 0.2em; width: 33%; text-align: center !important; font-size: =
1.2em;
}
.static-content table td {
	padding: 0.2em; width: 33%; text-align: center !important; font-size: =
1.2em;
}
.static-content table td.left {
	text-align: left !important;
}
.static-content table td strong a {
	font-weight: bold !important;
}
#sidebar .static-content table th {
	width: auto; vertical-align: top;
}
#sidebar .static-content table td {
	width: auto; vertical-align: top;
}
.static-content h1 {
	margin: 1em 0px;
}
.static-content h2 {
	margin: 1em 0px;
}
.static-content h3 {
	margin: 1em 0px;
}
.static-content h4 {
	margin: 1em 0px;
}
.static-content h5 {
	margin: 1em 0px;
}
.static-content h6 {
	margin: 1em 0px;
}
.static-content p {
	margin: 0px 1em 0px 0px; line-height: 1.3em; clear: both;
}
.static-content div {
	margin: 0px 1em 0px 0px; line-height: 1.3em; clear: both;
}
.static-content p {
	padding-left: 0.65em !important; clear: both; margin-bottom: 0.8em =
!important;
}
.static-content ul {
	padding-left: 0.65em !important; clear: both; margin-bottom: 0.8em =
!important;
}
.static-content h4 {
	clear: both;
}
.static-content ul {
	clear: both;
}
.static-content ol {
	clear: both;
}
.static-content li p {
	padding-left: 0px !important;
}
.static-content {
	font-size: 0.9em;
}
.static-content h1 {
	padding: 0.2em 4em 0.2em 0px !important; text-indent: 0.4em; font-size: =
1.2em !important; margin-bottom: 0.5em !important; white-space: nowrap;
}
.static-content h3 {
	padding: 0.2em 4em 0.2em 0px !important; text-indent: 0.4em; font-size: =
1.2em !important; margin-bottom: 0.5em !important; white-space: nowrap;
}
.static-content h1 {
	padding: 0.2em 4em 0.2em 0.2em !important;
}
.static-content h4 {
	padding-left: 0.65em !important;
}
.static-content li h4 {
	padding-left: 0px !important;
}
.anchor-to-content {
	text-align: right !important; font-weight: bold; margin-bottom: 1em;
}
.static-content address {
	padding-left: 0.65em; font-style: normal; font-weight: bold;
}
dl.errors {
	padding: 0.5em; border: 0.1em solid rgb(255, 85, 85); margin-right: =
1em; margin-bottom: 1em; background-color: rgb(255, 221, 221);
}
dl.errors dt {
	padding: 0.5em; font-weight: bold;
}
dl.errors dd {
	margin: 0.5em;
}
label.error {
	color: rgb(255, 85, 85);
}
p.error {
	color: rgb(255, 85, 85);
}
.required {
	color: rgb(255, 85, 85);
}
option.category-level-1 {
	padding-left: 0px;
}
option.category-level-2 {
	padding-left: 10px;
}
option.category-level-3 {
	padding-left: 20px;
}
option.category-level-4 {
	padding-left: 30px;
}
option.category-level-5 {
	padding-left: 40px;
}
option.category-level-6 {
	padding-left: 50px;
}
table {
	width: 100%;
}
table tbody tr td {
	text-align: center;
}
table tfoot tr th {
	text-align: right;
}
table tfoot tr td {
	text-align: center;
}
.floatable {
	margin: 0px !important; width: 50%; float: left;
}
.half-ratio.floatable {
	width: 40% !important;
}
.inline-proxy * {
	width: auto; display: inline !important;
}
.inline-proxy {
	width: auto; display: inline !important;
}
.line {
	clear: both; display: block !important;
}
.line-all-studies {
	clear: both; margin-bottom: 0.5em; display: block !important;
}
.borderless {
	border: currentColor !important;
}
.submit-trigger {
=09
}
body.sales-conditions {
	min-width: 7em !important;
}
#sales-conditions {
	padding: 1em;
}
.glued {
	margin-left: 0px !important;
}
.side-element {
	margin-left: 0.5em !important;
}
.bound-to-background {
	z-index: 1 !important;
}
.hidden-in-background {
	position: relative !important; z-index: -1 !important;
}
.special-in-background {
	z-index: -1 !important;
}
.glass {
=09
}
.centerized {
	text-align: center;
}
.hidden {
	display: none;
}
.result-is-empty {
	margin-left: 0.8em !important;
}

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/css;
	charset="iso-8859-1"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/layout-eu.css

body {
	height: 100%;
}
html {
	height: 100%;
}
#main-container {
	border-width: 0px 1px; border-style: solid; margin: 0px auto; width: =
1000px; height: 100%; min-height: 100%;
}
html > body #main-container {
	height: auto;
}
#body-container {
	margin: 0px auto; width: 98%; position: relative;
}
.buttons input {
	white-space: nowrap;
}
#header {
	height: 8.9em; overflow: hidden; position: relative;
}
#publications-categories {
	height: 3em; overflow: hidden; margin-top: 2em;
}
html > body #publications-categories {
	margin-top: 1.9em;
}
*:first-child + html #publications-categories {
	margin-top: 2em;
}
#europa-gateway {
	left: 0.22em; top: 1.1em; width: 25em; height: 2em; overflow: hidden; =
padding-top: 0.5em; font-size: 0.9em; position: absolute;
}
#europa-gateway a {
	padding: 0.9em; text-decoration: none;
}
#europa-gateway a span {
	visibility: hidden;
}
#navigation {
	top: 0px; text-align: right; right: 0px; padding-left: 25em; font-size: =
0.9em; margin-top: 1.5em; margin-right: 0.22em; position: absolute;
}
html > body #navigation {
	margin-top: 1.4em;
}
*:first-child + html #navigation {
	margin-top: 1.5em;
}
#navigation li {
	padding: 0px 0.3em; line-height: 1.4em;
}
*:first-child + html #navigation li {
	padding: 0px 0.5em 0px 0.3em; zoom: 1;
}
#navigation li.last-child {
	padding-right: 0px !important; border-right-color: currentColor; =
border-right-width: 0px; border-right-style: none;
}
#logo-slogan {
	width: 85%; float: left; position: relative;
}
#logo {
	margin: 2.7em 0px 0px;
}
#slogan {
	font: bold 1.1em/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
left: 27.5em; top: 4.8em; width: 31em; position: absolute; =
font-size-adjust: none; font-stretch: normal;
}
#language {
	top: 5.1em; right: 0px; position: absolute;
}
#search input {
	font-size: 0.9em !important;
}
#search select {
	font-size: 0.9em !important;
}
#catalogs {
	height: 2.2em; overflow: hidden; float: left;
}
#search {
	height: 2.2em; overflow: hidden; float: left;
}
#publications-categories {
	height: 3.2em;
}
#search {
	width: 50%; text-align: right; overflow: hidden; vertical-align: =
middle; white-space: nowrap;
}
#search form {
	margin-top: -1.1em;
}
html > body #search form {
	margin-top: -1em;
}
*:first-child + html #search form {
	margin-top: -1.1em;
}
#search-in-selection {
	display: inline !important;
}
*:first-child + html #search-in-selection {
	position: relative;
}
#search a {
	margin-left: 0.3em; position: relative;
}
html > body #search a {
	top: 0.05em; position: static;
}
*:first-child + html #search a {
	top: 0px; zoom: 1;
}
#search input#search-for {
	padding: 2px 1px; border: 1px solid rgb(127, 157, 185); width: 12em;
}
html > body #search input#search-for {
	padding: 4px 2px;
}
*:first-child + html #search input#search-for {
	padding: 2px 1px;
}
#search select {
	padding: 1px 0px; border: 1px solid rgb(127, 157, 185); width: 10em;
}
html > body #search select {
	padding: 3px 2px;
}
#label-for-search-term {
	padding: 0.4em 0.8em 0.2em;
}
html > body #label-for-search-term {
	padding-top: 0.4em; padding-bottom: 0.5em;
}
*:first-child + html #label-for-search-term {
	padding-top: 0.4em; padding-bottom: 0.3em;
}
#search form {
	margin-top: -1.1em !important;
}
#simple-search-go {
	margin-top: -0.15em !important;
}
#publications-categories {
	height: 3.25em !important;
}
#search a {
	top: 0.15em !important; position: relative !important;
}
#catalogs {
	width: 50%; white-space: nowrap;
}
#catalogs li {
	margin: 0px 0.3em 0px 0px; padding: 0.5em 0px 1em; display: inline; =
zoom: 1;
}
html > body #catalogs li {
	padding: 0.4em 0px 1.1em;
}
*:first-child + html #catalogs li {
	margin: 0px 0.3em 0px 0px; padding: 0.5em 0px 1em; display: inline; =
zoom: 1;
}
html > body #catalogs li {
	margin: 0px; display: inline-block;
}
html > body #catalogs li {
	padding: 0.5em 0px 1em;
}
#catalogs li a {
	padding: 0px 0.7em; font-family: Verdana, Geneva, Helvetica, =
sans-serif; font-size: 0.9em; font-weight: bold;
}
#content {
	overflow: hidden; float: left; display: inline;
}
html > body #content {
	display: block;
}
html > body #content::after {
	display: block; visibility: hidden; content: ".";
}
.triple#content {
	width: 60%; margin-left: 20%;
}
.double {
	width: 80%;
}
.left-sided {
	width: 80% !important; margin-left: 20% !important;
}
.full-size {
	clear: both;
}
.half-size {
	float: left;
}
.one-third-size {
	float: left;
}
.half-size {
	width: 48%;
}
.one-third-size {
	width: 31.5%;
}
.single#content {
	width: 100%;
}
#categories {
	width: 20%; margin-left: -78.75%; float: left;
}
html > body #categories {
	margin-left: -80%;
}
.single#categories {
	margin-left: -100%;
}
#sidebar {
	float: left;
}
html > body #sidebar {
	width: 20%;
}
#sidebar .static-content {
	border-width: 1px; border-style: solid; padding-top: 0.75em; =
margin-top: 0.9em; margin-bottom: 0px !important;
}
#sidebar .static-content p {
	margin: 0px !important; padding: 0px 0.6em 0.75em !important;
}
#details-caption {
	font: bold 0.9em/normal Verdana, Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
#categories p#selected-category {
	font: bold 0.9em/normal Verdana, Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
#sidebar h3 {
	font: bold 0.9em/normal Verdana, Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
#content h1 {
	font: bold 0.9em/normal Verdana, Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
#content h3 {
	font: bold 0.9em/normal Verdana, Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
#customer-basket {
	margin: 0.4em 0px 0px; padding: 0px;
}
html > body #customer-basket {
	height: auto; position: relative;
}
#view-basket {
	margin: 0px !important; width: 81px; height: 57px; right: -1px; bottom: =
0px; display: none; position: absolute; z-index: 4;
}
html > body #view-basket {
	right: 0px; display: block;
}
#customer-basket li.basket-anchor {
	margin: 0px; padding: 6px 40px 5px 8px;
}
#news-corner-box p strong span {
	font: bold 0.9em/normal Verdana, Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
#requisition-anchor strong {
	font: bold 0.9em/normal Verdana, Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
#login-form p strong {
	font: bold 0.9em/normal Verdana, Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
#requisition-anchor strong {
	font-size: 15px; font-weight: bold; margin-bottom: 0px;
}
#customer-basket li a {
	display: block;
}
#customer-basket li.to_req {
=09
}
#customer-basket li.basket-anchor {
=09
}
html > body #customer-basket li.to_req {
	position: relative; z-index: 5;
}
html > body #customer-basket li.basket-anchor {
	position: relative; z-index: 5;
}
#customer-basket li.to-req {
	margin: 0px; padding: 0px 60px 8px 8px; color: rgb(62, 81, 105); =
font-family: Verdana,Geneva,sans-serif; font-size: 12px;
}
#customer-basket li h3 a {
	font-size: 1em !important;
}
#customer-basket li a {
	display: block;
}
#profile {
	padding: 0px;
}
#profile h3 {
	margin: 0px !important; padding: 0.4em 0.75em; font-size: 1.17em;
}
#profile #logout {
	margin: 0px !important;
}
#profile li {
	font-size: 0.9em; border-top-width: 1px; border-top-style: solid;
}
#profile li.first-child {
	border-top-color: currentColor !important; border-top-width: medium =
!important; border-top-style: none !important;
}
#profile li a {
	padding: 0.3em 1em 0px !important; height: 0.1em; display: block;
}
html > body #profile li a {
	padding: 0.3em 1em !important; height: auto;
}
#profile #logout {
	font: bold 0.9em/normal Verdana, Arial, Helvetica, sans-serif =
!important; border-bottom-color: currentColor; border-bottom-width: =
medium; border-bottom-style: none; font-size-adjust: none !important; =
font-stretch: normal !important;
}
#profile #logout a {
	padding: 0.4em 0.9em !important; font-size: 1.17em;
}
#login-form {
	padding: 0.6em 0.7em;
}
#news-corner-box p strong span {
	font-family: Verdana,Geneva,sans-serif; font-size: 15px; margin-bottom: =
0px !important;
}
#login-form p strong {
	font-family: Verdana,Geneva,sans-serif; font-size: 15px; margin-bottom: =
0px !important;
}
#login-form form {
	margin-top: -0.75em;
}
#login-form p {
	margin: 0.3em 0px;
}
#login-form #login-caption {
	margin: 0px !important;
}
#login-form form fieldset p {
	margin: 0.3em 0px;
}
#login-form form fieldset p input {
	width: 80%;
}
#news-corner-box li a {
	font-family: Verdana,Geneva,sans-serif; font-size: 1em;
}
#login-form a {
	font-family: Verdana,Geneva,sans-serif; font-size: 1em;
}
#quick-login {
	right: 1.5%; margin-top: -2.1em !important; position: absolute;
}
*:first-child + html #quick-login {
	margin-top: -2.1em !important;
}
html > body #quick-login {
	margin-top: -1.95em !important;
}
#news-corner-box {
	padding: 0px;
}
#news-corner-box p {
	padding: 1px 8px !important; margin-bottom: 0px !important;
}
#news-corner-box p strong {
	padding: 5px 0px; display: block;
}
#news-corner-box ul {
	padding-top: 1px;
}
#news-corner-box li {
	padding: 0.6em;
}
#news-corner-box li.rss-feed {
	padding-left: 2em;
}
.sidebar-box {
	padding: 0.7em; margin-top: 0.8em;
}
.sidebar-box h3 {
	margin-bottom: 0.3em;
}
div.siderbar-box a {
	margin-bottom: 0.3em;
}
#categories p#filter-category {
	font: 0.95em/normal Verdana, Arial, Helvetica, sans-serif; =
margin-right: 1em; font-size-adjust: none; font-stretch: normal;
}
#categories p#selected-category {
	font: 0.95em/normal Verdana, Arial, Helvetica, sans-serif; =
margin-right: 1em; font-size-adjust: none; font-stretch: normal;
}
#categories ul {
	font: 0.95em/normal Verdana, Arial, Helvetica, sans-serif; =
margin-right: 1em; font-size-adjust: none; font-stretch: normal;
}
#categories dl {
	font: 0.95em/normal Verdana, Arial, Helvetica, sans-serif; =
margin-right: 1em; font-size-adjust: none; font-stretch: normal;
}
#categories dl {
	margin-bottom: 0.3em;
}
#categories .categories li {
	border-bottom-width: 1px; border-bottom-style: solid;
}
#categories .catalogs li {
	border-bottom-width: 1px; border-bottom-style: solid;
}
#categories p#selected-category {
	border-bottom-width: 1px; border-bottom-style: solid;
}
#categories li.active {
	border-bottom-width: 1px; border-bottom-style: solid;
}
#categories dl dt {
	border-bottom-width: 1px; border-bottom-style: solid;
}
#categories p#selected-category {
	border-top-width: 1px; border-top-style: solid;
}
#categories p#filter-category strong {
	font-weight: normal;
}
#categories p#selected-category strong {
	font-weight: normal;
}
#categories .catalogs li {
	padding: 0.3em 0px; font-weight: normal !important;
}
#categories p#selected-category {
	padding: 0.3em 0px; font-weight: normal !important;
}
#categories p#filter-category {
	padding: 0.3em 0px; font-weight: normal !important;
}
#categories .catalogs li {
	padding-left: 2.1em; display: block;
}
#categories p#selected-category span {
	padding-left: 2.1em; display: block;
}
#categories .catalogs li a {
	font-size: 1em;
}
#categories p.bundle#selected-category span {
=09
}
#categories .bundle.categories li a {
=09
}
p#refine-query {
	padding: 0.1em 0px 0.5em !important; line-height: normal; font-family: =
Verdana, Arial, Helvetica, sans-serif; font-size: 1.1em; font-style: =
normal; font-variant: normal; font-weight: bold !important; margin-left: =
0em; font-size-adjust: none; font-stretch: normal;
}
#categories dl dt {
	border-top-width: 1px; border-top-style: solid;
}
#categories li.active span a {
	position: relative;
}
#categories li.active span {
	position: relative;
}
#categories li.active {
	position: relative;
}
#categories ul.uncaptioned {
=09
}
.category-path {
	margin-bottom: 0px !important;
}
.category-path ul {
	margin-bottom: 0px !important;
}
.category-path {
	margin-bottom: 1em !important;
}
.category-path ul {
	padding: 0.3em 0px 0px;
}
#categories li {
	margin: 0px; padding: 0.3em 0.8em;
}
.category-path li {
	margin: 0px; padding: 0.3em 0.8em;
}
.category-path li {
	padding-left: 1.3em !important;
}
#categories li a {
	font-size: 0.9em;
}
#categories li span {
	display: block;
}
#categories ul.categories li {
=09
}
#categories ul.categories li span {
	margin-left: 1.3em;
}
#categories ul.categories li a {
	font-size: 1em; display: block;
}
#categories ul.categories li.active span {
	padding-left: 1.3em; margin-left: 0em;
}
#categories ul.drill-down li.category-level-1 {
=09
}
#categories ul.drill-down li.category-level-2 {
	margin-left: 5px;
}
#categories ul.drill-down li.category-level-3 {
	margin-left: 10px;
}
#categories ul.drill-down li.category-level-4 {
	margin-left: 15px;
}
#categories ul.drill-down li.category-level-5 {
	margin-left: 20px;
}
#categories dl dd {
	font-size: 0.9em;
}
#categories dl dt {
	line-height: 1.8em; margin-bottom: 0.2em;
}
#categories dl dt span {
	padding-left: 2em;
}
#categories dl dd {
	padding: 0.2em 0.9em;
}
#categories dl dd.more {
	padding-right: 0px; padding-left: 0px;
}
#categories dl dd.last-child {
	padding-bottom: 0.5em;
}
#categories dl dd select {
	width: 95%;
}
#breadcrumb {
	left: 0px; top: 10em; width: 165%; height: 1.9em; right: 0px; overflow: =
hidden; padding-left: 1em; margin-bottom: 0px !important; white-space: =
nowrap; position: absolute; z-index: 1;
}
.double#content #breadcrumb {
	width: 123.7%;
}
.single#content #breadcrumb {
	width: 100%;
}
html > body #content #breadcrumb {
	width: auto !important;
}
#breadcrumb li {
	line-height: 1.85em; font-size: 0.95em;
}
html > body #content #breadcrumb {
	top: 9.8em;
}
*:first-child + html #content #breadcrumb {
	top: 10em;
}
*:first-child + html #content #breadcrumb li {
=09
}
#content {
	padding-top: 0.35em !important;
}
#categories {
	padding-top: 0.35em !important;
}
#details-caption {
	padding: 0px 0px 0.5em; font-size: 1.1em; margin-top: 0em; =
margin-bottom: 0.1em;
}
#content h1 {
	padding: 0px 0px 0.5em; font-size: 1.1em; margin-top: 0em; =
margin-bottom: 0.1em;
}
#content h3 {
	padding: 0px 0px 0.5em; font-size: 1.1em; margin-top: 0em; =
margin-bottom: 0.1em;
}
#publication h2 {
	padding: 0.2em 0px; margin-top: 0px !important; margin-right: 1em;
}
#content h4 {
	padding: 0.2em 0px; margin-top: 0px !important; margin-right: 1em;
}
#content p {
	margin: 0px 1em 0px 0px; line-height: 1.3em;
}
#content div {
	margin: 0px 1em 0px 0px; line-height: 1.3em;
}
#content p {
	margin-bottom: 1em;
}
#content ul {
	margin-bottom: 1em;
}
#content form fieldset p {
	margin-right: 0px;
}
#content .news h4 {
	text-indent: 0px;
}
#content ul.news {
	padding-left: 0.5em !important; font-size: 1.1em;
}
#content div.news {
	font-size: 1em;
}
#content .news li {
	clear: both; margin-top: 1em; margin-left: 0em; list-style-type: none =
!important;
}
#content .news li div.teaser p {
	margin-right: 0px !important;
}
#content .news li a.more {
	display: none;
}
#content .news li p.details {
	margin-bottom: 0.3em !important;
}
#content .news li h4 {
	margin-bottom: 0.3em !important;
}
#addresses-list li {
	width: 49%; height: 7em; overflow: hidden; padding-bottom: 1em; float: =
left; position: relative;
}
#addresses-list li p {
	top: 0px; right: 1em; position: absolute;
}
#addressses-list li p {
	padding: 0.1em 0.2em 0.1em 0.5em; text-align: center; font-size: 0.9em; =
font-weight: bold;
}
#addresses-list li p a {
	font-size: 0.9em; font-weight: bold; display: block;
}
#addresses-list li p.delete-address {
	top: 2em;
}
#select-catalog input.selection {
	width: auto !important;
}
#select-catalog select {
	vertical-align: top;
}
#publications li {
	margin-bottom: 1em;
}
#focus-on-cover {
	float: left;
}
#focus-on-publication {
	float: left;
}
#focus-on-cover {
	width: 20.85%; text-align: center; overflow: hidden; padding-top: =
0.4em; margin-right: 0.9em !important;
}
#focus-on-cover img {
	width: 120px; height: 170px;
}
#focus-on-publication {
	width: 76%; margin-right: 0px !important;
}
.single#focus-on-publication {
	width: 100%;
}
#focus-on {
	text-align: left; font-family: Verdana, Arial, Georgia, Helvetica, =
sans-serif; margin-top: 0.2em; position: relative;
}
#focus-on h1 {
	font: bold 1.1em/normal Verdana, Arial, Georgia, Helvetica, sans-serif; =
margin: 0.1em 0px 0.2em; padding: 0px 0px 0.5em; text-align: left; =
font-size-adjust: none; font-stretch: normal;
}
#focus-on {
	margin-bottom: 0px !important;
}
#focus-on p {
	margin-bottom: 0px !important;
}
#focus-on .cover img {
	margin-top: 0.2em; display: block;
}
#focus-on #focused-item {
	padding: 0.2em 0px; line-height: 1.1em; font-family: Georgia, Arial, =
Helvetica, sans-serif; font-size: 195% !important; font-weight: normal; =
margin-top: 0px !important; margin-right: 1em; margin-bottom: 0.3em =
!important;
}
#focus-on #focused-item a {
	text-decoration: none;
}
#focus-on #focus-on-description p {
	margin-bottom: 0px;
}
#focus-on-description {
	font-size: 0.85em; margin-right: 0px !important;
}
#focus-on .more {
=09
}
#recommendations {
	font: bold 14px/normal Verdana, Arial, Helvetica, sans-serif; margin: =
0px 0.86em 0px 0px !important; padding: 0.2em 0px; text-indent: 0.6em; =
clear: both; font-size-adjust: none; font-stretch: normal;
}
#recommendations span {
	display: block; position: relative;
}
.publication-details {
	width: 31%; font-family: Verdana, Arial, Georgia, sans-serif; =
font-size: 0.9em; margin-right: 1.1em !important; float: left;
}
.recommendation .cover {
	clear: both !important; margin-top: 0.3em; margin-left: 0.1em; display: =
block;
}
.recommendation .cover .recommend-shrink {
	width: 93px; height: 130px;
}
.publication-details h5 {
	line-height: 1.2em; clear: both; font-size: 1.1em; margin-bottom: 0.8em =
!important; margin-left: 0.1em;
}
.publication-details p {
	font-size: 0.9em; margin-right: 0px !important;
}
.recommendation h5 {
=09
}
.recommendation p {
	font-size: 0.95em !important; margin-bottom: 1.1em !important;
}
.recommendation .more {
	font-family: Georgia, Arial, Helvetica, sans-serif; font-weight: bold =
!important; display: block;
}
#content fieldset h4 {
	line-height: 1.6em;
}
fieldset.advanced-search h4 {
	line-height: 1.7em !important; font-family: Verdana, Arial, Helvetica, =
sans-serif; font-size: 1em !important;
}
fieldset.advanced-search {
	position: relative;
}
fieldset.advanced-search p label {
	padding: 0px 1em; width: auto; float: none; display: inline;
}
fieldset.advanced-search input {
	vertical-align: middle;
}
.advanced-search dl {
	line-height: 1.6em; padding-left: 1em;
}
.advanced-search dl dt {
	padding-right: 1.9em; font-size: 0.9em; display: inline;
}
.advanced-search dl dd {
	padding-right: 4em; display: inline;
}
.single.advanced-search {
	clear: both;
}
.multi.advanced-search {
	width: 24%; margin-top: 0px; float: left;
}
html > body .multi.advanced-search {
	width: 25%;
}
#search-term-conditions dd {
=09
}
#target-audience {
	width: 10em;
}
#content fieldset h4 span {
	padding-left: 1.2em; cursor: pointer;
}
#languages dl dd {
	margin: 0px; padding: 0px; width: 18%; float: left;
}
#languages #select-languages {
	width: 100%; display: table;
}
#languages #select-languages span {
	display: table-row;
}
.advanced-search-button {
	width: auto !important; right: 1.1em; bottom: 0.3em; padding-left: =
1.8em !important; display: block; position: absolute;
}
.advanced-search-button input {
	width: auto !important; font-size: 0.9em;
}
.advanced-search-placeholder {
	margin: 1em 0px 0px !important; width: 100%; height: auto; position: =
relative;
}
*:first-child + html #search-term-conditions dd {
	margin: 0.1em 0px; zoom: 1;
}
#languages .advanced-search-button {
	bottom: 0px !important;
}
#publications-list {
	position: relative;
}
.other-publications {
	padding: 0.1em 0px !important;
}
.empty-result {
	padding: 0px 0.8em;
}
.bundles .empty-result {
	padding: 0px 1em;
}
div.browse-results {
	margin: 0px !important; height: 1.65em; text-indent: 0.8em; position: =
relative;
}
div.browse-results strong {
	font: bold 1.1em/1.32em Verdana, Arial, Georgia, sans-serif !important; =
font-size-adjust: none !important; font-stretch: normal !important;
}
#list-sorting {
	top: 0px; right: -0.1em; bottom: 0px; position: absolute;
}
html > body #list-sorting {
	right: 0px;
}
#list-sorting select {
	margin: 0px; padding: 0.25em; font-size: 0.9em; vertical-align: middle;
}
#list-sorting label {
	padding: 0px 0.5em 0px 1em;
}
html > body #list-sorting select {
	vertical-align: baseline;
}
*:first-child + html div.browse-results {
	margin-top: 0.4em !important;
}
*:first-child + html div.browse-results #list-sorting {
	top: -0.1em;
}
*:first-child + html div.browse-results #list-sorting select {
	vertical-align: middle;
}
#result-options {
	margin: 0px 0px 0px 0.35em !important; width: 100%; height: 1.5em; =
padding-top: 0.5em;
}
#result-options li {
	float: left; display: block !important;
}
html > body #result-options li form {
	margin-top: 0.1em;
}
#result-options li {
	margin: 0.1em 0px; padding: 0px 0.5em; border-right-width: 1px; =
border-right-style: solid;
}
html > body #result-options {
	height: auto;
}
#result-options li a.submit-trigger {
	padding-top: 0em !important; display: none;
}
html > body .search-result-list #result-options li a.submit-trigger {
	padding-top: 0.05em !important;
}
*:first-child + html #result-options li a.submit-trigger {
	padding-top: 0px !important;
}
#modify-search-trigger-placeholder {
	margin-top: 0em !important;
}
html > body #modify-search-trigger-placeholder {
	margin-top: 0.1em !important;
}
*:first-child + html li#modify-search-trigger-placeholder {
	margin-top: 0em !important;
}
#result-options li a.submit-trigger {
	padding-top: 0px !important;
}
#result-options li.last-child {
	border-right-color: currentColor; border-right-width: medium; =
border-right-style: none;
}
#result-options li input {
	padding: 0px !important; overflow: visible; font-size: 0.9em; float: =
left;
}
#result-options li a {
	font-size: 0.9em;
}
#publications-navigation {
	padding-top: 0.55em; clear: both; margin-right: 0px !important;
}
*:first-child + html #publications-navigation {
	padding-top: 0.2em;
}
.paging {
	height: 1px; text-align: right; line-height: 1.8em; padding-right: =
1.2em; font-size: 0.9em; margin-top: 0.1em; position: relative;
}
html > body .paging {
	height: auto;
}
.paging li.item {
	text-indent: 1em; float: left; position: relative;
}
.paging li a {
	font-weight: bold;
}
.paging li.page-size {
	left: 50%; width: 14em; text-align: center; overflow: hidden; =
margin-left: -7em; position: absolute;
}
.paging li.page-size ul {
	margin-top: -0.2em; margin-bottom: 0px !important; white-space: nowrap;
}
html > body .paging li.page-size ul {
	margin-top: 0px;
}
*:first-child + html .paging li.page-size ul {
	margin-top: -0.2em;
}
.paging li.page-size ul li {
	white-space: nowrap;
}
#publications li {
	height: 0.1em; clear: both; font-family: Verdana, Arial, Georgia, =
sans-serif; font-size: 0.9em; margin-bottom: 0.2em; border-bottom-width: =
1px; border-bottom-style: solid; position: relative;
}
html > body #publications li {
	height: auto; overflow: hidden;
}
.publication-details.recommendation span.cover {
	padding: 6px 5px 10px 2px; text-align: center; margin-bottom: 0px; =
float: left;
}
#publications li .cover {
	padding: 6px 5px 10px 2px; text-align: center; margin-bottom: 0px; =
float: left;
}
#publications li .cover img {
	width: 93px; height: 130px; display: block;
}
#publications li .ordering {
	width: 78%; clear: right; float: left;
}
#publications li h4 {
	font-weight: bold;
}
#publications li dl dd {
	display: inline;
}
#publications li dl {
	margin: 0.2em 0px !important; font-size: 0.95em;
}
#publications li div.abstract p {
	margin-bottom: 0px;
}
#publications li div.abstract div {
	margin-bottom: 0px;
}
#publications li div.abstract ul {
	margin-bottom: 0px;
}
#publications li div.abstract {
	margin: 0.1em 0px !important; font-size: 0.95em;
}
#publications li p.reminder-title {
	margin: 0.1em 0px !important; font-size: 0.95em;
}
#publications li p.abstract {
	margin: 0.1em 0px !important; font-size: 0.95em;
}
#publications li div.abstract {
	margin-top: 0.2em !important; position: relative;
}
#publications li p.abstract {
	margin-top: 0.2em !important; position: relative;
}
#publications li .abstract .contents {
	padding-right: 0.5em; margin-right: 0px !important; display: inline;
}
html > body #publications li .abstract .contents {
	padding-right: 0.1em;
}
*:first-child + html #publications li .abstract .contents {
	padding-right: 0.5em;
}
#publications li div.abstract .more-reading {
	font-weight: bold;
}
#publications li p.abstract .more-reading {
	font-weight: bold;
}
#publications li dl.authors-and-years {
	line-height: 1.3em;
}
#publications .details dd a {
	font-size: 0.9em;
}
#publications .details div a {
	font-size: 0.9em;
}
#publications .details p a {
	font-size: 0.9em;
}
#publications table.editions-info {
	width: 80%; margin-top: 0.5em;
}
#publications table.editions-info td {
	padding: 0.2em 2em 0.2em 0px; white-space: nowrap;
}
#publications table.editions-info th {
	padding: 0.2em 2em 0.2em 0px; white-space: nowrap;
}
#publications form p {
	margin-top: 0.5em;
}
*:first-child + html #publications form p span {
	top: 0em; padding-top: 0.9em !important; position: relative;
}
#publications p.sales-agents {
	font: bold 1em/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
margin: 0.5em 0px; float: left; font-size-adjust: none; font-stretch: =
normal;
}
#publications p.available-formats {
	font: bold 1em/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
margin: 0.5em 0px; float: left; font-size-adjust: none; font-stretch: =
normal;
}
#publications p.sales-agents {
=09
}
p#details-caption {
	margin-bottom: 0.1em;
}
#publication {
	font-family: Verdana, Arial, Georgia, Helvetica, sans-serif; =
margin-right: 1.6em !important;
}
#publication .cover {
	margin: 0px !important; padding: 2px 4px 2px 2px; text-align: center; =
float: left;
}
html > body #publication .cover {
	padding: 3px 4px 2px 2px;
}
*:first-child + html #publication .cover {
	padding-top: 2px;
}
#publication .cover {
	padding-top: 1px !important;
}
#publication .cover img {
	width: 113px; height: 159px;
}
#publication h1 {
	margin: 0px; padding: 0px; line-height: 1.2em; font-family: Georgia, =
Helvetica, sans-serif; font-size: 195% !important; font-weight: normal;
}
#publication #description {
	margin: 0px 0px 1em 0.8em; padding: 0px; width: 76%; float: left;
}
#publications p.sales-agents a {
	padding: 0.2em 2em 0.2em 0.5em; display: block;
}
#publications p.available-formats a {
	padding: 0.2em 2em 0.2em 0.5em; display: block;
}
#publication #authors {
	padding-top: 0px; margin-top: 0px;
}
*:first-child + html #publication #authors {
	padding-top: 0.55em;
}
.publication-filters dt {
	font-weight: bold;
}
#options {
	font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; font-size: =
0.9em; display: inline;
}
.publication-filters dd {
	font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; font-size: =
0.9em; display: inline;
}
.publication-filters dt {
	font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; font-size: =
0.9em; display: inline;
}
#publication p.copyright {
	margin-bottom: 0px;
}
html > body #publication p.copyright {
	margin-bottom: 1em;
}
*:first-child + html #publication p.copyright {
	margin-bottom: 0px;
}
#publication h1 {
	margin-bottom: 0px;
}
#publication h2 {
	font: bold 0.95em/normal Verdana, Arial, Georgia, Helvetica, sans-serif =
!important; font-size-adjust: none !important; font-stretch: normal =
!important;
}
#publication h3 {
	font: bold 0.95em/normal Verdana, Arial, Georgia, Helvetica, sans-serif =
!important; font-size-adjust: none !important; font-stretch: normal =
!important;
}
#publication p {
	margin: 0.5em 0px 0px; font-size: 0.85em !important;
}
#publications .editions-info {
	text-align: left;
}
#publication .editions-info {
	text-align: left;
}
#publication .editions-info td.catalogue-number {
	width: 30%; white-space: nowrap;
}
#publication .editions-info th.catalogue-number {
	width: 30%; white-space: nowrap;
}
#publication .editions-info td.edition-identificators {
	width: 25%; white-space: nowrap;
}
#publication .editions-info th.edition-identificators {
	width: 25%; white-space: nowrap;
}
#publication .editions-info td.edition-information {
	width: 25%; white-space: nowrap;
}
#publication .editions-info th.edition-information {
	width: 25%; white-space: nowrap;
}
#publication .editions-info td.price {
	width: 15%;
}
#publication .editions-info th.price {
	width: 15%;
}
#publication .editions-info td.catalogue-number {
	padding-left: 5px !important;
}
#publication .editions-info th.catalogue-number {
	padding-left: 5px !important;
}
#publication .editions-info td.edition-identificators {
	padding-left: 5px !important;
}
#publication .editions-info th.edition-identificators {
	padding-left: 5px !important;
}
.subscription-information {
	margin: 0.2em 0px; width: 30%; text-align: left; font-family: Verdana, =
Arial, Georgia, sans-serif; font-size: 0.95em;
}
.subscription-information th {
	width: 35%;
}
.subscription-information td {
	padding: 0.1em 0px; text-align: left !important;
}
#subscriptions th {
	width: 16%;
}
#publications .editions-info th {
	width: 25%;
}
#publication .editions-info th {
	width: 25%;
}
#publications .editions-info td {
	margin: 0px; text-align: left;
}
#publications .editions-info th {
	margin: 0px; text-align: left;
}
#subscriptions th {
	margin: 0px; text-align: left;
}
#subscriptions td {
	margin: 0px; text-align: left;
}
#publication .editions-info td {
	margin: 0px; text-align: left;
}
#publication .editions-info th {
	margin: 0px; text-align: left;
}
#publication .editions-info .aligned-to-center {
	text-align: center !important;
}
#subscriptions th {
	font-size: 1.2em;
}
#publications .editions-info th {
	font-size: 1.2em;
}
#publication .editions-info th {
	font-size: 1.2em;
}
#subscriptions td {
	font-family: Verdana, Helvetica, sans-serif; font-size: 1.1em;
}
#publications .editions-info td {
	font-family: Verdana, Helvetica, sans-serif; font-size: 1.1em;
}
#publication .editions-info td {
	font-family: Verdana, Helvetica, sans-serif; font-size: 1.1em;
}
#subscriptions td {
	padding: 0.4em 0.2em; vertical-align: middle;
}
#subscriptions td.order span {
	white-space: nowrap;
}
#publication .editions-info td {
	padding: 0.1em 0px !important;
}
#publication .editions-info td p {
	margin: 0px !important; width: 90%; clear: both; float: left;
}
#publication .editions-info tfoot td form select {
	width: 95%; margin-left: 5px;
}
#publication .editions-info tfoot td form input.noscript-input {
	margin-left: 4px;
}
#publication .editions-info tfoot td {
	padding: 0.3em 0px !important;
}
#publication .editions-info tfoot th {
	padding: 0.3em 0px !important;
}
#publication .editions-info tfoot td.aligned-to-center {
	text-align: left !important; position: relative;
}
#publication .editions-info tfoot td.aligned-to-center dl {
	margin-top: 0px; float: left; position: relative;
}
#publication .editions-info tfoot td.edition-options {
	padding: 0px 0px 2em 0.4em !important;
}
#publication .editions-info tfoot .background-print-on-demand =
.space-print-on-demand {
	padding-bottom: 0.5em !important;
}
html > body #publication .editions-info tfoot td.aligned-to-center dl {
	margin-top: -0.4em;
}
*:first-child + html #publication .editions-info tfoot =
td.aligned-to-center dl {
	margin-top: 0px;
}
#publication .editions-info tfoot dl dd {
	margin: 0px; padding: 0px;
}
#publication .editions-info .headline-print-on-demand {
	padding: 0px !important; font-size: 1.2em;
}
#publication .editions-info .headline-print-on-demand h3 {
	margin: 0.5em 0px 0px 0.3em; padding: 0px; float: left;
}
#publication .editions-info .description-print-on-demand {
	margin: 0px 0px 0px 0.4em;
}
#publication .editions-info .language-print-on-demand {
	padding-left: 10px !important;
}
#selected-language-pod {
	margin: 0px 0px 0px 13.2em;
}
#options {
	height: 32px; clear: both; margin-top: 0em; margin-bottom: 0px =
!important; display: block !important;
}
#options li {
	margin: 0px !important; padding: 0.2em 0.5em 0.3em; float: left;
}
#publication #send-publicaiton-as-email {
	width: 24px; height: 32px;
}
#publication #print-publication-details {
	width: 24px; height: 32px;
}
#publication #add-to-bookmarks {
	width: 24px; height: 32px;
}
#publication #add-to-bookmarks {
	padding-left: 0px !important;
}
#publication #send-publicaiton-as-email a {
	width: 100%; height: 100%; display: block;
}
#publication #print-publication-details a {
	width: 100%; height: 100%; display: block;
}
#publication #add-to-bookmarks a {
	width: 100%; height: 100%; display: block;
}
#options li a {
	white-space: nowrap;
}
#editions .download span {
	margin: 0px 0px 0.3em; padding: 0.3em 0.5em 0.4em; display: block;
}
#editions .download span a {
	padding-left: 1.5em;
}
#editions {
	clear: both;
}
html > body #editions {
	margin-top: 0.5em; position: relative;
}
#editions dd {
	padding-top: 0.4em; padding-bottom: 0.5em;
}
#editions dd h5 {
	font-size: 0.9em;
}
#publications form p span {
	padding: 0.6em 0em 0.7em 0.6em;
}
#subscriptions td.order span {
	padding: 0.6em 0em 0.7em 0.6em;
}
#editions form span {
	padding: 0.6em 0em 0.7em 0.6em;
}
html > body #publications form p span {
	padding: 0.6em 0.6em 0.7em 1.6em;
}
html > body #subscriptions td.order span {
	padding: 0.6em 0.6em 0.7em 1.6em;
}
html > body #editions form span {
	padding: 0.6em 0.6em 0.7em 1.6em;
}
*:first-child + html #publications form p span {
	padding: 0.6em 0.1em 0.7em 0.75em !important;
}
*:first-child + html #subscriptions td.order span {
	padding: 0.6em 0.1em 0.7em 0.75em !important;
}
*:first-child + html #editions form span {
	padding: 0.6em 0.1em 0.7em 0.75em !important;
}
#editions span.not-avilable-for-ordering {
	padding: 0.4em 0.6em 0.3em 2.2em; top: 0.15em; font-family: "Trebuchet =
MS", Arial, Helvetica, sans-serif !important; font-size: 1.1em =
!important; margin-bottom: 0px !important; position: relative;
}
html > body #editions span.not-avilable-for-ordering {
	top: 0em;
}
*:first-child + html #editions span.not-avilable-for-ordering {
	top: 0.15em;
}
#publication .editions-info tfoot .print-on-demand td.price {
	text-align: center !important;
}
#publication .editions-info tfoot .print-on-demand-help {
	text-align: right;
}
#publication .editions-info tfoot .print-on-demand .policy {
	padding: 0.4em 0.9em; margin-left: 0.3em;
}
html > body #publication .editions-info tfoot .print-on-demand .policy {
	padding: 0.25em 0.9em;
}
*:first-child + html #publication .editions-info tfoot .print-on-demand =
.policy {
	padding: 0.4em 0.75em;
}
#publication .editions-info tfoot .print-on-demand-notification td div {
	margin-right: 0px;
}
#publication .editions-info tfoot .print-on-demand-notification td p {
	margin-right: 0px;
}
#publication .editions-info tfoot .print-on-demand-notification td p {
	margin: 0px !important; width: 100% !important;
}
#recommend-publication-here {
	margin-right: 1em;
}
#show-related {
	margin: 0px; width: 50%; font-size: 1em;
}
#show-serials {
	margin: 0px; width: 50%; font-size: 1em;
}
#show-related span {
	float: left;
}
#show-related {
	float: left;
}
#show-serials span {
	float: right;
}
#show-serials {
	float: right;
}
#show-related span {
	display: block;
}
#show-serials span {
	display: block;
}
#show-related a {
	padding: 1em 2em 1.4em 1em; display: block;
}
#show-serials a {
	padding: 1em 2em 1.4em 1em; display: block;
}
html > body #show-related a {
	padding: 1em 2em 1.1em 1em;
}
html > body #show-serials a {
	padding: 1em 2em 1.1em 1em;
}
*:first-child + html #show-related a {
	padding: 1em 2em 1.1em 1em;
}
*:first-child + html #show-serials a {
	padding: 1em 2em 1.1em 1em;
}
.filter-attributes .remove-entry-value a {
	padding-right: 1.5em;
}
#order h1 {
	text-indent: 0.45em; font-size: 1.1em; margin-bottom: 0px;
}
#order h3 {
	text-indent: 0.45em; font-size: 1.1em; margin-bottom: 0px;
}
#order p.note {
	padding-left: 0.5em;
}
#order p.error {
	padding-left: 0.5em;
}
#first-basket-step {
	line-height: 2em; text-indent: 0.5em; font-size: 1.1em; font-weight: =
bold; margin-bottom: 0.5em !important;
}
#second-basket-step {
	line-height: 2em; text-indent: 0.5em; font-size: 1.1em; font-weight: =
bold; margin-bottom: 0.5em !important;
}
#third-basket-step {
	line-height: 2em; text-indent: 0.5em; font-size: 1.1em; font-weight: =
bold; margin-bottom: 0.5em !important;
}
#order .title {
	text-align: left;
}
#order tbody td {
	border-bottom-width: 10px; border-bottom-style: solid;
}
#order thead th {
	padding: 0px 0.5em;
}
#order thead th.operation {
	padding: 0px; width: 40px;
}
#order tbody th {
	padding: 0.6em 0.5em;
}
#order tbody td {
	padding: 0.6em 0.5em;
}
#order tfoot td {
	padding: 0.2em 0.3em;
}
#order tfoot td {
	text-indent: 1em; border-bottom-width: 10px; border-bottom-style: =
solid;
}
#order tbody td input {
	padding: 1px !important; border: 1px solid rgb(108, 139, 170); =
text-align: center; font-size: 0.9em;
}
#order tbody td.item-option {
	vertical-align: middle;
}
#order tbody td.item-option a {
	padding: 0.5em 0px; width: 100%; text-decoration: none; display: block;
}
#order tbody td.item-option a span {
	width: 40px; overflow: hidden; display: block; white-space: nowrap; =
visibility: hidden;
}
#order .buttons {
	margin: 1em 3.5em 0px 0px !important; text-align: right; font-size: =
0.9em;
}
.user-action .buttons input {
	padding: 0px 0.5em; border: currentColor; overflow: visible; =
font-weight: bold;
}
#registration-fields p.buttons input {
	padding: 0px 0.5em; border: currentColor; overflow: visible; =
font-weight: bold;
}
#order .buttons input {
	padding: 0px 0.5em; border: currentColor; overflow: visible; =
font-weight: bold;
}
.buttons #refuse-cookie {
	border: currentColor; overflow: visible; font-weight: bold;
}
.buttons #refuse-all-cookie {
	border: currentColor; overflow: visible; font-weight: bold;
}
.buttons #accept-cookie {
	border: currentColor; overflow: visible; font-weight: bold;
}
#registration-fields h4 {
	margin-right: 0px !important;
}
#order .buttons input.widther {
	width: 10em !important;
}
.buttons #refuse-cookie {
	width: 10em !important; text-align: center; margin-bottom: 10px;
}
.buttons #refuse-all-cookie {
	width: 10em !important; text-align: center; margin-bottom: 10px;
}
.buttons #accept-cookie {
	width: 10em !important; text-align: center; margin-bottom: 10px;
}
#cookie-refuse {
	padding-left: 0.65em;
}
#cookie-refuse-all {
	padding-left: 0.65em;
}
#cookie-accept {
	padding-left: 0.65em;
}
#shipping-address-form {
=09
}
#shipping-address-form dl.errors {
	margin-bottom: 1em;
}
#ship-to-delivery-and-invoice {
	width: 60%;
}
#ship-to-delivery-and-invoice fieldset {
	margin-top: 0px;
}
#shipping-address-form p label span.required {
	padding: 0px 0.5em;
}
#shipping-address-form .floatable h4 {
	padding: 0.5em 0px; text-indent: 1.7em; font-size: 0.9em;
}
#shipping-address-form .first.floatable h4 {
	text-indent: 1em;
}
#shipping-address-form .first.floatable blockquote {
	margin-right: 1em; margin-left: 0px;
}
#shipping-address-form .floatable blockquote {
	font-size: 0.9em; margin-left: 0.8em;
}
#shipping-address-form .floatable blockquote address {
	padding: 0.5em 0.5em 0.5em 1em; font-style: normal;
}
#shipping-address-form .buttons {
	margin: 0px !important; padding-top: 3em; clear: both;
}
#confirmation-sorting {
	text-align: right; padding-top: 1em;
}
#latinized-address-anonymous-user-checkout {
	width: 76.6% !important;
}
html > body #latinized-address-anonymous-user-checkout {
	width: 76.8% !important;
}
*:first-child + html #latinized-address-anonymous-user-checkout {
	width: 76.9% !important;
}
#anonymous-user-checkout {
	width: 61.6%;
}
html > body #anonymous-user-checkout {
	width: 59.9%;
}
#latinized-address-user-checkout {
	width: 76.6% !important;
}
html > body #latinized-address-user-checkout {
	width: 76.8% !important;
}
*:first-child + html #latinized-address-user-checkout {
	width: 77% !important;
}
*:first-child + html #anonymous-user-checkout {
	width: 61.7%;
}
.confirm#order p.note {
	margin-bottom: 0px !important;
}
.order-confirmation#order fieldset {
	text-align: right;
}
.order-confirmation#order .buttons {
	margin-right: 0px !important;
}
.names {
	margin: 0px 1% 0px 0px !important; width: 49%; clear: none !important; =
float: left;
}
.last-name {
	margin-right: 0px !important;
}
html > body .country {
	padding-top: 1em;
}
*:first-child + html .country {
	padding-top: 0.3em !important;
}
.phone label {
	width: auto; clear: both; font-weight: normal; float: none; display: =
block; white-space: nowrap;
}
.e-mail label {
	width: auto; clear: both; font-weight: normal; float: none; display: =
block; white-space: nowrap;
}
.country label {
	width: auto; clear: both; font-weight: normal; float: none; display: =
block; white-space: nowrap;
}
.city label {
	width: auto; clear: both; font-weight: normal; float: none; display: =
block; white-space: nowrap;
}
.post-code label {
	width: auto; clear: both; font-weight: normal; float: none; display: =
block; white-space: nowrap;
}
.address label {
	width: auto; clear: both; font-weight: normal; float: none; display: =
block; white-space: nowrap;
}
.names label {
	width: auto; clear: both; font-weight: normal; float: none; display: =
block; white-space: nowrap;
}
.address-extended label {
	display: none;
}
.phone input {
	width: 98%;
}
.e-mail input {
	width: 98%;
}
.city input {
	width: 98%;
}
.post-code input {
	width: 98%;
}
.address-extended input {
	width: 98%;
}
.address input {
	width: 98%;
}
.names input {
	width: 98%;
}
.phone {
	margin: 0px !important; clear: none !important; float: left;
}
.e-mail {
	margin: 0px !important; clear: none !important; float: left;
}
.post-code {
	margin: 0px !important; clear: none !important; float: left;
}
.city {
	margin: 0px !important; clear: none !important; float: left;
}
.post-code {
	margin: 0px 1% 0px 0px !important; width: 14%;
}
html > body .post-code {
	width: 15%;
}
.city {
	width: 84%; margin-bottom: 0px !important;
}
.e-mail {
	width: 70%;
}
.phone {
	width: 29%;
}
.phone input {
	width: 96%;
}
#footer {
	clear: both;
}
#sales-agents-list {
	margin-right: 0px !important; float: left;
}
#sales-agents-countries {
	margin-right: 0px !important; float: left;
}
#registration-fields {
	margin-right: 0px !important; float: left;
}
#registration-description {
	margin-right: 0px !important; float: left;
}
#sales-agents-countries {
	width: 25%;
}
#registration-description {
	width: 25%;
}
#sales-agents-list {
	width: 75%;
}
#registration-fields {
	width: 75%;
}
#registration-fields p label {
	clear: both; float: none; display: block; white-space: nowrap;
}
#registration-fields .floatable {
	width: 49%; margin-right: 0px !important;
}
#registration-fields .floatable {
	width: 49%; margin-right: 0px !important;
}
#registration-fields .floatable p select {
	width: 81%;
}
#registration-fields .floatable p input {
	width: 81%;
}
#registration-fields fieldset {
	margin-top: 0.2em !important; margin-bottom: 0.5em;
}
#sales-agents-list h4 {
	text-indent: 0.65em;
}
#registration-fields h4 {
	text-indent: 0.65em;
}
#latinize-registration #latinize-address p.buttons {
	text-align: right; position: relative;
}
#registration-fields p.buttons {
	text-align: right; position: relative;
}
#latinize-registration #latinize-address p.buttons #go-back {
	left: 0px; float: left; position: relative;
}
#registration-fields p.buttons #go-back {
	left: 0px; float: left; position: relative;
}
#registration-fields p.buttons input {
	font-size: 0.9em;
}
#registration-fields p select#CredentialForm_SecurityQuestion {
	width: auto; min-width: 40%;
}
html > body #registration-fields p =
select#CredentialForm_SecurityQuestion {
	width: 40%;
}
*:first-child + html #registration-fields p =
select#CredentialForm_SecurityQuestion {
	width: auto;
}
.user-action h4 {
	text-indent: 0.65em; font-family: Verdana, Geneva, Helvetica, =
sans-serif; font-size: 0.9em !important;
}
.user-action .note {
	padding-left: 0.7em !important;
}
.user-action .noteable {
	padding-left: 0.7em;
}
.user-action dl.noteable.errors {
	padding-left: 0px; margin-left: 0.7em;
}
.user-action .offseted {
	margin-top: 1em;
}
.user-action .buttons input {
	font-size: 0.9em;
}
#news-alert-form li {
	width: 24%; float: left; display: block;
}
#news-alert-form ul {
	margin-bottom: 0px !important; margin-left: 0.9em;
}
#news-alert-form li#alert-language {
	width: 25%;
}
#news-alert-form li#alert-name {
	width: 25%;
}
#news-alert-form li#alert-parameters {
	width: 49%;
}
#news-alert-form li label {
	display: block; white-space: nowrap;
}
#news-alert-form li input {
	width: 85%;
}
#news-alert-form li select {
	width: 85%;
}
#news-alert-form li#alert-parameters select {
	width: 100%;
}
#news-alert-form .buttons {
	text-align: right; padding-top: 0.5em; margin-top: 0px !important;
}
*:first-child + html #news-alert-form .buttons {
	padding-top: 0px; margin-top: -0.7em !important;
}
.with-options-list {
	width: 60%; margin-bottom: 1.5em;
}
.with-options-list li {
	margin: 0px 0px 0px 0.65em; height: 0.1em; position: relative;
}
html > body .with-options-list li {
	margin: 0.4em 0px 0.4em 0.65em; height: auto;
}
.with-options-list li p.options {
	top: 0px; right: 0px; position: absolute;
}
.with-options-list li p {
	margin-bottom: 0px !important;
}
.with-options-list li p.options a {
	margin-left: 1em;
}
.static-header {
	padding-top: 0.1em !important; margin-top: 0.5em !important;
}
.my-orders#order h4 {
	text-indent: 0.65em !important; margin-top: 0px !important; =
margin-bottom: 1em !important;
}
.my-orders#order table th {
	width: 15%;
}
.my-orders#order table td {
	width: 15%;
}
.my-orders#order table th.publication-title {
	width: 40%;
}
.my-orders#order table td.publication-title {
	width: 40%;
}
.my-orders#order table th {
	padding: 0.6em 0.5em;
}
.my-orders#order table td {
	padding: 0px 0.5em; border-bottom-width: 2px !important;
}
#order-detailed-information {
	margin: 0px 0px 1em 1em; width: 30%; font-size: 0.9em;
}
#order-detailed-information td {
	text-align: left;
}
#order-detailed-information th {
	text-align: left;
}
.my-orders#order table.listing {
	margin-top: 1em;
}
#comment {
	padding-left: 1em; margin-top: 1em !important;
}
#comment p {
	background: rgb(221, 233, 244); padding: 0.3em; font-size: 0.9em; =
margin-top: 0.65em; margin-right: 0px !important;
}
.ffdp {
	text-indent: 0.7em;
}
fieldset.order-tracking label {
	text-indent: 0.65em;
}
#sales-agents-list h4 {
	padding: 0.2em 0px !important;
}
#sales-agents-list ul li {
	margin-bottom: 2em;
}
#sales-agents-list dl {
	margin: 1em 0.5em;
}
#sales-agents-list dl dt {
	font-weight: bold;
}
#sales-agents-countries h3 {
	padding-left: 0.75em;
}
#sales-agents-countries ul {
	padding-left: 0.75em;
}
#sales-agents-countries li a {
	color: rgb(88, 126, 195); font-size: 0.9em;
}
#saved-results-list .with-options-list {
	width: 80%;
}
#saved-parameters-list .with-options-list {
	width: 80%;
}
#saved-results-list .with-options-list p.options {
	top: 0.2em;
}
#saved-parameters-list .with-options-list p.options {
	top: 0.2em;
}
#sitemap ul {
=09
}
#sitemap li {
	padding: 0.2em 0px; list-style-type: none !important;
}
#sitemap .category-path {
	margin-bottom: 1.6em !important;
}
#sitemap #catalogues {
	margin-bottom: 1.8em !important;
}
#catalogues li {
	font-size: 1.1em; margin-left: 0em !important;
}
#catalogues li ul li {
	font-size: 1em;
}
#sitemap .sitemap-item {
	margin-left: 0.6em;
}
#sitemap .category-path li {
	margin-left: 1em !important;
}
#sitemap #other-languages {
	margin-bottom: 0px !important;
}
#sitemap #other-languages li {
	text-transform: uppercase; margin-left: 0.2em;
}
#floatLeft {
	margin-right: 10px; float: left;
}
#floatRight {
	float: right;
}
.PanelRight {
	padding: 10px; border: 1px solid rgb(199, 205, 212); margin-top: 20px;
}
.TopSpace {
	line-height: 15px; padding-top: 17px;
}
#latinize-address div#latinized-address {
	width: 48%; float: left;
}
#latinize-address div#original-address {
	width: 48%; float: left;
}
html > body #latinize-address div#latinized-address {
	width: auto; float: none;
}
#original-address label {
	width: 40%; overflow: hidden; white-space: nowrap;
}
#latinized-address input {
	width: 55%;
}
#original-address input {
	width: 55%;
}
#latinize-address p.buttons {
	width: 79%;
}
html > body #latinize-address p.buttons {
	width: 76.9%;
}
*:first-child + html #latinize-address p.buttons {
	width: 77%;
}
*:first-child + html #latinized-address-form-buttons {
	width: 79.7% !important;
}
.latinized-address {
	margin: 0px !important; padding: 0.5em !important; width: 18em =
!important; float: none !important; z-index: 999;
}
#shipping-address-form .has-latinized {
	height: 1px;
}
html > body #shipping-address-form .has-latinized {
	height: auto;
}
#shipping-address-form .has-latinized p.clear {
	margin: 0px !important; padding: 0px !important;
}
#shipping-address-form .has-latinized blockquote {
	margin-left: 0px;
}
#shipping-address-form .has-latinized h4 {
	text-indent: 1em;
}
#shipping-address-form .has-latinized .original-address.floatable {
	width: 49.9%;
}
html > body #shipping-address-form .has-latinized =
.original-address.floatable {
	width: 50%;
}
#shipping-address-form .has-latinized {
	margin-right: 0px;
}
#shipping-address-form .has-latinized h4 {
	margin-right: 0px;
}
#shipping-address-form .has-latinized ul {
	margin-bottom: 0px;
}
#shipping-address-form .has-latinized {
	margin-left: 0.8em;
}
#content .payment-settings .payment-instrument {
	text-align: right; padding-bottom: 0.9em; margin-top: 0.8em; =
margin-bottom: 0px; margin-left: 0.8em; border-bottom-width: 1px; =
border-bottom-style: solid;
}
#content .payment-settings .payment-service =
.payment-instrument-selection {
	text-align: right; padding-bottom: 0.9em; margin-top: 0.8em; =
margin-bottom: 0px; margin-left: 0.8em; border-bottom-width: 1px; =
border-bottom-style: solid;
}
#shipping-address-form .floatable ul {
	text-align: right; padding-bottom: 0.9em; margin-top: 0.8em; =
margin-bottom: 0px; margin-left: 0.8em; border-bottom-width: 1px; =
border-bottom-style: solid;
}
html > body #content .payment-settings .payment-service =
.payment-instrument-selection {
	margin-top: 0.85em;
}
html > body #content .payment-settings .payment-instrument {
	margin-top: 0.85em;
}
html > body #shipping-address-form .floatable ul {
	margin-top: 0.85em;
}
*:first-child + html #content .payment-settings .payment-service =
.payment-instrument-selection {
	padding-top: 0.9em;
}
*:first-child + html #content .payment-settings .payment-instrument {
	padding-top: 0.9em;
}
*:first-child + html #shipping-address-form .floatable ul.new-address {
	padding-top: 0.9em;
}
#shipping-address-form .floatable ul.new-address {
	padding-top: 0.8em; margin-top: 0px;
}
#shipping-address-form .floatable ul li {
	display: inline;
}
#shipping-address-form .floatable ul li.address-selection {
	margin-left: 0.4em; float: left;
}
#content .payment-settings .payment-service =
.payment-instrument-selection input {
	vertical-align: top;
}
#content .payment-settings .payment-instrument input {
	vertical-align: top;
}
#shipping-address-form .floatable ul li.address-selection input {
	vertical-align: top;
}
.continue-to {
	padding: 0.1em 0.3em; font-size: 0.9em; font-weight: bold;
}
#content .payment-settings .payment-instrument-selection =
.payment-instrument-deletion a {
	padding: 0.1em 0.3em; font-size: 0.9em; font-weight: bold;
}
#shipping-address-form .floatable ul li a {
	padding: 0.1em 0.3em; font-size: 0.9em; font-weight: bold;
}
#do-edit-address {
	width: 98.3%;
}
#latinize-address p.buttons {
	text-align: right;
}
#latinize-address p.buttons #confirm-latinization {
	float: left;
}
#latinize-address p.buttons #return-to-addresses {
	float: right;
}
#confirmation-sorting input {
	vertical-align: middle;
}
#confirmation-sorting select {
	vertical-align: middle;
}
#requisition-sorting input {
	vertical-align: middle;
}
#requisition-sorting select {
	vertical-align: middle;
}
#confirmation-sorting input {
	margin-top: -1px;
}
#requisition-sorting input {
	margin-top: -1px;
}
#advanced-product-search {
	padding-left: 0.7em !important;
}
.top-category {
	font-weight: bold;
}
#browse-subscriptions {
	padding-bottom: 0px !important; padding-left: 0.65em !important;
}
#official-address {
	margin: 1em 0.5em;
}
#official-address li {
	padding: 0.4em 0px; width: 80%; clear: both;
}
#official-address li span {
	width: 20%; font-weight: bold; float: left;
}
#signature {
	width: 79.5%; margin-right: 0px !important; float: left;
}
#signature p {
	margin: 0px !important; width: 32%; float: left;
}
#print-approval {
	margin: 0px !important; width: 18%; height: 2em; text-align: right; =
font-weight: bold; float: left;
}
#print-approval a {
	padding: 0px 0.4em; line-height: 1.6em; font-size: 0.9em;
}
#order-history-entries th {
	text-align: left;
}
#order-history-entries td {
	text-align: left;
}
#order-history-entries th.date {
	width: 20% !important;
}
#order-history-entries td.date {
	width: 20% !important;
}
#order-history-entries th.entry {
	width: 80% !important;
}
#order-history-entries td.entry {
	width: 80% !important;
}
#footer-placeholder {
	margin: 0px auto; width: 98%; padding-top: 1em;
}
#footer-placeholder div {
	zoom: 1;
}
#footer li {
	width: 19%; overflow: hidden; float: left;
}
#footer li p {
	padding: 1.2em 0px 0.4em; font-size: 1.1em;
}
#footer li ul li {
	width: auto; float: none;
}
#footer li ul li {
	padding: 0.2em 0px 0.2em 1em;
}
*:first-child + html #footer li ul li {
	padding: 0.1em 0px 0.1em 1em;
}
#footer p.clear {
	margin: 0px !important; padding: 0px !important;
}
#footer #my-eubookshop {
	visibility: hidden;
}
#order #cancel-this-order {
	margin-right: 0em !important;
}
#order .empty-requisition {
	margin-left: 0.5em;
}
#back-to-catalogue {
	margin: 0.6em 0px 0px 0.6em !important;
}
.bundles#publications-navigation h3 {
	font: bold 1.4em/normal Georgia, Arial, Helvetica, sans-serif; margin: =
0px 0px 0px 0.6em !important; padding: 0.2em 0px 0.25em !important; =
font-size-adjust: none; font-stretch: normal;
}
.bundles#publications-navigation div.static-content {
	font-family: Verdana, Arial, Georgia, Helvetica, sans-serif; font-size: =
0.9em; margin-right: 0px;
}
.bundles#publications-navigation div.static-content ul {
	padding-left: 0.9em !important; margin-right: 0px;
}
.bundles#publications-navigation div.static-content p {
	padding-left: 0.9em !important; margin-right: 0px;
}
.bundles#publications-navigation div.static-content div {
	padding-left: 0.9em !important; margin-right: 0px;
}
.print-on-demand-confirmation * {
	margin-right: 0px !important;
}
.print-on-demand-confirmation #publication {
	margin-right: 0px !important;
}
#bundle-title {
	margin-left: 0.7em;
}
#content .payment-settings div.payment-service {
	margin-right: 0px; margin-bottom: 1.5em;
}
#content .payment-settings dl.errors {
	margin-right: 0px;
}
.sdc-card-creation .payment-instrument-creation p.buttons {
	text-align: right; margin-right: 0px !important;
}
#content .payment-settings p.buttons {
	text-align: right; margin-right: 0px !important;
}
#content .payment-settings p.buttons input {
	font-size: 1em;
}
#content .payment-settings p.payment-service-name {
	margin: 0px; padding: 0.8em 1em;
}
#content .payment-settings .payment-service =
.payment-instrument-selection {
	text-align: left; margin-right: 0px; margin-left: 0px;
}
#content .payment-settings .payment-instrument {
	text-align: left; margin-right: 0px; margin-left: 0px;
}
#content .payment-settings .payment-instrument-creation {
	padding: 0.5em 1em 1em; margin-right: 0px;
}
.sdc-card-creation .payment-instrument-creation p.selection select {
	width: 19%; margin-right: 1.3em;
}
#content .payment-settings .payment-instrument-creation p.selection =
select {
	width: 19%; margin-right: 1.3em;
}
#content .payment-settings .payment-instrument-creation .editor-wrapper =
{
	width: 100%; height: 100%;
}
.sdc-card-creation .payment-instrument-creation p.instrument-name {
	padding-bottom: 0.4em;
}
#content .payment-settings .payment-instrument-selection {
	padding-bottom: 0px !important; position: relative;
}
#content .payment-settings .payment-instrument-selection li.checkable {
	position: absolute;
}
#content .payment-settings .payment-instrument-selection =
li.payment-instrument-info {
	margin-left: 20%;
}
#content .payment-settings .payment-instrument-info .info table td {
	padding: 0.1em 0.5em 0.6em; width: 25%; text-align: left; =
border-bottom-width: 1px;
}
#content .payment-settings .payment-instrument-info .info table td.value =
{
	width: 75%;
}
#content .payment-settings .payment-costs {
	margin-right: 0px !important;
}
#content .payment-settings .payment-costs p.description {
	margin: 0px !important; padding: 0px 0px 0.4em;
}
#content .payment-settings .payment-instrument-selection =
.payment-instrument-deletion {
	top: 0px; right: 1em; position: absolute;
}
#login-button-container {
	width: 100%; height: 5.5em; position: relative;
}
#login-button-container .top {
	top: 0px; right: 0px; position: absolute;
}
#login-button-container .bottom {
	right: 0px; bottom: 0px; position: absolute;
}
#login-button-container .right {
	float: right;
}
#login-button-container .right-offset {
	margin-right: 1em; float: right;
}
.card-information td {
	text-align: right;
}
.card-information td div.inline {
	margin-right: 0px !important;
}
#cookie-consent-banner {
	background: 0px 0px rgb(189, 255, 89); border: 1px solid rgb(189, 255, =
89) !important; overflow: auto; max-width: 960px;
}
.cookie-consent-actions a {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; padding: =
4px 15px; color: rgb(255, 255, 255); text-decoration: none; =
border-right-color: rgb(134, 179, 198); border-bottom-color: rgb(134, =
179, 198); border-right-width: 1px; border-bottom-width: 1px; =
border-right-style: solid; border-bottom-style: solid; white-space: =
nowrap;
}
.cookie-consent-banner h2 {
	margin: 0px; padding: 0px; color: rgb(51, 102, 153); font-size: 150%; =
font-weight: normal;
}
.cookie-consent-actions {
	padding: 10px 0px; margin-bottom: 5px; float: left;
}

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/css;
	charset="iso-8859-1"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/color-scheme.css

body {
=09
}
#basket_button {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left rgb(0, 0, =
0); padding: 1px 10px; color: rgb(255, 255, 255) !important; =
font-weight: bold; text-decoration: none;
}
#main-container {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/bookshop_top.png") repeat-x left top; border-color: =
rgb(207, 212, 218);
}
input {
	color: rgb(62, 81, 105);
}
select {
	color: rgb(62, 81, 105);
}
label {
	color: rgb(62, 81, 105); font-size: 0.9em; font-weight: bold;
}
a:hover {
	color: rgb(204, 102, 0) !important;
}
.processing {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/css/eu-loading-indicator.gif") no-repeat 5px 5px !important;
}
#navigation {
=09
}
#navigation li {
	border-right-color: rgb(112, 126, 144);
}
#navigation li.borderless {
=09
}
.more-list span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/drop.png") no-repeat 95% 52%;
}
#publication-office {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/drop.png") no-repeat 95% 52%;
}
.list-replacement {
	background: rgb(255, 255, 255) !important; border-color: rgb(199, 205, =
212) !important;
}
.list-replacement li {
	background: rgb(255, 255, 255) !important; border-color: rgb(199, 205, =
212) !important;
}
#publication-office ul {
	background: rgb(255, 255, 255) !important; border-color: rgb(199, 205, =
212) !important;
}
#publication-office ul li {
	background: rgb(255, 255, 255) !important; border-color: rgb(199, 205, =
212) !important;
}
.list-replacement li a {
	color: rgb(221, 119, 0) !important;
}
#publication-office ul li a {
	color: rgb(221, 119, 0) !important;
}
.list-replacement li a:hover {
	background: rgb(221, 119, 0) !important; color: rgb(255, 255, 255) =
!important; text-decoration: none !important;
}
#publication-office ul li a:hover {
	background: rgb(221, 119, 0) !important; color: rgb(255, 255, 255) =
!important; text-decoration: none !important;
}
#europa-gateway {
	color: rgb(0, 51, 153);
}
#europa-gateway a {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/europa_logo.gif") no-repeat center !important;
}
#europa-gateway a:hover {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/europa-logo-small.png") no-repeat center !important; =
text-decoration: none !important;
}
#navigation a {
	background: rgb(255, 255, 255); text-decoration: none;
}
#navigation a {
	color: rgb(112, 126, 144);
}
#navigation a:active {
	color: rgb(112, 126, 144);
}
#navigation a:hover {
	text-decoration: underline;
}
#slogan {
	color: rgb(112, 126, 144);
}
#slogan strong {
	color: rgb(239, 145, 11);
}
#catalogs {
=09
}
.active#publications-categories {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/bookshop_top.png") repeat-x left bottom;
}
#catalogs li {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/catalogue-background.gif") repeat-x left top; =
text-transform: uppercase;
}
#catalogs li.active {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/active-catalog-background.gif") repeat-x left top;
}
#catalogs li a {
	color: rgb(255, 255, 255); text-decoration: none;
}
#catalogs li a:hover {
	color: rgb(255, 255, 255) !important;
}
#label-for-search-term {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/search-bar-background.png") no-repeat 0px 3px rgb(255, =
255, 255);
}
#search input {
	font-size: 0.8em; vertical-align: middle;
}
#search select {
	font-size: 0.8em; vertical-align: middle;
}
#search {
	color: rgb(0, 51, 153); font-size: 1em; font-weight: bold;
}
#search a {
	color: rgb(0, 51, 153); font-size: 1em; font-weight: bold;
}
#search a {
	text-decoration: none;
}
#details-caption {
	color: rgb(221, 119, 0);
}
#categories p#filter-category {
	color: rgb(221, 119, 0);
}
#categories p#selected-category {
	color: rgb(221, 119, 0);
}
#sidebar h3 {
	color: rgb(221, 119, 0);
}
#content h1 {
	color: rgb(221, 119, 0);
}
#content h3 {
	color: rgb(221, 119, 0);
}
#customer-basket {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/my-basket.gif") no-repeat right bottom rgb(221, 233, =
244);
}
html > body #customer-basket {
	background-image: none;
}
html > body #view-basket {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/my-basket.gif") no-repeat right bottom;
}
#profile h3 {
	background: rgb(221, 233, 244);
}
#profile #logout {
	background: rgb(221, 233, 244);
}
#login-form {
	background: rgb(221, 233, 244);
}
#news-corner-box p strong span {
	color: rgb(51, 102, 204);
}
#requisition-anchor strong {
	color: rgb(51, 102, 204);
}
#requisition-anchor a {
	color: rgb(51, 102, 204);
}
#profile #logout a {
	color: rgb(51, 102, 204);
}
#login-form p strong {
	color: rgb(51, 102, 204);
}
#profile h3 {
	color: rgb(51, 102, 204);
}
#profile li {
	border-top-color: rgb(199, 205, 212);
}
#profile li a {
	text-decoration: none;
}
#news-corner-box a {
	color: rgb(62, 81, 105);
}
#login-form a {
	color: rgb(62, 81, 105);
}
#login-form a.active {
	color: rgb(62, 81, 105);
}
#news-corner-box p strong {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/news-background.gif") no-repeat right bottom;
}
#news-corner-box p {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/news-bordering-background.png") no-repeat right bottom =
rgb(221, 233, 244);
}
#news-corner-box ul {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/news-heading-background.png") repeat-x left top;
}
#news-corner-box li.rss-feed {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/rssicon.jpg") no-repeat 8px 8px rgb(255, 255, 255);
}
#sidebar .static-content {
	border-color: rgb(199, 205, 212);
}
p#refine-query {
	color: rgb(221, 119, 0); background-image: none !important;
}
.sidebar-box {
	border: 0.1em solid rgb(199, 205, 212);
}
.sidebar-box h3 {
	color: rgb(221, 119, 0);
}
#sidebar .static-content a {
	color: rgb(62, 81, 105);
}
.sidebar-box a {
	color: rgb(62, 81, 105);
}
#categories li.active {
	border-top-color: rgb(199, 205, 212); border-bottom-color: rgb(199, =
205, 212);
}
#categories p#selected-category {
	border-top-color: rgb(199, 205, 212); border-bottom-color: rgb(199, =
205, 212);
}
#categories dl dt {
	color: rgb(204, 120, 0); border-top-color: rgb(199, 205, 212); =
border-bottom-color: rgb(199, 205, 212);
}
#categories li {
	border-bottom-color: rgb(199, 205, 212);
}
#categories li.expandActive {
	background-image: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/expand_plus.png");
}
#categories li.active {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/selected-category-background.png") repeat-x left =
!important;
}
#categories dl dt {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/selected-category-background.png") repeat-x left;
}
#categories p#selected-category {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/selected-category-background.png") repeat-x left;
}
#categories dl dt span {
	background-position: 9px 3px;
}
#categories .categories li {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/categories-list-background.png") no-repeat 9px 7px;
}
#categories .catalogs li {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/categories-list-background.png") no-repeat 9px 7px;
}
#categories .categories li:hover {
	background-position: -171px 7px;
}
#categories .catalogs li:hover {
	background-position: -171px 7px;
}
#categories dt span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/categories-list-arrow-active.png") no-repeat 9px 3px;
}
#categories p#selected-category span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/categories-list-arrow-active.png") no-repeat 9px 3px;
}
#categories li.active span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/categories-list-arrow.png") no-repeat -1px 3px;
}
#categories li.active a {
	color: rgb(51, 102, 204); text-decoration: none;
}
#categories li.active a:active {
	color: rgb(51, 102, 204); text-decoration: none;
}
#categories dl dd.more select {
	color: rgb(51, 102, 204); text-decoration: none;
}
#categories a {
	color: rgb(51, 102, 204); text-decoration: none;
}
#categories a:active {
	color: rgb(51, 102, 204); text-decoration: none;
}
.filter-attributes a:hover {
	color: rgb(221, 119, 0) !important;
}
#categories p#selected-category {
	color: rgb(221, 119, 0);
}
#categories p#selected-category a {
	color: rgb(221, 119, 0);
}
#categories p#selected-category a:active {
	color: rgb(221, 119, 0);
}
.category-path li {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/content-categories-arrow.png") no-repeat 0px 7px;
}
.category-path li.expand {
	background-image: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/content-categories-arrow-expand.png");
}
.category-path li.collapse {
	background-image: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/content-categories-arrow-collapse.png");
}
#breadcrumb {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/breadcrumb-background.png") repeat-x left top;
}
#breadcrumb {
	color: rgb(255, 255, 255) !important; font-size: 0.9em;
}
#breadcrumb a {
	color: rgb(255, 255, 255) !important; font-size: 0.9em;
}
#breadcrumb a.active {
	color: rgb(255, 255, 255) !important; font-size: 0.9em;
}
#breadcrumb a:hover {
	text-decoration: underline;
}
#breadcrumb a {
	font-size: 1em; text-decoration: none;
}
#breadcrumb a.active {
	font-size: 1em; text-decoration: none;
}
.sdc-card-creation {
	background: rgb(255, 255, 255); color: rgb(62, 81, 105);
}
#content {
	background: rgb(255, 255, 255); color: rgb(62, 81, 105);
}
.static-content {
	background: rgb(255, 255, 255); color: rgb(62, 81, 105);
}
#content a {
	color: rgb(112, 126, 144);
}
#content a:active {
	color: rgb(112, 126, 144);
}
#publication h2 {
	font-size: 1.1em;
}
#content h4 {
	font-size: 1.1em;
}
#content .news h4 {
=09
}
a.more {
	color: rgb(221, 119, 0) !important; font-weight: bold; text-decoration: =
none;
}
a.more:hover {
	color: rgb(112, 126, 144) !important;
}
#publication h1 {
	background: rgb(255, 255, 255);
}
#focus-on a {
	background: rgb(255, 255, 255);
}
#focus-on {
	background: rgb(255, 255, 255);
}
.recommendation h5 a {
	background: rgb(255, 255, 255);
}
.recommendation {
	background: rgb(255, 255, 255);
}
#publication h1 {
	color: rgb(112, 126, 144); text-decoration: none;
}
.recommendation h5 a {
	color: rgb(112, 126, 144); text-decoration: none;
}
#focus-on h4 a {
	color: rgb(112, 126, 144); text-decoration: none;
}
#focus-on {
	color: rgb(62, 81, 105);
}
#publication {
	color: rgb(62, 81, 105);
}
#focus-on h1 {
	color: rgb(221, 119, 0);
}
.recommendation {
	color: rgb(112, 126, 144);
}
.publication-details p.teaser {
	color: rgb(62, 81, 105);
}
#recommendations {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/recommendations-background.png") repeat-x left bottom; =
color: rgb(255, 255, 255);
}
#content fieldset h4 {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/content-heading.png") repeat-x left; padding: 0px =
!important; color: rgb(51, 102, 204); text-indent: 1em;
}
#content fieldset h4 span.expand {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/expand.png") no-repeat left;
}
#content fieldset h4 span.collapse {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/collapse.png") no-repeat left;
}
.advanced-search dl dt {
	color: rgb(62, 81, 105); font-weight: bold;
}
.advanced-search-button {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/search-button-background.png") no-repeat left;
}
.advanced-search-button input {
	border: currentColor; color: rgb(255, 255, 255); font-weight: bold;
}
.browse-results {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/browse-results.png") repeat-x left !important; color: =
rgb(255, 255, 255) !important;
}
.empty-result {
	color: rgb(221, 119, 0);
}
#list-sorting {
	background: rgb(255, 255, 255);
}
#result-options li {
	border-right-color: rgb(139, 151, 223);
}
#result-options li span.additional-list {
	border-left-color: rgb(139, 151, 223);
}
#result-options input {
	border: currentColor; color: rgb(88, 126, 195); font-weight: bold; =
text-decoration: underline; cursor: pointer;
}
#result-options a {
	border: currentColor; color: rgb(88, 126, 195); font-weight: bold; =
text-decoration: underline; cursor: pointer;
}
#result-options li a.hover {
	color: rgb(204, 102, 0);
}
#result-options input:hover {
	color: rgb(204, 102, 0);
}
.paging {
	background: rgb(221, 233, 244);
}
.paging {
	color: rgb(112, 126, 144);
}
.paging a {
	color: rgb(112, 126, 144);
}
.paging li a {
	text-decoration: underline;
}
#publications li {
	color: rgb(62, 81, 105); border-bottom-color: rgb(199, 205, 212);
}
#publication p.cover {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/details-cover-background.png") no-repeat center;
}
.publication-details.recommendation span.cover {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/cover-background.png") no-repeat center;
}
#publications p.cover {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/cover-background.png") no-repeat center;
}
#publications li h4 {
	color: rgb(112, 126, 144);
}
#publications li h4 a {
	color: rgb(112, 126, 144);
}
#publications p.sales-agents a {
	color: rgb(88, 126, 195);
}
#publications p.available-formats a {
	color: rgb(88, 126, 195);
}
#publications li .abstract .more-reading {
	background: rgb(255, 255, 255); color: rgb(88, 126, 195); =
text-decoration: underline;
}
#publications a {
	text-decoration: none;
}
#publications p.sales-agents {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/available-languages-anchor.png") no-repeat 95% 50% =
rgb(232, 240, 247);
}
#publications p.available-formats {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/available-languages-anchor.png") no-repeat 95% 50% =
rgb(232, 240, 247);
}
#publications p.sales-agents {
	text-decoration: none;
}
#publications p.available-formats a {
	text-decoration: none;
}
#publications dl dd a {
	color: rgb(112, 126, 144);
}
#publications p.reminder-title {
	color: rgb(62, 81, 105);
}
#publications p.abstract {
	color: rgb(62, 81, 105);
}
#publication {
	color: rgb(62, 81, 105);
}
#editions dd.download span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/download-background.png") repeat-x left top;
}
#options li {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/download-background.png") repeat-x left top;
}
#editions .download span a {
	color: rgb(255, 255, 255); font-weight: bold; text-decoration: none;
}
#options li a {
	color: rgb(255, 255, 255); font-weight: bold; text-decoration: none;
}
#editions .download span a:hover {
	color: rgb(255, 255, 255) !important;
}
#options li a:hover {
	color: rgb(255, 255, 255) !important;
}
#editions .download span a:hover {
	text-decoration: underline;
}
#editions .download span a {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/download.png") no-repeat 2px 3px;
}
#publication #print-publication-details {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/print-publication.png") no-repeat center;
}
#publication #add-to-bookmarks {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/add-to-favorites.png") no-repeat left;
}
#publication #send-publicaiton-as-email {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/send-publication-as-email.png") no-repeat center;
}
#publication dd a {
	color: rgb(88, 126, 195); text-decoration: underline;
}
#editions dd {
	border-top-color: rgb(199, 205, 212); border-top-width: 1px; =
border-top-style: solid;
}
#editions td dd {
	border: currentColor;
}
#editions dd h4 {
	color: rgb(204, 102, 0);
}
#publications form p span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-button-background.png") no-repeat left;
}
#subscriptions td.order span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-button-background.png") no-repeat left;
}
#editions form span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-button-background.png") no-repeat left;
}
#publication .editions-info tfoot .print-on-demand .policy:hover {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/print-on-demand-policy.jpg") no-repeat top; color: =
rgb(255, 255, 255) !important; font-weight: bold; text-decoration: none;
}
#publication .editions-info tfoot .print-on-demand .policy {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/print-on-demand-policy.jpg") no-repeat top; color: =
rgb(255, 255, 255) !important; font-weight: bold; text-decoration: none;
}
#publication .editions-info tfoot .print-on-demand .policy-new {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/print-on-demand-new.png") no-repeat top; padding: =
0.4em 0.9em 0.3em; color: rgb(251, 214, 149) !important; font-weight: =
bold; text-decoration: none; margin-top: 0.15em; margin-left: 0.4em; =
float: left;
}
#publications form p span input {
	border: currentColor; color: rgb(255, 255, 255) !important; =
font-weight: bold; text-decoration: none;
}
#subscriptions td.order span a {
	border: currentColor; color: rgb(255, 255, 255) !important; =
font-weight: bold; text-decoration: none;
}
#editions form span input {
	border: currentColor; color: rgb(255, 255, 255) !important; =
font-weight: bold; text-decoration: none;
}
#show-related {
	color: rgb(88, 126, 195); font-weight: bold;
}
#show-serials {
	color: rgb(88, 126, 195); font-weight: bold;
}
#show-related a {
	text-decoration: none;
}
#show-serials a {
	text-decoration: none;
}
#show-related span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/available-languages-anchor.png") no-repeat 95% 50% =
rgb(232, 240, 247);
}
#show-serials span {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/available-languages-anchor.png") no-repeat 95% 50% =
rgb(232, 240, 247);
}
.filter-attributes .remove-entry-value a:hover {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/icon_delete.2.png") no-repeat right;
}
#first-basket-step {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/basket-steps-background.png") repeat-x left rgb(255, =
255, 255); color: rgb(153, 175, 217);
}
#second-basket-step {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/basket-steps-background.png") repeat-x left rgb(255, =
255, 255); color: rgb(153, 175, 217);
}
#third-basket-step {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/basket-steps-background.png") repeat-x left rgb(255, =
255, 255); color: rgb(153, 175, 217);
}
#first-basket-step strong {
	color: rgb(88, 126, 195);
}
#second-basket-step strong {
	color: rgb(88, 126, 195);
}
#third-basket-step strong {
	color: rgb(88, 126, 195);
}
#order table {
	color: rgb(62, 75, 91);
}
#order table a {
	color: rgb(62, 75, 91);
}
#order table {
	font-size: 0.9em;
}
#order table td {
	background: rgb(221, 233, 244);
}
#order tfoot td {
	border-bottom-color: rgb(255, 255, 255);
}
#order tbody td {
	border-bottom-color: rgb(255, 255, 255);
}
#order tfoot .total td {
	background: rgb(191, 212, 234); font-weight: bold;
}
#order tbody td.item-option {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/delete_icon.png") no-repeat center rgb(194, 214, 235); =
padding: 0px !important;
}
.user-action .buttons input {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; color: =
rgb(255, 255, 255);
}
#registration-fields p.buttons input {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; color: =
rgb(255, 255, 255);
}
#order .buttons input {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; color: =
rgb(255, 255, 255);
}
.buttons #refuse-cookie {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; color: =
rgb(255, 255, 255);
}
.buttons #refuse-all-cookie {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; color: =
rgb(255, 255, 255);
}
.buttons #accept-cookie {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; color: =
rgb(255, 255, 255);
}
.user-action .buttons input.hightlight {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/hightlighted-order-button-background.png") repeat-x =
left;
}
#registration-fields p.buttons input.hightlight {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/hightlighted-order-button-background.png") repeat-x =
left;
}
#order .buttons input.hightlight {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/hightlighted-order-button-background.png") repeat-x =
left;
}
#content .payment-settings p.payment-service-name {
	background: rgb(221, 233, 244);
}
#content .payment-settings div.payment-instrument-creation {
	background: rgb(221, 233, 244);
}
#content .payment-settings .payment-instrument-creation {
	background: rgb(221, 233, 244);
}
#content .payment-settings .payment-costs p.description {
	background: rgb(221, 233, 244);
}
#content .payment-settings .payment-costs {
	background: rgb(221, 233, 244);
}
.sdc-card-creation .payment-instrument-creation {
	background: rgb(221, 233, 244);
}
.sdc-card-creation {
	background: rgb(221, 233, 244);
}
#shipping-address-form .has-latinized {
	background: rgb(221, 233, 244);
}
#shipping-address-form .floatable blockquote {
	background: rgb(221, 233, 244);
}
#shipping-address-form .has-latinized ul {
	background: rgb(255, 255, 255);
}
#shipping-address-form .has-latinized h4 {
	background: rgb(255, 255, 255);
}
.continue-to {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; color: =
rgb(255, 255, 255) !important; text-decoration: none;
}
#content .payment-settings .payment-instrument-selection =
.payment-instrument-deletion a {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; color: =
rgb(255, 255, 255) !important; text-decoration: none;
}
#shipping-address-form .floatable ul li a {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; color: =
rgb(255, 255, 255) !important; text-decoration: none;
}
#newaddressbtn {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/order-buttons-background.png") repeat-x left; padding: =
5px; color: rgb(255, 255, 255) !important; font-weight: bold; =
text-decoration: none; float: right;
}
.continue-to:hover {
	color: rgb(255, 255, 255) !important; text-decoration: underline =
!important;
}
#shipping-address-form .floatable ul li a:hover {
	color: rgb(255, 255, 255) !important; text-decoration: underline =
!important;
}
.phone label {
	color: rgb(112, 126, 144);
}
.e-mail label {
	color: rgb(112, 126, 144);
}
.country label {
	color: rgb(112, 126, 144);
}
.city label {
	color: rgb(112, 126, 144);
}
.post-code label {
	color: rgb(112, 126, 144);
}
.address label {
	color: rgb(112, 126, 144);
}
.names label {
	color: rgb(112, 126, 144);
}
#footer a {
	color: rgb(112, 125, 141);
}
#footer a:active {
	color: rgb(112, 125, 141);
}
.user-action h3 {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/basket-steps-background.png") repeat-x left rgb(255, =
255, 255); color: rgb(153, 175, 217) !important;
}
.user-action h4 {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/basket-steps-background.png") repeat-x left rgb(255, =
255, 255); color: rgb(153, 175, 217) !important;
}
#sales-agents-list h4 {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/basket-steps-background.png") repeat-x left rgb(255, =
255, 255); color: rgb(153, 175, 217) !important;
}
#registration-fields h4 {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/basket-steps-background.png") repeat-x left rgb(255, =
255, 255); color: rgb(153, 175, 217) !important;
}
#content .with-options-list li p.options a {
	color: rgb(88, 126, 195);
}
.my-orders#order table td {
	background: rgb(255, 255, 255);
}
.latinized-address {
	background: rgb(255, 255, 255); border: 0.1em solid rgb(199, 205, 212); =
font-weight: bold;
}
#content .payment-settings .payment-service =
.payment-instrument-selection {
	border-bottom-color: rgb(221, 233, 244);
}
#content .payment-settings .payment-instrument {
	border-bottom-color: rgb(221, 233, 244);
}
#shipping-address-form .floatable ul {
	border-bottom-color: rgb(221, 233, 244);
}
#editions span.not-avilable-for-ordering {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/not-available.png") no-repeat left; color: rgb(255, =
255, 255); font-weight: bold;
}
#print-approval a {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/breadcrumb-background.png") repeat-x left top; color: =
rgb(255, 255, 255); text-decoration: none;
}
#print-approval a:hover {
	color: rgb(255, 255, 255) !important;
}
#footer-placeholder div {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/bookshop_top.png") repeat-x left top rgb(254, 246, =
232);
}
#footer p {
	color: rgb(221, 119, 0);
}
#footer li ul li {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/footer-anchor-background.png") no-repeat 0px 6px;
}
#footer li ul li a {
	text-decoration: none;
}
.bundles#publications-navigation h3 {
	color: rgb(112, 126, 144);
}
.bundles#publications-navigation div.static-content {
	color: rgb(112, 126, 144);
}
.bundles#publications-navigation div.static-content a {
	color: rgb(51, 102, 204) !important;
}
.bundles#publications-navigation div.static-content a:visited {
	color: rgb(51, 102, 204) !important;
}
.bundles#publications-navigation div.static-content a:hover {
	color: rgb(221, 119, 0) !important;
}
#content .payment-settings .payment-instrument-info .info table td {
	background-color: rgb(255, 255, 255);
}
.background-print-on-demand {
	background-color: rgb(251, 214, 149);
}
#selected-language-pod input {
	border: currentColor; background-color: rgb(251, 214, 149);
}

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/css;
	charset="iso-8859-1"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/dialog.css

* html .fixed {
	position: absolute;
}
.fixed {
	position: fixed;
}
#dialog-overlay {
	left: 0px; top: 0px; width: 100%; height: 100%; z-index: 900;
}
#dialog-container {
	overflow: hidden; z-index: 901;
}
#dialog-top {
	background: rgb(153, 153, 153); padding: 5px; border: 1px solid =
rgb(255, 255, 255); font-weight: bold;
}
#dialog-title {
	color: rgb(51, 51, 51);
}
#dialog-close {
	color: rgb(255, 255, 255); padding-left: 5px;
}
#dialog-close:hover {
	color: rgb(204, 204, 204);
}
#dialog-bottom {
	background: rgb(238, 238, 238); padding: 5px; text-align: center; =
color: rgb(102, 102, 102); font-size: 12px; border-top-color: rgb(204, =
204, 204); border-top-width: 1px; border-top-style: solid;
}
#dialog-bottom .next {
	color: rgb(51, 51, 51); font-weight: bold;
}
#dialog-bottom .prev {
	color: rgb(51, 51, 51); font-weight: bold;
}
#dialog-bottom .next:hover {
	color: rgb(255, 153, 0);
}
#dialog-bottom .prev:hover {
	color: rgb(255, 153, 0);
}
#dialog-bottom .next {
	padding-left: 10px;
}
#dialog-bottom .prev {
	padding-right: 10px;
}
#dialog-bottom .curr {
=09
}
#dialog-loading {
	background: =
url("http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Si=
te/-/en_GB/images/eu-loading-indicator.gif") no-repeat center; padding: =
20px; text-align: center; color: rgb(204, 204, 204); text-indent: =
-1000px; font-weight: bold;
}
#dialog-container .alert {
	text-align: center; color: rgb(153, 153, 153);
}
#dialog-container .confirm {
	text-align: center; color: rgb(153, 153, 153);
}
#dialog-container .alert input {
	width: 75px; font-weight: bold;
}
#dialog-container .confirm input {
	width: 75px; font-weight: bold;
}
#dialog-container .myFirstDialog {
	color: orange; font-size: 20px;
}

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/css;
	charset="iso-8859-1"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/b2c.css

@import url( =
http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/=
en_GB/css/reset.css );
@import url( =
http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/=
en_GB/css/general-styles.css );
@import url( =
http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/=
en_GB/css/layout-eu.css );
@import url( =
http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/=
en_GB/css/color-scheme.css );
@import url( =
http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/=
en_GB/css/dialog.css );

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/css;
	charset="iso-8859-1"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/reset.css

html {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
body {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
div {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
span {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
applet {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
object {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
iframe {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h1 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h2 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h3 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h4 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h5 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
h6 {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
p {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
blockquote {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
pre {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
a {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
abbr {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
acronym {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
address {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
big {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
cite {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
code {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
del {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
dfn {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
em {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
font {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
img {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
ins {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
kbd {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
q {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
s {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
samp {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
small {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
strike {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
strong {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
sub {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
sup {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
tt {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
var {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
b {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
u {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
i {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
center {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
dl {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
dt {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
dd {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
ol {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
ul {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
li {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
fieldset {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
form {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
label {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
legend {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
table {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
caption {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
tbody {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
tfoot {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
thead {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
tr {
	margin: 0px; padding: 0px; border: 0px currentColor; font-size: 100%; =
vertical-align: baseline;
}
body {
	line-height: 1;
}
ol {
	list-style: none;
}
ul {
	list-style: none;
}
blockquote {
	quotes: none;
}
q {
	quotes: none;
}
blockquote::before {
	content: none;
}
blockquote::after {
	content: none;
}
q::before {
	content: none;
}
q::after {
	content: none;
}
:focus {
	outline: 0px;
}
ins {
	text-decoration: none;
}
del {
	text-decoration: line-through;
}
table {
	border-collapse: collapse; border-spacing: 0;
}

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/css;
	charset="iso-8859-1"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/general-styles.css

html {
	font: 80%/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
table {
	font: 80%/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
input {
	font: 80%/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
select {
	font: 80%/normal "Trebuchet MS", Arial, Helvetica, sans-serif; =
font-size-adjust: none; font-stretch: normal;
}
h1 {
	font-family: Georgia, Arial, Helvetica, sans-serif;
}
h2 {
	font-family: Georgia, Arial, Helvetica, sans-serif;
}
h3 {
	font-family: Georgia, Arial, Helvetica, sans-serif;
}
h1 {
	font-size: 1.6em;
}
h2 {
	font-size: 1.4em;
}
h3 {
	font-size: 1.3em;
}
h4 {
	font-size: 1.1em;
}
input {
	font-size: 100%;
}
select {
	font-size: 100%;
}
.clear {
	clear: both;
}
ul.list li {
	display: inline;
}
dl.list dd {
	display: inline;
}
ol.list {
	display: inline;
}
ul.separated li {
	margin-left: 0.3em; border-right-width: 0.1em; border-right-style: =
solid;
}
dl.separated dd {
	margin-left: 0.3em; border-right-width: 0.1em; border-right-style: =
solid;
}
ul.separated li.last-child {
	border-right-width: 0px;
}
dl.separated dd.last-child {
	border-right-width: 0px;
}
ul.separated li:last-child {
	border-right-width: 0px;
}
dl.separated dd:last-child {
	border-right-width: 0px;
}
.invisible {
	display: none !important;
}
.button input {
	width: auto !important;
}
.buttons {
	margin-top: 1em !important; position: relative;
}
.buttons input {
	width: auto !important;
}
.buttons .rightsided {
	right: 0px; position: absolute;
}
.half-ratio .buttons .rightsided {
	right: 3em;
}
form fieldset {
	margin-top: 1em;
}
form fieldset:first-child {
	margin-top: 0px;
}
form fieldset dl {
	margin: 0.4em 0px !important; clear: both;
}
form fieldset p {
	margin: 0.4em 0px !important; clear: both;
}
form fieldset dl dd {
	margin: 0.3em 0px;
}
form fieldset dl.checkable {
	margin-left: 29% !important;
}
form fieldset p.labeless {
	margin-left: 29% !important;
}
form fieldset p label {
	width: 30%; float: left;
}
form fieldset dl.checkable label {
	width: auto !important; float: none !important;
}
form fieldset p.checkable label {
	width: auto !important; float: none !important;
}
form fieldset p input {
	width: 40%;
}
form fieldset p select {
	width: 40%;
}
form fieldset p.checkable input {
	width: auto; vertical-align: top;
}
form fieldset dl.checkable dd input {
	width: auto; vertical-align: top;
}
form fieldset p.line-fields {
	text-align: left;
}
form fieldset p.line-fields label {
	padding: 0px; width: auto; float: none;
}
form fieldset p.line-fields input {
	padding: 0px; width: auto; float: none;
}
label.first-child {
=09
}
.static-content {
	margin-bottom: 1em;
}
.static-content * {
	text-align: justify;
}
.static-content ul li {
	list-style-type: square !important;
}
.static-content li ul li ul li {
=09
}
.static-content ol li {
	list-style-type: decimal;
}
.static-content ol li {
	margin-left: 2.5em;
}
.static-content ul li {
	margin-left: 2em;
}
.static-content p {
	margin: 0.8em 0px;
}
.static-content h1 {
	padding-left: 0px;
}
.static-content .toc {
	font-weight: bold;
}
.static-content ol {
	margin-left: 0.5em;
}
.static-content table {
	margin: 0px 1em 1.5em; width: 40em; clear: both;
}
#sidebar .static-content table {
	margin: 0px 0px 1.5em !important; width: 99% !important; text-align: =
center;
}
.static-content table th {
=09
}
.static-content table th {
	padding: 0.2em; width: 33%; text-align: center !important; font-size: =
1.2em;
}
.static-content table td {
	padding: 0.2em; width: 33%; text-align: center !important; font-size: =
1.2em;
}
.static-content table td.left {
	text-align: left !important;
}
.static-content table td strong a {
	font-weight: bold !important;
}
#sidebar .static-content table th {
	width: auto; vertical-align: top;
}
#sidebar .static-content table td {
	width: auto; vertical-align: top;
}
.static-content h1 {
	margin: 1em 0px;
}
.static-content h2 {
	margin: 1em 0px;
}
.static-content h3 {
	margin: 1em 0px;
}
.static-content h4 {
	margin: 1em 0px;
}
.static-content h5 {
	margin: 1em 0px;
}
.static-content h6 {
	margin: 1em 0px;
}
.static-content p {
	margin: 0px 1em 0px 0px; line-height: 1.3em; clear: both;
}
.static-content div {
	margin: 0px 1em 0px 0px; line-height: 1.3em; clear: both;
}
.static-content p {
	padding-left: 0.65em !important; clear: both; margin-bottom: 0.8em =
!important;
}
.static-content ul {
	padding-left: 0.65em !important; clear: both; margin-bottom: 0.8em =
!important;
}
.static-content h4 {
	clear: both;
}
.static-content ul {
	clear: both;
}
.static-content ol {
	clear: both;
}
.static-content li p {
	padding-left: 0px !important;
}
.static-content {
	font-size: 0.9em;
}
.static-content h1 {
	padding: 0.2em 4em 0.2em 0px !important; text-indent: 0.4em; font-size: =
1.2em !important; margin-bottom: 0.5em !important; white-space: nowrap;
}
.static-content h3 {
	padding: 0.2em 4em 0.2em 0px !important; text-indent: 0.4em; font-size: =
1.2em !important; margin-bottom: 0.5em !important; white-space: nowrap;
}
.static-content h1 {
	padding: 0.2em 4em 0.2em 0.2em !important;
}
.static-content h4 {
	padding-left: 0.65em !important;
}
.static-content li h4 {
	padding-left: 0px !important;
}
.anchor-to-content {
	text-align: right !important; font-weight: bold; margin-bottom: 1em;
}
.static-content address {
	padding-left: 0.65em; font-style: normal; font-weight: bold;
}
dl.errors {
	padding: 0.5em; border: 0.1em solid rgb(255, 85, 85); margin-right: =
1em; margin-bottom: 1em; background-color: rgb(255, 221, 221);
}
dl.errors dt {
	padding: 0.5em; font-weight: bold;
}
dl.errors dd {
	margin: 0.5em;
}
label.error {
	color: rgb(255, 85, 85);
}
p.error {
	color: rgb(255, 85, 85);
}
.required {
	color: rgb(255, 85, 85);
}
option.category-level-1 {
	padding-left: 0px;
}
option.category-level-2 {
	padding-left: 10px;
}
option.category-level-3 {
	padding-left: 20px;
}
option.category-level-4 {
	padding-left: 30px;
}
option.category-level-5 {
	padding-left: 40px;
}
option.category-level-6 {
	padding-left: 50px;
}
table {
	width: 100%;
}
table tbody tr td {
	text-align: center;
}
table tfoot tr th {
	text-align: right;
}
table tfoot tr td {
	text-align: center;
}
.floatable {
	margin: 0px !important; width: 50%; float: left;
}
.half-ratio.floatable {
	width: 40% !important;
}
.inline-proxy * {
	width: auto; display: inline !important;
}
.inline-proxy {
	width: auto; display: inline !important;
}
.line {
	clear: both; display: block !important;
}
.line-all-studies {
	clear: both; margin-bottom: 0.5em; display: block !important;
}
.borderless {
	border: currentColor !important;
}
.submit-trigger {
=09
}
body.sales-conditions {
	min-width: 7em !important;
}
#sales-conditions {
	padding: 1em;
}
.glued {
	margin-left: 0px !important;
}
.side-element {
	margin-left: 0.5em !important;
}
.bound-to-background {
	z-index: 1 !important;
}
.hidden-in-background {
	position: relative !important; z-index: -1 !important;
}
.special-in-background {
	z-index: -1 !important;
}
.glass {
=09
}
.centerized {
	text-align: center;
}
.hidden {
	display: none;
}
.result-is-empty {
	margin-left: 0.8em !important;
}

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: text/css;
	charset="iso-8859-1"
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/css/print.css

@import url( =
http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/=
en_GB/css/reset.css );
@import url( =
http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/=
en_GB/css/general-styles.css );
#footer {
	display: none;
}
#categories {
	display: none;
}
#sidebar {
	display: none;
}
#navigation {
	display: none;
}
#search {
	display: none;
}
#language {
	display: none;
}
#catalogs {
	display: none;
}
#options {
	display: none;
}
#europa-gateway {
	display: none;
}
#list-sorting {
	display: none;
}
#result-options {
	display: none;
}
#breadcrumb {
	display: none;
}
#publications-categories {
	display: none;
}
#show-serials {
	display: none;
}
.invisible {
	display: none;
}
.print-trigger {
	display: none;
}
.bookmark-trigger {
	display: none;
}
.browse-results {
	display: none;
}
.buttons {
	display: none;
}
.item-option {
	display: none;
}
.item-summary {
	display: none;
}
#publications .more-reading {
	display: none;
}
#publications .available-formats {
	display: none;
}
.more {
	display: none;
}
* {
	background: rgb(255, 255, 255); border-color: rgb(0, 0, 0); color: =
rgb(0, 0, 0);
}
a {
	background: rgb(255, 255, 255); border-color: rgb(0, 0, 0); color: =
rgb(0, 0, 0);
}
a:hover {
	background: rgb(255, 255, 255); border-color: rgb(0, 0, 0); color: =
rgb(0, 0, 0);
}
#breadcrumb {
	background: rgb(255, 255, 255); border-color: rgb(0, 0, 0); color: =
rgb(0, 0, 0);
}
#breadcrumb a {
	background: rgb(255, 255, 255); border-color: rgb(0, 0, 0); color: =
rgb(0, 0, 0);
}
#breadcrumb a.active {
	background: rgb(255, 255, 255); border-color: rgb(0, 0, 0); color: =
rgb(0, 0, 0);
}
a {
	text-decoration: none;
}
a:hover {
	text-decoration: none;
}
#main-container {
	margin: 0px 1em;
}
.cover {
	margin-right: 1em; float: left;
}
#header {
	text-align: center; padding-bottom: 2em;
}
#content h3 {
	padding: 0px 0px 0.5em; font-size: 1.1em; margin-top: 0em; =
margin-bottom: 0.1em;
}
#content h4 {
	padding: 0.2em 0px; margin-top: 0px !important; margin-right: 1em;
}
#content p {
	margin: 0px 1em 0px 0px; line-height: 1.3em;
}
#content div {
	margin: 0px 1em 0px 0px; line-height: 1.3em;
}
#content p {
	margin-bottom: 1em;
}
#content ul {
	margin-bottom: 1em;
}
#content form fieldset p {
	margin-right: 0px;
}
#focus-on {
	margin-top: 2em;
}
#recommendations {
	padding: 1em 0px; clear: both;
}
.publication-details {
	width: 30%; font-family: Verdana, Arial, Georgia, sans-serif; =
font-size: 0.9em; float: left;
}
.publication-details h5 {
	clear: both;
}
#publications li {
	margin-top: 2.5em; border-bottom-color: black; border-bottom-width: =
1px; border-bottom-style: solid;
}
#publications li:first-child {
=09
}
#publications li .cover {
	float: none !important;
}
#publications li .cover img {
	width: 93px; height: 130px; display: block;
}
#publications li dl {
	margin: 0.5em 0px; display: block !important;
}
#publication dl dt {
	display: inline !important;
}
#publication dl dd {
	display: inline !important;
}
#publications dl dt {
	display: inline !important;
}
#publications dl dd {
	display: inline !important;
}
.paging li {
	display: none !important;
}
.paging li.item {
	display: block !important;
}
#editions {
	margin-top: 1em;
}
#editions .invisible {
	display: none !important;
}
#editions .editions-info td {
	width: 25%; font-size: 1.1em;
}
#order-detailed-information {
	margin: 1em 0px; width: auto; font-size: 1em;
}
#order-detailed-information th {
	text-align: left; padding-right: 1em;
}
.list-items {
	font-size: 1em; margin-top: 1em;
}
#order table.listing {
	font-size: 1em; margin-top: 1em;
}
.list-items tfoot td {
	padding: 0.5em 0px;
}
.list-items tfoot th {
	padding: 0.5em 0px;
}
.static-content h3 {
	text-indent: 0px !important; padding-left: 0px !important;
}
.static-content p {
	text-indent: 0px !important; padding-left: 0px !important;
}
#signature p {
	margin: 0px !important; width: 32%; float: left;
}

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: application/octet-stream
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/cookies.js

function refuseCookie(){
	if(document.getElementById("cookie-refuse-input").checked){
		document.getElementById("cookie-accept").className =3D "";
		document.getElementById("cookie-refuse").className =3D "";
		document.getElementById("cookie-refuse-all").className =3D "";
		document.getElementById("cookie-accept-input").checked =3D "";
		document.getElementById("cookie-refuse-all-input").checked =3D "";
		setCookie("user_consent", "false", 14600 );
		document.cookie =3D "new_visit=3D; expires=3DThu, 01 Jan 1970 00:00:00 =
GMT";=20
	}
	else {
		document.getElementById("cookie-refuse").className =3D "errors";
	}
}

function refuseAllCookie(){
	if(document.getElementById("cookie-refuse-all-input").checked){
		document.getElementById("cookie-accept").className =3D "";
		document.getElementById("cookie-refuse-all").className =3D "";
		document.getElementById("cookie-refuse").className =3D "";
		document.getElementById("cookie-refuse-input").checked =3D "";
		document.getElementById("cookie-accept-input").checked =3D "";
		setCookie("user_consent", "false");
		document.cookie =3D "new_visit=3D; expires=3DThu, 01 Jan 1970 00:00:00 =
GMT";=20
	}
	else {
		document.getElementById("cookie-refuse-all").className =3D "errors";
	}
}

function acceptCookie(){
	if(document.getElementById("cookie-accept-input").checked){
		document.getElementById("cookie-accept").className =3D "";
		document.getElementById("cookie-refuse").className =3D "";
		document.getElementById("cookie-refuse-all").className =3D "";
		document.getElementById("cookie-refuse-input").checked =3D "";
		document.getElementById("cookie-refuse-all-input").checked =3D "";
		setCookie("user_consent", "true", 14600 );
		document.cookie =3D "new_visit=3D; expires=3DThu, 01 Jan 1970 00:00:00 =
GMT";=20
	}
	else {
		document.getElementById("cookie-accept").className =3D "errors";
	}
}

window.onload=3Dfunction(){
	var userConsent =3D getCookie("user_consent");
	if(!userConsent){
		var newVisit =3D getCookie("new_visit");
		if(newVisit){
			setCookie("user_consent", "true", 14600 );
			document.cookie =3D "new_visit=3D; expires=3DThu, 01 Jan 1970 =
00:00:00 GMT";=20
		}
		else {
			setCookie("new_visit", "true");
			document.getElementById("cookie-consent-banner").style.display =3D =
"block";
		}
	}
};

function bannerAccept() {
	setCookie("user_consent", "true", 14600 );
	document.cookie =3D "new_visit=3D; expires=3DThu, 01 Jan 1970 00:00:00 =
GMT";=20
	document.getElementById("cookie-consent-banner").style.display =3D =
"none";
}

function getCookie(cname) {
    var name =3D cname + "=3D";
    var ca =3D document.cookie.split(';');
    for(var i=3D0; i<ca.length; i++) {
        var c =3D ca[i];
        while (c.charAt(0)=3D=3D' ') c =3D c.substring(1);
        if (c.indexOf(name) !=3D -1) return =
c.substring(name.length,c.length);
    }
    return "";
}=20

function setCookie(cname, cvalue, exdays) {
    var d =3D new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires =3D "expires=3D"+d.toGMTString();
    document.cookie =3D cname + "=3D" + cvalue + "; " + expires + "; =
path=3D/";
} 
------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: application/octet-stream
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/behaviour.js

/*
   Behaviour v1.1 by Ben Nolan, June 2005. Based largely on the work
   of Simon Willison (see comments by Simon below).

   Description:
   =09
   	Uses css selectors to apply javascript behaviours to enable
   	unobtrusive javascript in html documents.
   =09
   Usage:  =20
  =20
	var myrules =3D {
		'b.someclass' : function(element){
			element.onclick =3D function(){
				alert(this.innerHTML);
			}
		},
		'#someid u' : function(element){
			element.onmouseover =3D function(){
				this.innerHTML =3D "BLAH!";
			}
		}
	};
=09
	Behaviour.register(myrules);
=09
	// Call Behaviour.apply() to re-apply the rules (if you
	// update the dom, etc).

   License:
  =20
   	This file is entirely BSD licensed.=0A=
   =09
   More information:
   =09
   	http://ripcord.co.nz/behaviour/
  =20
*/  =20

var Behaviour =3D {
	list : new Array,
=09
	register : function(sheet){
		Behaviour.list.push(sheet);
	},
=09
	start : function(){
		Behaviour.addLoadEvent(function(){
			Behaviour.apply();
		});
	},
=09
	apply : function(){
		for (h=3D0;sheet=3DBehaviour.list[h];h++){
			for (selector in sheet){
				list =3D document.getElementsBySelector(selector);
			=09
				if (!list){
					continue;
				}

				for (i=3D0;element=3Dlist[i];i++){
					sheet[selector](element);
				}
			}
		}
	},
=09
	addLoadEvent : function(func){
		var oldonload =3D window.onload;
	=09
		if (typeof window.onload !=3D 'function') {
			window.onload =3D func;
		} else {
			window.onload =3D function() {
				oldonload();
				func();
			}
		}
	}
}

Behaviour.start();

/*
   The following code is Copyright (C) Simon Willison 2004.

   document.getElementsBySelector(selector)
   - returns an array of element objects from the current document
     matching the CSS selector. Selectors can contain element names,=20
     class names and ids and can be nested. For example:
    =20
       elements =3D document.getElementsBySelect('div#main p =
a.external')
    =20
     Will return an array of all 'a' elements with 'external' in their=20
     class attribute that are contained inside 'p' elements that are=20
     contained inside the 'div' element which has id=3D"main"

   New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
   See http://www.w3.org/TR/css3-selectors/#attribute-selectors

   Version 0.4 - Simon Willison, March 25th 2003
   -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, =
Internet Explorer 5 on Windows
   -- Opera 7 fails=20
*/

function getAllChildren(e) {
  // Returns all children of element. Workaround required for =
IE5/Windows. Ugh.
  return e.all ? e.all : e.getElementsByTagName('*');
}

document.getElementsBySelector =3D function(selector) {
  // Attempt to fail gracefully in lesser browsers
  if (!document.getElementsByTagName) {
    return new Array();
  }
  // Split selector in to tokens
  var tokens =3D selector.split(' ');
  var currentContext =3D new Array(document);
  for (var i =3D 0; i < tokens.length; i++) {
    token =3D tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');;
    if (token.indexOf('#') > -1) {
      // Token is an ID selector
      var bits =3D token.split('#');
      var tagName =3D bits[0];
      var id =3D bits[1];
      var element =3D document.getElementById(id);
      if (tagName && element.nodeName.toLowerCase() !=3D tagName) {
        // tag with that ID not found, return false
        return new Array();
      }
      // Set currentContext to contain just this element
      currentContext =3D new Array(element);
      continue; // Skip to next token
    }
    if (token.indexOf('.') > -1) {
      // Token contains a class selector
      var bits =3D token.split('.');
      var tagName =3D bits[0];
      var className =3D bits[1];
      if (!tagName) {
        tagName =3D '*';
      }
      // Get elements matching tag, filter them for class selector
      var found =3D new Array;
      var foundCount =3D 0;
      for (var h =3D 0; h < currentContext.length; h++) {
        var elements;
        if (tagName =3D=3D '*') {
            elements =3D getAllChildren(currentContext[h]);
        } else {
            elements =3D =
currentContext[h].getElementsByTagName(tagName);
        }
        for (var j =3D 0; j < elements.length; j++) {
          found[foundCount++] =3D elements[j];
        }
      }
      currentContext =3D new Array;
      var currentContextIndex =3D 0;
      for (var k =3D 0; k < found.length; k++) {
        if (found[k].className && found[k].className.match(new =
RegExp('\\b'+className+'\\b'))) {
          currentContext[currentContextIndex++] =3D found[k];
        }
      }
      continue; // Skip to next token
    }
    // Code to deal with attribute selectors
    if =
(token.match(/^(\w*)\[(\w+)([=3D~\|\^\$\*]?)=3D?"?([^\]"]*)"?\]$/)) {
      var tagName =3D RegExp.$1;
      var attrName =3D RegExp.$2;
      var attrOperator =3D RegExp.$3;
      var attrValue =3D RegExp.$4;
      if (!tagName) {
        tagName =3D '*';
      }
      // Grab all of the tagName elements within current context
      var found =3D new Array;
      var foundCount =3D 0;
      for (var h =3D 0; h < currentContext.length; h++) {
        var elements;
        if (tagName =3D=3D '*') {
            elements =3D getAllChildren(currentContext[h]);
        } else {
            elements =3D =
currentContext[h].getElementsByTagName(tagName);
        }
        for (var j =3D 0; j < elements.length; j++) {
          found[foundCount++] =3D elements[j];
        }
      }
      currentContext =3D new Array;
      var currentContextIndex =3D 0;
      var checkFunction; // This function will be used to filter the =
elements
      switch (attrOperator) {
        case '=3D': // Equality
          checkFunction =3D function(e) { return =
(e.getAttribute(attrName) =3D=3D attrValue); };
          break;
        case '~': // Match one of space seperated words=20
          checkFunction =3D function(e) { return =
(e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
          break;
        case '|': // Match start with value followed by optional hyphen
          checkFunction =3D function(e) { return =
(e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
          break;
        case '^': // Match starts with value
          checkFunction =3D function(e) { return =
(e.getAttribute(attrName).indexOf(attrValue) =3D=3D 0); };
          break;
        case '$': // Match ends with value - fails with "Warning" in =
Opera 7
          checkFunction =3D function(e) { return =
(e.getAttribute(attrName).lastIndexOf(attrValue) =3D=3D =
e.getAttribute(attrName).length - attrValue.length); };
          break;
        case '*': // Match ends with value
          checkFunction =3D function(e) { return =
(e.getAttribute(attrName).indexOf(attrValue) > -1); };
          break;
        default :
          // Just test for existence of attribute
          checkFunction =3D function(e) { return =
e.getAttribute(attrName); };
      }
      currentContext =3D new Array;
      var currentContextIndex =3D 0;
      for (var k =3D 0; k < found.length; k++) {
        if (checkFunction(found[k])) {
          currentContext[currentContextIndex++] =3D found[k];
        }
      }
      // alert('Attribute Selector: '+tagName+' '+attrName+' =
'+attrOperator+' '+attrValue);
      continue; // Skip to next token
    }
   =20
    if (!currentContext[0]){
    	return;
    }
   =20
    // If we get here, token is JUST an element (not a class or ID =
selector)
    tagName =3D token;
    var found =3D new Array;
    var foundCount =3D 0;
    for (var h =3D 0; h < currentContext.length; h++) {
      var elements =3D currentContext[h].getElementsByTagName(tagName);
      for (var j =3D 0; j < elements.length; j++) {
        found[foundCount++] =3D elements[j];
      }
    }
    currentContext =3D found;
  }
  return currentContext;
}

/* That revolting regular expression explained=20
/^(\w+)\[(\w+)([=3D~\|\^\$\*]?)=3D?"?([^\]"]*)"?\]$/
  \---/  \---/\-------------/    \-------/
    |      |         |               |
    |      |         |           The value
    |      |    ~,|,^,$,* or =3D
    |   Attribute=20
   Tag
*/

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: application/octet-stream
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/behaviours.js

var behaviours =3D {
    'a.print-trigger' : function(e) {
        e.onclick =3D function(evt) {
            window.print();
            return false;
        }
    },
    'a.bookmark-trigger' : function(e) {
        e.onclick =3D function(evt) {
       =20
            var URL =3D window.location;
            var title =3D document.title;
      =20
            if (document.all)
                window.external.addFavorite(URL, title);
            else if (window.sidebar)
                window.sidebar.addPanel(title, URL, '');
       =20
            return false;
        }
    },
    '.on-change-trigger' : function(e) {
        e.onchange =3D function(evt) {
            if (this.options[this.selectedIndex].value !=3D '')
                $(this).up('form').submit();
        }
    },
    '.submit-trigger' : function(e) {
        e.onclick =3D function(evt) {
            var _appendValuePrefix =3D 'append-value-';
            var targetForm =3D $(this).up('form');
            var classes =3D $w(this.className);
            for (var i =3D 0; i < classes.length; i++) {
                if (classes[i].match(_appendValuePrefix)) {
                    targetForm.appendChild(new Element('input', {'type' =
: 'hidden', 'name' : classes[i].replace(_appendValuePrefix, ''), 'value' =
: classes[i].replace(_appendValuePrefix, '')}));
                }
            }
            targetForm.submit();
           =20
            var evt =3D evt || window.event;
            Event.stop(evt);
        }
    },
	'.new-window-trigger' : function(e) {
		e.onclick =3D function(evt) {
		=09
		}
	},
	'.dialog-close' : function(e) {
		e.onclick =3D function(evt) {
			Dialogs.close();
			return false;
		}
	},
	'form.concurency-aware' : function(e) {
		e.onsubmit =3D function(evt) {
			var form =3D $(this);
			if (form.hasClassName('_concurency-flag-raised')) {
				var evt =3D evt || window.event;
	            Event.stop(evt);
			} else {
				form.addClassName('_concurency-flag-raised')
			}
		}
	}
};

Behaviour.register(behaviours);
Behaviour.addLoadEvent(
	function() {
	=09
	}
)

function createLayer(placeholder, webRoot) {
	var layer =3D new Element('span',{'class':'layer'});
	placeholder.setStyle({
		'background': 'url('+webRoot+'/images/eu-loading-indicator.gif) 99% 5% =
no-repeat'
	});
	layer.setStyle({
		'background' : '#000',
		'display' : 'block',
		'filter': 'alpha(opacity=3D5)',
		'height' : placeholder.getHeight() + 'px',
		'left' : '0',
		'opacity': '0.05',
		'position' : 'absolute',
		'top' : '0',
		'z-index': '101',
		'width' : placeholder.getWidth() + 'px'
	});
	placeholder.insert(layer);
}

function removeBackground(element) {
	$(element).setStyle({'backgroundImage':'none'});
}
------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: application/octet-stream
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/prototype.js

/*  Prototype JavaScript framework, version 1.7=0A=
 *  (c) 2005-2010 Sam Stephenson=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *  For details, see the Prototype web site: http://www.prototypejs.org/=0A=
 *=0A=
 =
*------------------------------------------------------------------------=
--*/=0A=
=0A=
var Prototype =3D {=0A=
=0A=
  Version: '1.7',=0A=
=0A=
  Browser: (function(){=0A=
    var ua =3D navigator.userAgent;=0A=
    var isOpera =3D Object.prototype.toString.call(window.opera) =3D=3D =
'[object Opera]';=0A=
    return {=0A=
      IE:             !!window.attachEvent && !isOpera,=0A=
      Opera:          isOpera,=0A=
      WebKit:         ua.indexOf('AppleWebKit/') > -1,=0A=
      Gecko:          ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') =
=3D=3D=3D -1,=0A=
      MobileSafari:   /Apple.*Mobile/.test(ua)=0A=
    }=0A=
  })(),=0A=
=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate,=0A=
=0A=
    SelectorsAPI: !!document.querySelector,=0A=
=0A=
    ElementExtensions: (function() {=0A=
      var constructor =3D window.Element || window.HTMLElement;=0A=
      return !!(constructor && constructor.prototype);=0A=
    })(),=0A=
    SpecificElementExtensions: (function() {=0A=
      if (typeof window.HTMLDivElement !=3D=3D 'undefined')=0A=
        return true;=0A=
=0A=
      var div =3D document.createElement('div'),=0A=
          form =3D document.createElement('form'),=0A=
          isSupported =3D false;=0A=
=0A=
      if (div['__proto__'] && (div['__proto__'] !=3D=3D =
form['__proto__'])) {=0A=
        isSupported =3D true;=0A=
      }=0A=
=0A=
      div =3D form =3D null;=0A=
=0A=
      return isSupported;=0A=
    })()=0A=
  },=0A=
=0A=
  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',=0A=
  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A=
=0A=
  emptyFunction: function() { },=0A=
=0A=
  K: function(x) { return x }=0A=
};=0A=
=0A=
if (Prototype.Browser.MobileSafari)=0A=
  Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A=
=0A=
=0A=
var Abstract =3D { };=0A=
=0A=
=0A=
var Try =3D {=0A=
  these: function() {=0A=
    var returnValue;=0A=
=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var lambda =3D arguments[i];=0A=
      try {=0A=
        returnValue =3D lambda();=0A=
        break;=0A=
      } catch (e) { }=0A=
    }=0A=
=0A=
    return returnValue;=0A=
  }=0A=
};=0A=
=0A=
/* Based on Alex Arnell's inheritance implementation. */=0A=
=0A=
var Class =3D (function() {=0A=
=0A=
  var IS_DONTENUM_BUGGY =3D (function(){=0A=
    for (var p in { toString: 1 }) {=0A=
      if (p =3D=3D=3D 'toString') return false;=0A=
    }=0A=
    return true;=0A=
  })();=0A=
=0A=
  function subclass() {};=0A=
  function create() {=0A=
    var parent =3D null, properties =3D $A(arguments);=0A=
    if (Object.isFunction(properties[0]))=0A=
      parent =3D properties.shift();=0A=
=0A=
    function klass() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
=0A=
    Object.extend(klass, Class.Methods);=0A=
    klass.superclass =3D parent;=0A=
    klass.subclasses =3D [];=0A=
=0A=
    if (parent) {=0A=
      subclass.prototype =3D parent.prototype;=0A=
      klass.prototype =3D new subclass;=0A=
      parent.subclasses.push(klass);=0A=
    }=0A=
=0A=
    for (var i =3D 0, length =3D properties.length; i < length; i++)=0A=
      klass.addMethods(properties[i]);=0A=
=0A=
    if (!klass.prototype.initialize)=0A=
      klass.prototype.initialize =3D Prototype.emptyFunction;=0A=
=0A=
    klass.prototype.constructor =3D klass;=0A=
    return klass;=0A=
  }=0A=
=0A=
  function addMethods(source) {=0A=
    var ancestor   =3D this.superclass && this.superclass.prototype,=0A=
        properties =3D Object.keys(source);=0A=
=0A=
    if (IS_DONTENUM_BUGGY) {=0A=
      if (source.toString !=3D Object.prototype.toString)=0A=
        properties.push("toString");=0A=
      if (source.valueOf !=3D Object.prototype.valueOf)=0A=
        properties.push("valueOf");=0A=
    }=0A=
=0A=
    for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A=
      var property =3D properties[i], value =3D source[property];=0A=
      if (ancestor && Object.isFunction(value) &&=0A=
          value.argumentNames()[0] =3D=3D "$super") {=0A=
        var method =3D value;=0A=
        value =3D (function(m) {=0A=
          return function() { return ancestor[m].apply(this, arguments); =
};=0A=
        })(property).wrap(method);=0A=
=0A=
        value.valueOf =3D method.valueOf.bind(method);=0A=
        value.toString =3D method.toString.bind(method);=0A=
      }=0A=
      this.prototype[property] =3D value;=0A=
    }=0A=
=0A=
    return this;=0A=
  }=0A=
=0A=
  return {=0A=
    create: create,=0A=
    Methods: {=0A=
      addMethods: addMethods=0A=
    }=0A=
  };=0A=
})();=0A=
(function() {=0A=
=0A=
  var _toString =3D Object.prototype.toString,=0A=
      NULL_TYPE =3D 'Null',=0A=
      UNDEFINED_TYPE =3D 'Undefined',=0A=
      BOOLEAN_TYPE =3D 'Boolean',=0A=
      NUMBER_TYPE =3D 'Number',=0A=
      STRING_TYPE =3D 'String',=0A=
      OBJECT_TYPE =3D 'Object',=0A=
      FUNCTION_CLASS =3D '[object Function]',=0A=
      BOOLEAN_CLASS =3D '[object Boolean]',=0A=
      NUMBER_CLASS =3D '[object Number]',=0A=
      STRING_CLASS =3D '[object String]',=0A=
      ARRAY_CLASS =3D '[object Array]',=0A=
      DATE_CLASS =3D '[object Date]',=0A=
      NATIVE_JSON_STRINGIFY_SUPPORT =3D window.JSON &&=0A=
        typeof JSON.stringify =3D=3D=3D 'function' &&=0A=
        JSON.stringify(0) =3D=3D=3D '0' &&=0A=
        typeof JSON.stringify(Prototype.K) =3D=3D=3D 'undefined';=0A=
=0A=
  function Type(o) {=0A=
    switch(o) {=0A=
      case null: return NULL_TYPE;=0A=
      case (void 0): return UNDEFINED_TYPE;=0A=
    }=0A=
    var type =3D typeof o;=0A=
    switch(type) {=0A=
      case 'boolean': return BOOLEAN_TYPE;=0A=
      case 'number':  return NUMBER_TYPE;=0A=
      case 'string':  return STRING_TYPE;=0A=
    }=0A=
    return OBJECT_TYPE;=0A=
  }=0A=
=0A=
  function extend(destination, source) {=0A=
    for (var property in source)=0A=
      destination[property] =3D source[property];=0A=
    return destination;=0A=
  }=0A=
=0A=
  function inspect(object) {=0A=
    try {=0A=
      if (isUndefined(object)) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : String(object);=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  }=0A=
=0A=
  function toJSON(value) {=0A=
    return Str('', { '': value }, []);=0A=
  }=0A=
=0A=
  function Str(key, holder, stack) {=0A=
    var value =3D holder[key],=0A=
        type =3D typeof value;=0A=
=0A=
    if (Type(value) =3D=3D=3D OBJECT_TYPE && typeof value.toJSON =
=3D=3D=3D 'function') {=0A=
      value =3D value.toJSON(key);=0A=
    }=0A=
=0A=
    var _class =3D _toString.call(value);=0A=
=0A=
    switch (_class) {=0A=
      case NUMBER_CLASS:=0A=
      case BOOLEAN_CLASS:=0A=
      case STRING_CLASS:=0A=
        value =3D value.valueOf();=0A=
    }=0A=
=0A=
    switch (value) {=0A=
      case null: return 'null';=0A=
      case true: return 'true';=0A=
      case false: return 'false';=0A=
    }=0A=
=0A=
    type =3D typeof value;=0A=
    switch (type) {=0A=
      case 'string':=0A=
        return value.inspect(true);=0A=
      case 'number':=0A=
        return isFinite(value) ? String(value) : 'null';=0A=
      case 'object':=0A=
=0A=
        for (var i =3D 0, length =3D stack.length; i < length; i++) {=0A=
          if (stack[i] =3D=3D=3D value) { throw new TypeError(); }=0A=
        }=0A=
        stack.push(value);=0A=
=0A=
        var partial =3D [];=0A=
        if (_class =3D=3D=3D ARRAY_CLASS) {=0A=
          for (var i =3D 0, length =3D value.length; i < length; i++) {=0A=
            var str =3D Str(i, value, stack);=0A=
            partial.push(typeof str =3D=3D=3D 'undefined' ? 'null' : =
str);=0A=
          }=0A=
          partial =3D '[' + partial.join(',') + ']';=0A=
        } else {=0A=
          var keys =3D Object.keys(value);=0A=
          for (var i =3D 0, length =3D keys.length; i < length; i++) {=0A=
            var key =3D keys[i], str =3D Str(key, value, stack);=0A=
            if (typeof str !=3D=3D "undefined") {=0A=
               partial.push(key.inspect(true)+ ':' + str);=0A=
             }=0A=
          }=0A=
          partial =3D '{' + partial.join(',') + '}';=0A=
        }=0A=
        stack.pop();=0A=
        return partial;=0A=
    }=0A=
  }=0A=
=0A=
  function stringify(object) {=0A=
    return JSON.stringify(object);=0A=
  }=0A=
=0A=
  function toQueryString(object) {=0A=
    return $H(object).toQueryString();=0A=
  }=0A=
=0A=
  function toHTML(object) {=0A=
    return object && object.toHTML ? object.toHTML() : =
String.interpret(object);=0A=
  }=0A=
=0A=
  function keys(object) {=0A=
    if (Type(object) !=3D=3D OBJECT_TYPE) { throw new TypeError(); }=0A=
    var results =3D [];=0A=
    for (var property in object) {=0A=
      if (object.hasOwnProperty(property)) {=0A=
        results.push(property);=0A=
      }=0A=
    }=0A=
    return results;=0A=
  }=0A=
=0A=
  function values(object) {=0A=
    var results =3D [];=0A=
    for (var property in object)=0A=
      results.push(object[property]);=0A=
    return results;=0A=
  }=0A=
=0A=
  function clone(object) {=0A=
    return extend({ }, object);=0A=
  }=0A=
=0A=
  function isElement(object) {=0A=
    return !!(object && object.nodeType =3D=3D 1);=0A=
  }=0A=
=0A=
  function isArray(object) {=0A=
    return _toString.call(object) =3D=3D=3D ARRAY_CLASS;=0A=
  }=0A=
=0A=
  var hasNativeIsArray =3D (typeof Array.isArray =3D=3D 'function')=0A=
    && Array.isArray([]) && !Array.isArray({});=0A=
=0A=
  if (hasNativeIsArray) {=0A=
    isArray =3D Array.isArray;=0A=
  }=0A=
=0A=
  function isHash(object) {=0A=
    return object instanceof Hash;=0A=
  }=0A=
=0A=
  function isFunction(object) {=0A=
    return _toString.call(object) =3D=3D=3D FUNCTION_CLASS;=0A=
  }=0A=
=0A=
  function isString(object) {=0A=
    return _toString.call(object) =3D=3D=3D STRING_CLASS;=0A=
  }=0A=
=0A=
  function isNumber(object) {=0A=
    return _toString.call(object) =3D=3D=3D NUMBER_CLASS;=0A=
  }=0A=
=0A=
  function isDate(object) {=0A=
    return _toString.call(object) =3D=3D=3D DATE_CLASS;=0A=
  }=0A=
=0A=
  function isUndefined(object) {=0A=
    return typeof object =3D=3D=3D "undefined";=0A=
  }=0A=
=0A=
  extend(Object, {=0A=
    extend:        extend,=0A=
    inspect:       inspect,=0A=
    toJSON:        NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON,=0A=
    toQueryString: toQueryString,=0A=
    toHTML:        toHTML,=0A=
    keys:          Object.keys || keys,=0A=
    values:        values,=0A=
    clone:         clone,=0A=
    isElement:     isElement,=0A=
    isArray:       isArray,=0A=
    isHash:        isHash,=0A=
    isFunction:    isFunction,=0A=
    isString:      isString,=0A=
    isNumber:      isNumber,=0A=
    isDate:        isDate,=0A=
    isUndefined:   isUndefined=0A=
  });=0A=
})();=0A=
Object.extend(Function.prototype, (function() {=0A=
  var slice =3D Array.prototype.slice;=0A=
=0A=
  function update(array, args) {=0A=
    var arrayLength =3D array.length, length =3D args.length;=0A=
    while (length--) array[arrayLength + length] =3D args[length];=0A=
    return array;=0A=
  }=0A=
=0A=
  function merge(array, args) {=0A=
    array =3D slice.call(array, 0);=0A=
    return update(array, args);=0A=
  }=0A=
=0A=
  function argumentNames() {=0A=
    var names =3D =
this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]=0A=
      .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')=0A=
      .replace(/\s+/g, '').split(',');=0A=
    return names.length =3D=3D 1 && !names[0] ? [] : names;=0A=
  }=0A=
=0A=
  function bind(context) {=0A=
    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return =
this;=0A=
    var __method =3D this, args =3D slice.call(arguments, 1);=0A=
    return function() {=0A=
      var a =3D merge(args, arguments);=0A=
      return __method.apply(context, a);=0A=
    }=0A=
  }=0A=
=0A=
  function bindAsEventListener(context) {=0A=
    var __method =3D this, args =3D slice.call(arguments, 1);=0A=
    return function(event) {=0A=
      var a =3D update([event || window.event], args);=0A=
      return __method.apply(context, a);=0A=
    }=0A=
  }=0A=
=0A=
  function curry() {=0A=
    if (!arguments.length) return this;=0A=
    var __method =3D this, args =3D slice.call(arguments, 0);=0A=
    return function() {=0A=
      var a =3D merge(args, arguments);=0A=
      return __method.apply(this, a);=0A=
    }=0A=
  }=0A=
=0A=
  function delay(timeout) {=0A=
    var __method =3D this, args =3D slice.call(arguments, 1);=0A=
    timeout =3D timeout * 1000;=0A=
    return window.setTimeout(function() {=0A=
      return __method.apply(__method, args);=0A=
    }, timeout);=0A=
  }=0A=
=0A=
  function defer() {=0A=
    var args =3D update([0.01], arguments);=0A=
    return this.delay.apply(this, args);=0A=
  }=0A=
=0A=
  function wrap(wrapper) {=0A=
    var __method =3D this;=0A=
    return function() {=0A=
      var a =3D update([__method.bind(this)], arguments);=0A=
      return wrapper.apply(this, a);=0A=
    }=0A=
  }=0A=
=0A=
  function methodize() {=0A=
    if (this._methodized) return this._methodized;=0A=
    var __method =3D this;=0A=
    return this._methodized =3D function() {=0A=
      var a =3D update([this], arguments);=0A=
      return __method.apply(null, a);=0A=
    };=0A=
  }=0A=
=0A=
  return {=0A=
    argumentNames:       argumentNames,=0A=
    bind:                bind,=0A=
    bindAsEventListener: bindAsEventListener,=0A=
    curry:               curry,=0A=
    delay:               delay,=0A=
    defer:               defer,=0A=
    wrap:                wrap,=0A=
    methodize:           methodize=0A=
  }=0A=
})());=0A=
=0A=
=0A=
=0A=
(function(proto) {=0A=
=0A=
=0A=
  function toISOString() {=0A=
    return this.getUTCFullYear() + '-' +=0A=
      (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A=
      this.getUTCDate().toPaddedString(2) + 'T' +=0A=
      this.getUTCHours().toPaddedString(2) + ':' +=0A=
      this.getUTCMinutes().toPaddedString(2) + ':' +=0A=
      this.getUTCSeconds().toPaddedString(2) + 'Z';=0A=
  }=0A=
=0A=
=0A=
  function toJSON() {=0A=
    return this.toISOString();=0A=
  }=0A=
=0A=
  if (!proto.toISOString) proto.toISOString =3D toISOString;=0A=
  if (!proto.toJSON) proto.toJSON =3D toJSON;=0A=
=0A=
})(Date.prototype);=0A=
=0A=
=0A=
RegExp.prototype.match =3D RegExp.prototype.test;=0A=
=0A=
RegExp.escape =3D function(str) {=0A=
  return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A=
};=0A=
var PeriodicalExecuter =3D Class.create({=0A=
  initialize: function(callback, frequency) {=0A=
    this.callback =3D callback;=0A=
    this.frequency =3D frequency;=0A=
    this.currentlyExecuting =3D false;=0A=
=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    this.timer =3D setInterval(this.onTimerEvent.bind(this), =
this.frequency * 1000);=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    this.callback(this);=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    if (!this.timer) return;=0A=
    clearInterval(this.timer);=0A=
    this.timer =3D null;=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    if (!this.currentlyExecuting) {=0A=
      try {=0A=
        this.currentlyExecuting =3D true;=0A=
        this.execute();=0A=
        this.currentlyExecuting =3D false;=0A=
      } catch(e) {=0A=
        this.currentlyExecuting =3D false;=0A=
        throw e;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
Object.extend(String, {=0A=
  interpret: function(value) {=0A=
    return value =3D=3D null ? '' : String(value);=0A=
  },=0A=
  specialChar: {=0A=
    '\b': '\\b',=0A=
    '\t': '\\t',=0A=
    '\n': '\\n',=0A=
    '\f': '\\f',=0A=
    '\r': '\\r',=0A=
    '\\': '\\\\'=0A=
  }=0A=
});=0A=
=0A=
Object.extend(String.prototype, (function() {=0A=
  var NATIVE_JSON_PARSE_SUPPORT =3D window.JSON &&=0A=
    typeof JSON.parse =3D=3D=3D 'function' &&=0A=
    JSON.parse('{"test": true}').test;=0A=
=0A=
  function prepareReplacement(replacement) {=0A=
    if (Object.isFunction(replacement)) return replacement;=0A=
    var template =3D new Template(replacement);=0A=
    return function(match) { return template.evaluate(match) };=0A=
  }=0A=
=0A=
  function gsub(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D prepareReplacement(replacement);=0A=
=0A=
    if (Object.isString(pattern))=0A=
      pattern =3D RegExp.escape(pattern);=0A=
=0A=
    if (!(pattern.length || pattern.source)) {=0A=
      replacement =3D replacement('');=0A=
      return replacement + source.split('').join(replacement) + =
replacement;=0A=
    }=0A=
=0A=
    while (source.length > 0) {=0A=
      if (match =3D source.match(pattern)) {=0A=
        result +=3D source.slice(0, match.index);=0A=
        result +=3D String.interpret(replacement(match));=0A=
        source  =3D source.slice(match.index + match[0].length);=0A=
      } else {=0A=
        result +=3D source, source =3D '';=0A=
      }=0A=
    }=0A=
    return result;=0A=
  }=0A=
=0A=
  function sub(pattern, replacement, count) {=0A=
    replacement =3D prepareReplacement(replacement);=0A=
    count =3D Object.isUndefined(count) ? 1 : count;=0A=
=0A=
    return this.gsub(pattern, function(match) {=0A=
      if (--count < 0) return match[0];=0A=
      return replacement(match);=0A=
    });=0A=
  }=0A=
=0A=
  function scan(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return String(this);=0A=
  }=0A=
=0A=
  function truncate(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : =
String(this);=0A=
  }=0A=
=0A=
  function strip() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  }=0A=
=0A=
  function stripTags() {=0A=
    return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, =
'');=0A=
  }=0A=
=0A=
  function stripScripts() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  }=0A=
=0A=
  function extractScripts() {=0A=
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img'),=0A=
        matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A=
    return (this.match(matchAll) || []).map(function(scriptTag) {=0A=
      return (scriptTag.match(matchOne) || ['', ''])[1];=0A=
    });=0A=
  }=0A=
=0A=
  function evalScripts() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  }=0A=
=0A=
  function escapeHTML() {=0A=
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');=0A=
  }=0A=
=0A=
  function unescapeHTML() {=0A=
    return =
this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;=
/g,'&');=0A=
  }=0A=
=0A=
=0A=
  function toQueryParams(separator) {=0A=
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A=
    if (!match) return { };=0A=
=0A=
    return match[1].split(separator || '&').inject({ }, function(hash, =
pair) {=0A=
      if ((pair =3D pair.split('=3D'))[0]) {=0A=
        var key =3D decodeURIComponent(pair.shift()),=0A=
            value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A=
=0A=
        if (value !=3D undefined) value =3D decodeURIComponent(value);=0A=
=0A=
        if (key in hash) {=0A=
          if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A=
          hash[key].push(value);=0A=
        }=0A=
        else hash[key] =3D value;=0A=
      }=0A=
      return hash;=0A=
    });=0A=
  }=0A=
=0A=
  function toArray() {=0A=
    return this.split('');=0A=
  }=0A=
=0A=
  function succ() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  }=0A=
=0A=
  function times(count) {=0A=
    return count < 1 ? '' : new Array(count + 1).join(this);=0A=
  }=0A=
=0A=
  function camelize() {=0A=
    return this.replace(/-+(.)?/g, function(match, chr) {=0A=
      return chr ? chr.toUpperCase() : '';=0A=
    });=0A=
  }=0A=
=0A=
  function capitalize() {=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  }=0A=
=0A=
  function underscore() {=0A=
    return this.replace(/::/g, '/')=0A=
               .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')=0A=
               .replace(/([a-z\d])([A-Z])/g, '$1_$2')=0A=
               .replace(/-/g, '_')=0A=
               .toLowerCase();=0A=
  }=0A=
=0A=
  function dasherize() {=0A=
    return this.replace(/_/g, '-');=0A=
  }=0A=
=0A=
  function inspect(useDoubleQuotes) {=0A=
    var escapedString =3D this.replace(/[\x00-\x1f\\]/g, =
function(character) {=0A=
      if (character in String.specialChar) {=0A=
        return String.specialChar[character];=0A=
      }=0A=
      return '\\u00' + character.charCodeAt().toPaddedString(2, 16);=0A=
    });=0A=
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';=0A=
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  }=0A=
=0A=
  function unfilterJSON(filter) {=0A=
    return this.replace(filter || Prototype.JSONFilter, '$1');=0A=
  }=0A=
=0A=
  function isJSON() {=0A=
    var str =3D this;=0A=
    if (str.blank()) return false;=0A=
    str =3D str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@');=0A=
    str =3D =
str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d=
+)?/g, ']');=0A=
    str =3D str.replace(/(?:^|:|,)(?:\s*\[)+/g, '');=0A=
    return (/^[\],:{}\s]*$/).test(str);=0A=
  }=0A=
=0A=
  function evalJSON(sanitize) {=0A=
    var json =3D this.unfilterJSON(),=0A=
        cx =3D =
/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u=
2060-\u206f\ufeff\ufff0-\uffff]/g;=0A=
    if (cx.test(json)) {=0A=
      json =3D json.replace(cx, function (a) {=0A=
        return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);=0A=
      });=0A=
    }=0A=
    try {=0A=
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A=
    } catch (e) { }=0A=
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A=
  }=0A=
=0A=
  function parseJSON() {=0A=
    var json =3D this.unfilterJSON();=0A=
    return JSON.parse(json);=0A=
  }=0A=
=0A=
  function include(pattern) {=0A=
    return this.indexOf(pattern) > -1;=0A=
  }=0A=
=0A=
  function startsWith(pattern) {=0A=
    return this.lastIndexOf(pattern, 0) =3D=3D=3D 0;=0A=
  }=0A=
=0A=
  function endsWith(pattern) {=0A=
    var d =3D this.length - pattern.length;=0A=
    return d >=3D 0 && this.indexOf(pattern, d) =3D=3D=3D d;=0A=
  }=0A=
=0A=
  function empty() {=0A=
    return this =3D=3D '';=0A=
  }=0A=
=0A=
  function blank() {=0A=
    return /^\s*$/.test(this);=0A=
  }=0A=
=0A=
  function interpolate(object, pattern) {=0A=
    return new Template(this, pattern).evaluate(object);=0A=
  }=0A=
=0A=
  return {=0A=
    gsub:           gsub,=0A=
    sub:            sub,=0A=
    scan:           scan,=0A=
    truncate:       truncate,=0A=
    strip:          String.prototype.trim || strip,=0A=
    stripTags:      stripTags,=0A=
    stripScripts:   stripScripts,=0A=
    extractScripts: extractScripts,=0A=
    evalScripts:    evalScripts,=0A=
    escapeHTML:     escapeHTML,=0A=
    unescapeHTML:   unescapeHTML,=0A=
    toQueryParams:  toQueryParams,=0A=
    parseQuery:     toQueryParams,=0A=
    toArray:        toArray,=0A=
    succ:           succ,=0A=
    times:          times,=0A=
    camelize:       camelize,=0A=
    capitalize:     capitalize,=0A=
    underscore:     underscore,=0A=
    dasherize:      dasherize,=0A=
    inspect:        inspect,=0A=
    unfilterJSON:   unfilterJSON,=0A=
    isJSON:         isJSON,=0A=
    evalJSON:       NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON,=0A=
    include:        include,=0A=
    startsWith:     startsWith,=0A=
    endsWith:       endsWith,=0A=
    empty:          empty,=0A=
    blank:          blank,=0A=
    interpolate:    interpolate=0A=
  };=0A=
})());=0A=
=0A=
var Template =3D Class.create({=0A=
  initialize: function(template, pattern) {=0A=
    this.template =3D template.toString();=0A=
    this.pattern =3D pattern || Template.Pattern;=0A=
  },=0A=
=0A=
  evaluate: function(object) {=0A=
    if (object && Object.isFunction(object.toTemplateReplacements))=0A=
      object =3D object.toTemplateReplacements();=0A=
=0A=
    return this.template.gsub(this.pattern, function(match) {=0A=
      if (object =3D=3D null) return (match[1] + '');=0A=
=0A=
      var before =3D match[1] || '';=0A=
      if (before =3D=3D '\\') return match[2];=0A=
=0A=
      var ctx =3D object, expr =3D match[3],=0A=
          pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A=
=0A=
      match =3D pattern.exec(expr);=0A=
      if (match =3D=3D null) return before;=0A=
=0A=
      while (match !=3D null) {=0A=
        var comp =3D match[1].startsWith('[') ? =
match[2].replace(/\\\\]/g, ']') : match[1];=0A=
        ctx =3D ctx[comp];=0A=
        if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A=
        expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : =
match[0].length);=0A=
        match =3D pattern.exec(expr);=0A=
      }=0A=
=0A=
      return before + String.interpret(ctx);=0A=
    });=0A=
  }=0A=
});=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
=0A=
var $break =3D { };=0A=
=0A=
var Enumerable =3D (function() {=0A=
  function each(iterator, context) {=0A=
    var index =3D 0;=0A=
    try {=0A=
      this._each(function(value) {=0A=
        iterator.call(context, value, index++);=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
    return this;=0A=
  }=0A=
=0A=
  function eachSlice(number, iterator, context) {=0A=
    var index =3D -number, slices =3D [], array =3D this.toArray();=0A=
    if (number < 1) return array;=0A=
    while ((index +=3D number) < array.length)=0A=
      slices.push(array.slice(index, index+number));=0A=
    return slices.collect(iterator, context);=0A=
  }=0A=
=0A=
  function all(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!iterator.call(context, value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function any(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result =3D false;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!iterator.call(context, value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function collect(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(iterator.call(context, value, index));=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function detect(iterator, context) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator.call(context, value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function findAll(iterator, context) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator.call(context, value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function grep(filter, iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var results =3D [];=0A=
=0A=
    if (Object.isString(filter))=0A=
      filter =3D new RegExp(RegExp.escape(filter));=0A=
=0A=
    this.each(function(value, index) {=0A=
      if (filter.match(value))=0A=
        results.push(iterator.call(context, value, index));=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function include(object) {=0A=
    if (Object.isFunction(this.indexOf))=0A=
      if (this.indexOf(object) !=3D -1) return true;=0A=
=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  }=0A=
=0A=
  function inGroupsOf(number, fillWith) {=0A=
    fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  }=0A=
=0A=
  function inject(memo, iterator, context) {=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator.call(context, memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  }=0A=
=0A=
  function invoke(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.map(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  }=0A=
=0A=
  function max(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator.call(context, value, index);=0A=
      if (result =3D=3D null || value >=3D result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function min(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator.call(context, value, index);=0A=
      if (result =3D=3D null || value < result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function partition(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      (iterator.call(context, value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  }=0A=
=0A=
  function pluck(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function reject(iterator, context) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator.call(context, value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function sortBy(iterator, context) {=0A=
    return this.map(function(value, index) {=0A=
      return {=0A=
        value: value,=0A=
        criteria: iterator.call(context, value, index)=0A=
      };=0A=
    }).sort(function(left, right) {=0A=
      var a =3D left.criteria, b =3D right.criteria;=0A=
      return a < b ? -1 : a > b ? 1 : 0;=0A=
    }).pluck('value');=0A=
  }=0A=
=0A=
  function toArray() {=0A=
    return this.map();=0A=
  }=0A=
=0A=
  function zip() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (Object.isFunction(args.last()))=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      return iterator(collections.pluck(index));=0A=
    });=0A=
  }=0A=
=0A=
  function size() {=0A=
    return this.toArray().length;=0A=
  }=0A=
=0A=
  function inspect() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
  return {=0A=
    each:       each,=0A=
    eachSlice:  eachSlice,=0A=
    all:        all,=0A=
    every:      all,=0A=
    any:        any,=0A=
    some:       any,=0A=
    collect:    collect,=0A=
    map:        collect,=0A=
    detect:     detect,=0A=
    findAll:    findAll,=0A=
    select:     findAll,=0A=
    filter:     findAll,=0A=
    grep:       grep,=0A=
    include:    include,=0A=
    member:     include,=0A=
    inGroupsOf: inGroupsOf,=0A=
    inject:     inject,=0A=
    invoke:     invoke,=0A=
    max:        max,=0A=
    min:        min,=0A=
    partition:  partition,=0A=
    pluck:      pluck,=0A=
    reject:     reject,=0A=
    sortBy:     sortBy,=0A=
    toArray:    toArray,=0A=
    entries:    toArray,=0A=
    zip:        zip,=0A=
    size:       size,=0A=
    inspect:    inspect,=0A=
    find:       detect=0A=
  };=0A=
})();=0A=
=0A=
function $A(iterable) {=0A=
  if (!iterable) return [];=0A=
  if ('toArray' in Object(iterable)) return iterable.toArray();=0A=
  var length =3D iterable.length || 0, results =3D new Array(length);=0A=
  while (length--) results[length] =3D iterable[length];=0A=
  return results;=0A=
}=0A=
=0A=
=0A=
function $w(string) {=0A=
  if (!Object.isString(string)) return [];=0A=
  string =3D string.strip();=0A=
  return string ? string.split(/\s+/) : [];=0A=
}=0A=
=0A=
Array.from =3D $A;=0A=
=0A=
=0A=
(function() {=0A=
  var arrayProto =3D Array.prototype,=0A=
      slice =3D arrayProto.slice,=0A=
      _each =3D arrayProto.forEach; // use native browser JS 1.6 =
implementation if available=0A=
=0A=
  function each(iterator, context) {=0A=
    for (var i =3D 0, length =3D this.length >>> 0; i < length; i++) {=0A=
      if (i in this) iterator.call(context, this[i], i, this);=0A=
    }=0A=
  }=0A=
  if (!_each) _each =3D each;=0A=
=0A=
  function clear() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  }=0A=
=0A=
  function first() {=0A=
    return this[0];=0A=
  }=0A=
=0A=
  function last() {=0A=
    return this[this.length - 1];=0A=
  }=0A=
=0A=
  function compact() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  }=0A=
=0A=
  function flatten() {=0A=
    return this.inject([], function(array, value) {=0A=
      if (Object.isArray(value))=0A=
        return array.concat(value.flatten());=0A=
      array.push(value);=0A=
      return array;=0A=
    });=0A=
  }=0A=
=0A=
  function without() {=0A=
    var values =3D slice.call(arguments, 0);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  }=0A=
=0A=
  function reverse(inline) {=0A=
    return (inline =3D=3D=3D false ? this.toArray() : this)._reverse();=0A=
  }=0A=
=0A=
  function uniq(sorted) {=0A=
    return this.inject([], function(array, value, index) {=0A=
      if (0 =3D=3D index || (sorted ? array.last() !=3D value : =
!array.include(value)))=0A=
        array.push(value);=0A=
      return array;=0A=
    });=0A=
  }=0A=
=0A=
  function intersect(array) {=0A=
    return this.uniq().findAll(function(item) {=0A=
      return array.detect(function(value) { return item =3D=3D=3D value =
});=0A=
    });=0A=
  }=0A=
=0A=
=0A=
  function clone() {=0A=
    return slice.call(this, 0);=0A=
  }=0A=
=0A=
  function size() {=0A=
    return this.length;=0A=
  }=0A=
=0A=
  function inspect() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  }=0A=
=0A=
  function indexOf(item, i) {=0A=
    i || (i =3D 0);=0A=
    var length =3D this.length;=0A=
    if (i < 0) i =3D length + i;=0A=
    for (; i < length; i++)=0A=
      if (this[i] =3D=3D=3D item) return i;=0A=
    return -1;=0A=
  }=0A=
=0A=
  function lastIndexOf(item, i) {=0A=
    i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A=
    var n =3D this.slice(0, i).reverse().indexOf(item);=0A=
    return (n < 0) ? n : i - n - 1;=0A=
  }=0A=
=0A=
  function concat() {=0A=
    var array =3D slice.call(this, 0), item;=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      item =3D arguments[i];=0A=
      if (Object.isArray(item) && !('callee' in item)) {=0A=
        for (var j =3D 0, arrayLength =3D item.length; j < arrayLength; =
j++)=0A=
          array.push(item[j]);=0A=
      } else {=0A=
        array.push(item);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  }=0A=
=0A=
  Object.extend(arrayProto, Enumerable);=0A=
=0A=
  if (!arrayProto._reverse)=0A=
    arrayProto._reverse =3D arrayProto.reverse;=0A=
=0A=
  Object.extend(arrayProto, {=0A=
    _each:     _each,=0A=
    clear:     clear,=0A=
    first:     first,=0A=
    last:      last,=0A=
    compact:   compact,=0A=
    flatten:   flatten,=0A=
    without:   without,=0A=
    reverse:   reverse,=0A=
    uniq:      uniq,=0A=
    intersect: intersect,=0A=
    clone:     clone,=0A=
    toArray:   clone,=0A=
    size:      size,=0A=
    inspect:   inspect=0A=
  });=0A=
=0A=
  var CONCAT_ARGUMENTS_BUGGY =3D (function() {=0A=
    return [].concat(arguments)[0][0] !=3D=3D 1;=0A=
  })(1,2)=0A=
=0A=
  if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat =3D concat;=0A=
=0A=
  if (!arrayProto.indexOf) arrayProto.indexOf =3D indexOf;=0A=
  if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf =3D lastIndexOf;=0A=
})();=0A=
function $H(object) {=0A=
  return new Hash(object);=0A=
};=0A=
=0A=
var Hash =3D Class.create(Enumerable, (function() {=0A=
  function initialize(object) {=0A=
    this._object =3D Object.isHash(object) ? object.toObject() : =
Object.clone(object);=0A=
  }=0A=
=0A=
=0A=
  function _each(iterator) {=0A=
    for (var key in this._object) {=0A=
      var value =3D this._object[key], pair =3D [key, value];=0A=
      pair.key =3D key;=0A=
      pair.value =3D value;=0A=
      iterator(pair);=0A=
    }=0A=
  }=0A=
=0A=
  function set(key, value) {=0A=
    return this._object[key] =3D value;=0A=
  }=0A=
=0A=
  function get(key) {=0A=
    if (this._object[key] !=3D=3D Object.prototype[key])=0A=
      return this._object[key];=0A=
  }=0A=
=0A=
  function unset(key) {=0A=
    var value =3D this._object[key];=0A=
    delete this._object[key];=0A=
    return value;=0A=
  }=0A=
=0A=
  function toObject() {=0A=
    return Object.clone(this._object);=0A=
  }=0A=
=0A=
=0A=
=0A=
  function keys() {=0A=
    return this.pluck('key');=0A=
  }=0A=
=0A=
  function values() {=0A=
    return this.pluck('value');=0A=
  }=0A=
=0A=
  function index(value) {=0A=
    var match =3D this.detect(function(pair) {=0A=
      return pair.value =3D=3D=3D value;=0A=
    });=0A=
    return match && match.key;=0A=
  }=0A=
=0A=
  function merge(object) {=0A=
    return this.clone().update(object);=0A=
  }=0A=
=0A=
  function update(object) {=0A=
    return new Hash(object).inject(this, function(result, pair) {=0A=
      result.set(pair.key, pair.value);=0A=
      return result;=0A=
    });=0A=
  }=0A=
=0A=
  function toQueryPair(key, value) {=0A=
    if (Object.isUndefined(value)) return key;=0A=
    return key + '=3D' + encodeURIComponent(String.interpret(value));=0A=
  }=0A=
=0A=
  function toQueryString() {=0A=
    return this.inject([], function(results, pair) {=0A=
      var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A=
=0A=
      if (values && typeof values =3D=3D 'object') {=0A=
        if (Object.isArray(values)) {=0A=
          var queryValues =3D [];=0A=
          for (var i =3D 0, len =3D values.length, value; i < len; i++) {=0A=
            value =3D values[i];=0A=
            queryValues.push(toQueryPair(key, value));=0A=
          }=0A=
          return results.concat(queryValues);=0A=
        }=0A=
      } else results.push(toQueryPair(key, values));=0A=
      return results;=0A=
    }).join('&');=0A=
  }=0A=
=0A=
  function inspect() {=0A=
    return '#<Hash:{' + this.map(function(pair) {=0A=
      return pair.map(Object.inspect).join(': ');=0A=
    }).join(', ') + '}>';=0A=
  }=0A=
=0A=
  function clone() {=0A=
    return new Hash(this);=0A=
  }=0A=
=0A=
  return {=0A=
    initialize:             initialize,=0A=
    _each:                  _each,=0A=
    set:                    set,=0A=
    get:                    get,=0A=
    unset:                  unset,=0A=
    toObject:               toObject,=0A=
    toTemplateReplacements: toObject,=0A=
    keys:                   keys,=0A=
    values:                 values,=0A=
    index:                  index,=0A=
    merge:                  merge,=0A=
    update:                 update,=0A=
    toQueryString:          toQueryString,=0A=
    inspect:                inspect,=0A=
    toJSON:                 toObject,=0A=
    clone:                  clone=0A=
  };=0A=
})());=0A=
=0A=
Hash.from =3D $H;=0A=
Object.extend(Number.prototype, (function() {=0A=
  function toColorPart() {=0A=
    return this.toPaddedString(2, 16);=0A=
  }=0A=
=0A=
  function succ() {=0A=
    return this + 1;=0A=
  }=0A=
=0A=
  function times(iterator, context) {=0A=
    $R(0, this, true).each(iterator, context);=0A=
    return this;=0A=
  }=0A=
=0A=
  function toPaddedString(length, radix) {=0A=
    var string =3D this.toString(radix || 10);=0A=
    return '0'.times(length - string.length) + string;=0A=
  }=0A=
=0A=
  function abs() {=0A=
    return Math.abs(this);=0A=
  }=0A=
=0A=
  function round() {=0A=
    return Math.round(this);=0A=
  }=0A=
=0A=
  function ceil() {=0A=
    return Math.ceil(this);=0A=
  }=0A=
=0A=
  function floor() {=0A=
    return Math.floor(this);=0A=
  }=0A=
=0A=
  return {=0A=
    toColorPart:    toColorPart,=0A=
    succ:           succ,=0A=
    times:          times,=0A=
    toPaddedString: toPaddedString,=0A=
    abs:            abs,=0A=
    round:          round,=0A=
    ceil:           ceil,=0A=
    floor:          floor=0A=
  };=0A=
})());=0A=
=0A=
function $R(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
}=0A=
=0A=
var ObjectRange =3D Class.create(Enumerable, (function() {=0A=
  function initialize(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  }=0A=
=0A=
  function _each(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  }=0A=
=0A=
  function include(value) {=0A=
    if (value < this.start)=0A=
      return false;=0A=
    if (this.exclusive)=0A=
      return value < this.end;=0A=
    return value <=3D this.end;=0A=
  }=0A=
=0A=
  return {=0A=
    initialize: initialize,=0A=
    _each:      _each,=0A=
    include:    include=0A=
  };=0A=
})());=0A=
=0A=
=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new XMLHttpRequest()},=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
};=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responder) {=0A=
    if (!this.include(responder))=0A=
      this.responders.push(responder);=0A=
  },=0A=
=0A=
  unregister: function(responder) {=0A=
    this.responders =3D this.responders.without(responder);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (Object.isFunction(responder[callback])) {=0A=
        try {=0A=
          responder[callback].apply(responder, [request, transport, =
json]);=0A=
        } catch (e) { }=0A=
      }=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Ajax.Responders, Enumerable);=0A=
=0A=
Ajax.Responders.register({=0A=
  onCreate:   function() { Ajax.activeRequestCount++ },=0A=
  onComplete: function() { Ajax.activeRequestCount-- }=0A=
});=0A=
Ajax.Base =3D Class.create({=0A=
  initialize: function(options) {=0A=
    this.options =3D {=0A=
      method:       'post',=0A=
      asynchronous: true,=0A=
      contentType:  'application/x-www-form-urlencoded',=0A=
      encoding:     'UTF-8',=0A=
      parameters:   '',=0A=
      evalJSON:     true,=0A=
      evalJS:       true=0A=
    };=0A=
    Object.extend(this.options, options || { });=0A=
=0A=
    this.options.method =3D this.options.method.toLowerCase();=0A=
=0A=
    if (Object.isHash(this.options.parameters))=0A=
      this.options.parameters =3D this.options.parameters.toObject();=0A=
  }=0A=
});=0A=
Ajax.Request =3D Class.create(Ajax.Base, {=0A=
  _complete: false,=0A=
=0A=
  initialize: function($super, url, options) {=0A=
    $super(options);=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    this.url =3D url;=0A=
    this.method =3D this.options.method;=0A=
    var params =3D Object.isString(this.options.parameters) ?=0A=
          this.options.parameters :=0A=
          Object.toQueryString(this.options.parameters);=0A=
=0A=
    if (!['get', 'post'].include(this.method)) {=0A=
      params +=3D (params ? '&' : '') + "_method=3D" + this.method;=0A=
      this.method =3D 'post';=0A=
    }=0A=
=0A=
    if (params && this.method =3D=3D=3D 'get') {=0A=
      this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A=
    }=0A=
=0A=
    this.parameters =3D params.toQueryParams();=0A=
=0A=
    try {=0A=
      var response =3D new Ajax.Response(this);=0A=
      if (this.options.onCreate) this.options.onCreate(response);=0A=
      Ajax.Responders.dispatch('onCreate', this, response);=0A=
=0A=
      this.transport.open(this.method.toUpperCase(), this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous) =
this.respondToReadyState.bind(this).defer(1);=0A=
=0A=
      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
      this.setRequestHeaders();=0A=
=0A=
      this.body =3D this.method =3D=3D 'post' ? (this.options.postBody =
|| params) : null;=0A=
      this.transport.send(this.body);=0A=
=0A=
      /* Force Firefox to handle ready state 4 for synchronous requests =
*/=0A=
      if (!this.options.asynchronous && this.transport.overrideMimeType)=0A=
        this.onStateChange();=0A=
=0A=
    }=0A=
    catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var headers =3D {=0A=
      'X-Requested-With': 'XMLHttpRequest',=0A=
      'X-Prototype-Version': Prototype.Version,=0A=
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'=0A=
    };=0A=
=0A=
    if (this.method =3D=3D 'post') {=0A=
      headers['Content-type'] =3D this.options.contentType +=0A=
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');=0A=
=0A=
      /* Force "Connection: close" for older Mozilla browsers to work=0A=
       * around a bug where XMLHttpRequest sends an incorrect=0A=
       * Content-length header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType &&=0A=
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)=0A=
            headers['Connection'] =3D 'close';=0A=
    }=0A=
=0A=
    if (typeof this.options.requestHeaders =3D=3D 'object') {=0A=
      var extras =3D this.options.requestHeaders;=0A=
=0A=
      if (Object.isFunction(extras.push))=0A=
        for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A=
          headers[extras[i]] =3D extras[i+1];=0A=
      else=0A=
        $H(extras).each(function(pair) { headers[pair.key] =3D =
pair.value });=0A=
    }=0A=
=0A=
    for (var name in headers)=0A=
      this.transport.setRequestHeader(name, headers[name]);=0A=
  },=0A=
=0A=
  success: function() {=0A=
    var status =3D this.getStatus();=0A=
    return !status || (status >=3D 200 && status < 300) || status =3D=3D =
304;=0A=
  },=0A=
=0A=
  getStatus: function() {=0A=
    try {=0A=
      if (this.transport.status =3D=3D=3D 1223) return 204;=0A=
      return this.transport.status || 0;=0A=
    } catch (e) { return 0 }=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var state =3D Ajax.Request.Events[readyState], response =3D new =
Ajax.Response(this);=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      try {=0A=
        this._complete =3D true;=0A=
        (this.options['on' + response.status]=0A=
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A=
         || Prototype.emptyFunction)(response, response.headerJSON);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      var contentType =3D response.getHeader('Content-type');=0A=
      if (this.options.evalJS =3D=3D 'force'=0A=
          || (this.options.evalJS && this.isSameOrigin() && contentType=0A=
          && =
contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s=
*$/i)))=0A=
        this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + state] || Prototype.emptyFunction)(response, =
response.headerJSON);=0A=
      Ajax.Responders.dispatch('on' + state, this, response, =
response.headerJSON);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  isSameOrigin: function() {=0A=
    var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A=
    return !m || (m[0] =3D=3D =
'#{protocol}//#{domain}#{port}'.interpolate({=0A=
      protocol: location.protocol,=0A=
      domain: document.domain,=0A=
      port: location.port ? ':' + location.port : ''=0A=
    }));=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name) || null;=0A=
    } catch (e) { return null; }=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval((this.transport.responseText || '').unfilterJSON());=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  dispatchException: function(exception) {=0A=
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);=0A=
    Ajax.Responders.dispatch('onException', this, exception);=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
Ajax.Response =3D Class.create({=0A=
  initialize: function(request){=0A=
    this.request =3D request;=0A=
    var transport  =3D this.transport  =3D request.transport,=0A=
        readyState =3D this.readyState =3D transport.readyState;=0A=
=0A=
    if ((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D =
4) {=0A=
      this.status       =3D this.getStatus();=0A=
      this.statusText   =3D this.getStatusText();=0A=
      this.responseText =3D String.interpret(transport.responseText);=0A=
      this.headerJSON   =3D this._getHeaderJSON();=0A=
    }=0A=
=0A=
    if (readyState =3D=3D 4) {=0A=
      var xml =3D transport.responseXML;=0A=
      this.responseXML  =3D Object.isUndefined(xml) ? null : xml;=0A=
      this.responseJSON =3D this._getResponseJSON();=0A=
    }=0A=
  },=0A=
=0A=
  status:      0,=0A=
=0A=
  statusText: '',=0A=
=0A=
  getStatus: Ajax.Request.prototype.getStatus,=0A=
=0A=
  getStatusText: function() {=0A=
    try {=0A=
      return this.transport.statusText || '';=0A=
    } catch (e) { return '' }=0A=
  },=0A=
=0A=
  getHeader: Ajax.Request.prototype.getHeader,=0A=
=0A=
  getAllHeaders: function() {=0A=
    try {=0A=
      return this.getAllResponseHeaders();=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  getResponseHeader: function(name) {=0A=
    return this.transport.getResponseHeader(name);=0A=
  },=0A=
=0A=
  getAllResponseHeaders: function() {=0A=
    return this.transport.getAllResponseHeaders();=0A=
  },=0A=
=0A=
  _getHeaderJSON: function() {=0A=
    var json =3D this.getHeader('X-JSON');=0A=
    if (!json) return null;=0A=
    json =3D decodeURIComponent(escape(json));=0A=
    try {=0A=
      return json.evalJSON(this.request.options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  _getResponseJSON: function() {=0A=
    var options =3D this.request.options;=0A=
    if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A=
      !(this.getHeader('Content-type') || =
'').include('application/json')) ||=0A=
        this.responseText.blank())=0A=
          return null;=0A=
    try {=0A=
      return this.responseText.evalJSON(options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.Updater =3D Class.create(Ajax.Request, {=0A=
  initialize: function($super, container, url, options) {=0A=
    this.container =3D {=0A=
      success: (container.success || container),=0A=
      failure: (container.failure || (container.success ? null : =
container))=0A=
    };=0A=
=0A=
    options =3D Object.clone(options);=0A=
    var onComplete =3D options.onComplete;=0A=
    options.onComplete =3D (function(response, json) {=0A=
      this.updateContent(response.responseText);=0A=
      if (Object.isFunction(onComplete)) onComplete(response, json);=0A=
    }).bind(this);=0A=
=0A=
    $super(url, options);=0A=
  },=0A=
=0A=
  updateContent: function(responseText) {=0A=
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'],=0A=
        options =3D this.options;=0A=
=0A=
    if (!options.evalScripts) responseText =3D =
responseText.stripScripts();=0A=
=0A=
    if (receiver =3D $(receiver)) {=0A=
      if (options.insertion) {=0A=
        if (Object.isString(options.insertion)) {=0A=
          var insertion =3D { }; insertion[options.insertion] =3D =
responseText;=0A=
          receiver.insert(insertion);=0A=
        }=0A=
        else options.insertion(receiver, responseText);=0A=
      }=0A=
      else receiver.update(responseText);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A=
  initialize: function($super, container, url, options) {=0A=
    $super(options);=0A=
    this.onComplete =3D this.options.onComplete;=0A=
=0A=
    this.frequency =3D (this.options.frequency || 2);=0A=
    this.decay =3D (this.options.decay || 1);=0A=
=0A=
    this.updater =3D { };=0A=
    this.container =3D container;=0A=
    this.url =3D url;=0A=
=0A=
    this.start();=0A=
  },=0A=
=0A=
  start: function() {=0A=
    this.options.onComplete =3D this.updateComplete.bind(this);=0A=
    this.onTimerEvent();=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    this.updater.options.onComplete =3D undefined;=0A=
    clearTimeout(this.timer);=0A=
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A=
  },=0A=
=0A=
  updateComplete: function(response) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (response.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D response.responseText;=0A=
    }=0A=
    this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * =
this.frequency);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
=0A=
=0A=
function $(element) {=0A=
  if (arguments.length > 1) {=0A=
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)=0A=
      elements.push($(arguments[i]));=0A=
    return elements;=0A=
  }=0A=
  if (Object.isString(element))=0A=
    element =3D document.getElementById(element);=0A=
  return Element.extend(element);=0A=
}=0A=
=0A=
if (Prototype.BrowserFeatures.XPath) {=0A=
  document._getElementsByXPath =3D function(expression, parentElement) {=0A=
    var results =3D [];=0A=
    var query =3D document.evaluate(expression, $(parentElement) || =
document,=0A=
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
    for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A=
      results.push(Element.extend(query.snapshotItem(i)));=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!Node) var Node =3D { };=0A=
=0A=
if (!Node.ELEMENT_NODE) {=0A=
  Object.extend(Node, {=0A=
    ELEMENT_NODE: 1,=0A=
    ATTRIBUTE_NODE: 2,=0A=
    TEXT_NODE: 3,=0A=
    CDATA_SECTION_NODE: 4,=0A=
    ENTITY_REFERENCE_NODE: 5,=0A=
    ENTITY_NODE: 6,=0A=
    PROCESSING_INSTRUCTION_NODE: 7,=0A=
    COMMENT_NODE: 8,=0A=
    DOCUMENT_NODE: 9,=0A=
    DOCUMENT_TYPE_NODE: 10,=0A=
    DOCUMENT_FRAGMENT_NODE: 11,=0A=
    NOTATION_NODE: 12=0A=
  });=0A=
}=0A=
=0A=
=0A=
=0A=
(function(global) {=0A=
  function shouldUseCache(tagName, attributes) {=0A=
    if (tagName =3D=3D=3D 'select') return false;=0A=
    if ('type' in attributes) return false;=0A=
    return true;=0A=
  }=0A=
=0A=
  var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX =3D (function(){=0A=
    try {=0A=
      var el =3D document.createElement('<input name=3D"x">');=0A=
      return el.tagName.toLowerCase() =3D=3D=3D 'input' && el.name =
=3D=3D=3D 'x';=0A=
    }=0A=
    catch(err) {=0A=
      return false;=0A=
    }=0A=
  })();=0A=
=0A=
  var element =3D global.Element;=0A=
=0A=
  global.Element =3D function(tagName, attributes) {=0A=
    attributes =3D attributes || { };=0A=
    tagName =3D tagName.toLowerCase();=0A=
    var cache =3D Element.cache;=0A=
=0A=
    if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) {=0A=
      tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A=
      delete attributes.name;=0A=
      return Element.writeAttribute(document.createElement(tagName), =
attributes);=0A=
    }=0A=
=0A=
    if (!cache[tagName]) cache[tagName] =3D =
Element.extend(document.createElement(tagName));=0A=
=0A=
    var node =3D shouldUseCache(tagName, attributes) ?=0A=
     cache[tagName].cloneNode(false) : document.createElement(tagName);=0A=
=0A=
    return Element.writeAttribute(node, attributes);=0A=
  };=0A=
=0A=
  Object.extend(global.Element, element || { });=0A=
  if (element) global.Element.prototype =3D element.prototype;=0A=
=0A=
})(this);=0A=
=0A=
Element.idCounter =3D 1;=0A=
Element.cache =3D { };=0A=
=0A=
Element._purgeElement =3D function(element) {=0A=
  var uid =3D element._prototypeUID;=0A=
  if (uid) {=0A=
    Element.stopObserving(element);=0A=
    element._prototypeUID =3D void 0;=0A=
    delete Element.Storage[uid];=0A=
  }=0A=
}=0A=
=0A=
Element.Methods =3D {=0A=
  visible: function(element) {=0A=
    return $(element).style.display !=3D 'none';=0A=
  },=0A=
=0A=
  toggle: function(element) {=0A=
    element =3D $(element);=0A=
    Element[Element.visible(element) ? 'hide' : 'show'](element);=0A=
    return element;=0A=
  },=0A=
=0A=
  hide: function(element) {=0A=
    element =3D $(element);=0A=
    element.style.display =3D 'none';=0A=
    return element;=0A=
  },=0A=
=0A=
  show: function(element) {=0A=
    element =3D $(element);=0A=
    element.style.display =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  remove: function(element) {=0A=
    element =3D $(element);=0A=
    element.parentNode.removeChild(element);=0A=
    return element;=0A=
  },=0A=
=0A=
  update: (function(){=0A=
=0A=
    var SELECT_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A=
      var el =3D document.createElement("select"),=0A=
          isBuggy =3D true;=0A=
      el.innerHTML =3D "<option value=3D\"test\">test</option>";=0A=
      if (el.options && el.options[0]) {=0A=
        isBuggy =3D el.options[0].nodeName.toUpperCase() !=3D=3D =
"OPTION";=0A=
      }=0A=
      el =3D null;=0A=
      return isBuggy;=0A=
    })();=0A=
=0A=
    var TABLE_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A=
      try {=0A=
        var el =3D document.createElement("table");=0A=
        if (el && el.tBodies) {=0A=
          el.innerHTML =3D "<tbody><tr><td>test</td></tr></tbody>";=0A=
          var isBuggy =3D typeof el.tBodies[0] =3D=3D "undefined";=0A=
          el =3D null;=0A=
          return isBuggy;=0A=
        }=0A=
      } catch (e) {=0A=
        return true;=0A=
      }=0A=
    })();=0A=
=0A=
    var LINK_ELEMENT_INNERHTML_BUGGY =3D (function() {=0A=
      try {=0A=
        var el =3D document.createElement('div');=0A=
        el.innerHTML =3D "<link>";=0A=
        var isBuggy =3D (el.childNodes.length =3D=3D=3D 0);=0A=
        el =3D null;=0A=
        return isBuggy;=0A=
      } catch(e) {=0A=
        return true;=0A=
      }=0A=
    })();=0A=
=0A=
    var ANY_INNERHTML_BUGGY =3D SELECT_ELEMENT_INNERHTML_BUGGY ||=0A=
     TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY;=0A=
=0A=
    var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING =3D (function () {=0A=
      var s =3D document.createElement("script"),=0A=
          isBuggy =3D false;=0A=
      try {=0A=
        s.appendChild(document.createTextNode(""));=0A=
        isBuggy =3D !s.firstChild ||=0A=
          s.firstChild && s.firstChild.nodeType !=3D=3D 3;=0A=
      } catch (e) {=0A=
        isBuggy =3D true;=0A=
      }=0A=
      s =3D null;=0A=
      return isBuggy;=0A=
    })();=0A=
=0A=
=0A=
    function update(element, content) {=0A=
      element =3D $(element);=0A=
      var purgeElement =3D Element._purgeElement;=0A=
=0A=
      var descendants =3D element.getElementsByTagName('*'),=0A=
       i =3D descendants.length;=0A=
      while (i--) purgeElement(descendants[i]);=0A=
=0A=
      if (content && content.toElement)=0A=
        content =3D content.toElement();=0A=
=0A=
      if (Object.isElement(content))=0A=
        return element.update().insert(content);=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      var tagName =3D element.tagName.toUpperCase();=0A=
=0A=
      if (tagName =3D=3D=3D 'SCRIPT' && =
SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {=0A=
        element.text =3D content;=0A=
        return element;=0A=
      }=0A=
=0A=
      if (ANY_INNERHTML_BUGGY) {=0A=
        if (tagName in Element._insertionTranslations.tags) {=0A=
          while (element.firstChild) {=0A=
            element.removeChild(element.firstChild);=0A=
          }=0A=
          Element._getContentFromAnonymousElement(tagName, =
content.stripScripts())=0A=
            .each(function(node) {=0A=
              element.appendChild(node)=0A=
            });=0A=
        } else if (LINK_ELEMENT_INNERHTML_BUGGY && =
Object.isString(content) && content.indexOf('<link') > -1) {=0A=
          while (element.firstChild) {=0A=
            element.removeChild(element.firstChild);=0A=
          }=0A=
          var nodes =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts(), true);=0A=
          nodes.each(function(node) { element.appendChild(node) });=0A=
        }=0A=
        else {=0A=
          element.innerHTML =3D content.stripScripts();=0A=
        }=0A=
      }=0A=
      else {=0A=
        element.innerHTML =3D content.stripScripts();=0A=
      }=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
      return element;=0A=
    }=0A=
=0A=
    return update;=0A=
  })(),=0A=
=0A=
  replace: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    else if (!Object.isElement(content)) {=0A=
      content =3D Object.toHTML(content);=0A=
      var range =3D element.ownerDocument.createRange();=0A=
      range.selectNode(element);=0A=
      content.evalScripts.bind(content).defer();=0A=
      content =3D range.createContextualFragment(content.stripScripts());=0A=
    }=0A=
    element.parentNode.replaceChild(content, element);=0A=
    return element;=0A=
  },=0A=
=0A=
  insert: function(element, insertions) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A=
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))=0A=
          insertions =3D {bottom:insertions};=0A=
=0A=
    var content, insert, tagName, childNodes;=0A=
=0A=
    for (var position in insertions) {=0A=
      content  =3D insertions[position];=0A=
      position =3D position.toLowerCase();=0A=
      insert =3D Element._insertionTranslations[position];=0A=
=0A=
      if (content && content.toElement) content =3D content.toElement();=0A=
      if (Object.isElement(content)) {=0A=
        insert(element, content);=0A=
        continue;=0A=
      }=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A=
        ? element.parentNode : element).tagName.toUpperCase();=0A=
=0A=
      childNodes =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
=0A=
      if (position =3D=3D 'top' || position =3D=3D 'after') =
childNodes.reverse();=0A=
      childNodes.each(insert.curry(element));=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  wrap: function(element, wrapper, attributes) {=0A=
    element =3D $(element);=0A=
    if (Object.isElement(wrapper))=0A=
      $(wrapper).writeAttribute(attributes || { });=0A=
    else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, =
attributes);=0A=
    else wrapper =3D new Element('div', wrapper);=0A=
    if (element.parentNode)=0A=
      element.parentNode.replaceChild(wrapper, element);=0A=
    wrapper.appendChild(element);=0A=
    return wrapper;=0A=
  },=0A=
=0A=
  inspect: function(element) {=0A=
    element =3D $(element);=0A=
    var result =3D '<' + element.tagName.toLowerCase();=0A=
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A=
      var property =3D pair.first(),=0A=
          attribute =3D pair.last(),=0A=
          value =3D (element[property] || '').toString();=0A=
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);=0A=
    });=0A=
    return result + '>';=0A=
  },=0A=
=0A=
  recursivelyCollect: function(element, property, maximumLength) {=0A=
    element =3D $(element);=0A=
    maximumLength =3D maximumLength || -1;=0A=
    var elements =3D [];=0A=
=0A=
    while (element =3D element[property]) {=0A=
      if (element.nodeType =3D=3D 1)=0A=
        elements.push(Element.extend(element));=0A=
      if (elements.length =3D=3D maximumLength)=0A=
        break;=0A=
    }=0A=
=0A=
    return elements;=0A=
  },=0A=
=0A=
  ancestors: function(element) {=0A=
    return Element.recursivelyCollect(element, 'parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return Element.select(element, "*");=0A=
  },=0A=
=0A=
  firstDescendant: function(element) {=0A=
    element =3D $(element).firstChild;=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    return $(element);=0A=
  },=0A=
=0A=
  immediateDescendants: function(element) {=0A=
    var results =3D [], child =3D $(element).firstChild;=0A=
    while (child) {=0A=
      if (child.nodeType =3D=3D=3D 1) {=0A=
        results.push(Element.extend(child));=0A=
      }=0A=
      child =3D child.nextSibling;=0A=
    }=0A=
    return results;=0A=
  },=0A=
=0A=
  previousSiblings: function(element, maximumLength) {=0A=
    return Element.recursivelyCollect(element, 'previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return Element.recursivelyCollect(element, 'nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return Element.previousSiblings(element).reverse()=0A=
      .concat(Element.nextSiblings(element));=0A=
  },=0A=
=0A=
  match: function(element, selector) {=0A=
    element =3D $(element);=0A=
    if (Object.isString(selector))=0A=
      return Prototype.Selector.match(element, selector);=0A=
    return selector.match(element);=0A=
  },=0A=
=0A=
  up: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return $(element.parentNode);=0A=
    var ancestors =3D Element.ancestors(element);=0A=
    return Object.isNumber(expression) ? ancestors[expression] :=0A=
      Prototype.Selector.find(ancestors, expression, index);=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
Element.firstDescendant(element);=0A=
    return Object.isNumber(expression) ? =
Element.descendants(element)[expression] :=0A=
      Element.select(element, expression)[index || 0];=0A=
  },=0A=
=0A=
  previous: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (Object.isNumber(expression)) index =3D expression, expression =
=3D false;=0A=
    if (!Object.isNumber(index)) index =3D 0;=0A=
=0A=
    if (expression) {=0A=
      return Prototype.Selector.find(element.previousSiblings(), =
expression, index);=0A=
    } else {=0A=
      return element.recursivelyCollect("previousSibling", index + =
1)[index];=0A=
    }=0A=
  },=0A=
=0A=
  next: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (Object.isNumber(expression)) index =3D expression, expression =
=3D false;=0A=
    if (!Object.isNumber(index)) index =3D 0;=0A=
=0A=
    if (expression) {=0A=
      return Prototype.Selector.find(element.nextSiblings(), expression, =
index);=0A=
    } else {=0A=
      var maximumLength =3D Object.isNumber(index) ? index + 1 : 1;=0A=
      return element.recursivelyCollect("nextSibling", index + 1)[index];=0A=
    }=0A=
  },=0A=
=0A=
=0A=
  select: function(element) {=0A=
    element =3D $(element);=0A=
    var expressions =3D Array.prototype.slice.call(arguments, 1).join(', =
');=0A=
    return Prototype.Selector.select(expressions, element);=0A=
  },=0A=
=0A=
  adjacent: function(element) {=0A=
    element =3D $(element);=0A=
    var expressions =3D Array.prototype.slice.call(arguments, 1).join(', =
');=0A=
    return Prototype.Selector.select(expressions, =
element.parentNode).without(element);=0A=
  },=0A=
=0A=
  identify: function(element) {=0A=
    element =3D $(element);=0A=
    var id =3D Element.readAttribute(element, 'id');=0A=
    if (id) return id;=0A=
    do { id =3D 'anonymous_element_' + Element.idCounter++ } while =
($(id));=0A=
    Element.writeAttribute(element, 'id', id);=0A=
    return id;=0A=
  },=0A=
=0A=
  readAttribute: function(element, name) {=0A=
    element =3D $(element);=0A=
    if (Prototype.Browser.IE) {=0A=
      var t =3D Element._attributeTranslations.read;=0A=
      if (t.values[name]) return t.values[name](element, name);=0A=
      if (t.names[name]) name =3D t.names[name];=0A=
      if (name.include(':')) {=0A=
        return (!element.attributes || !element.attributes[name]) ? null =
:=0A=
         element.attributes[name].value;=0A=
      }=0A=
    }=0A=
    return element.getAttribute(name);=0A=
  },=0A=
=0A=
  writeAttribute: function(element, name, value) {=0A=
    element =3D $(element);=0A=
    var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A=
=0A=
    if (typeof name =3D=3D 'object') attributes =3D name;=0A=
    else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A=
=0A=
    for (var attr in attributes) {=0A=
      name =3D t.names[attr] || attr;=0A=
      value =3D attributes[attr];=0A=
      if (t.values[attr]) name =3D t.values[attr](element, value);=0A=
      if (value =3D=3D=3D false || value =3D=3D=3D null)=0A=
        element.removeAttribute(name);=0A=
      else if (value =3D=3D=3D true)=0A=
        element.setAttribute(name, name);=0A=
      else element.setAttribute(name, value);=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    return Element.getDimensions(element).height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return Element.getDimensions(element).width;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var elementClassName =3D element.className;=0A=
    return (elementClassName.length > 0 && (elementClassName =3D=3D =
className ||=0A=
      new RegExp("(^|\\s)" + className + =
"(\\s|$)").test(elementClassName)));=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    if (!Element.hasClassName(element, className))=0A=
      element.className +=3D (element.className ? ' ' : '') + className;=0A=
    return element;=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    element.className =3D element.className.replace(=0A=
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A=
    return element;=0A=
  },=0A=
=0A=
  toggleClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return Element[Element.hasClassName(element, className) ?=0A=
      'removeClassName' : 'addClassName'](element, className);=0A=
  },=0A=
=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    var node =3D element.firstChild;=0A=
    while (node) {=0A=
      var nextNode =3D node.nextSibling;=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        element.removeChild(node);=0A=
      node =3D nextNode;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.blank();=0A=
  },=0A=
=0A=
  descendantOf: function(element, ancestor) {=0A=
    element =3D $(element), ancestor =3D $(ancestor);=0A=
=0A=
    if (element.compareDocumentPosition)=0A=
      return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A=
=0A=
    if (ancestor.contains)=0A=
      return ancestor.contains(element) && ancestor !=3D=3D element;=0A=
=0A=
    while (element =3D element.parentNode)=0A=
      if (element =3D=3D ancestor) return true;=0A=
=0A=
    return false;=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.cumulativeOffset(element);=0A=
    window.scrollTo(pos[0], pos[1]);=0A=
    return element;=0A=
  },=0A=
=0A=
  getStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value || value =3D=3D 'auto') {=0A=
      var css =3D document.defaultView.getComputedStyle(element, null);=0A=
      value =3D css ? css[style] : null;=0A=
    }=0A=
    if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A=
    return value =3D=3D 'auto' ? null : value;=0A=
  },=0A=
=0A=
  getOpacity: function(element) {=0A=
    return $(element).getStyle('opacity');=0A=
  },=0A=
=0A=
  setStyle: function(element, styles) {=0A=
    element =3D $(element);=0A=
    var elementStyle =3D element.style, match;=0A=
    if (Object.isString(styles)) {=0A=
      element.style.cssText +=3D ';' + styles;=0A=
      return styles.include('opacity') ?=0A=
        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : =
element;=0A=
    }=0A=
    for (var property in styles)=0A=
      if (property =3D=3D 'opacity') =
element.setOpacity(styles[property]);=0A=
      else=0A=
        elementStyle[(property =3D=3D 'float' || property =3D=3D =
'cssFloat') ?=0A=
          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : =
'styleFloat') :=0A=
            property] =3D styles[property];=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  setOpacity: function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      if (Prototype.Browser.Opera) {=0A=
        element.style.top =3D 0;=0A=
        element.style.left =3D 0;=0A=
      }=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  undoPositioned: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._madePositioned) {=0A=
      element._madePositioned =3D undefined;=0A=
      element.style.position =3D=0A=
        element.style.top =3D=0A=
        element.style.left =3D=0A=
        element.style.bottom =3D=0A=
        element.style.right =3D '';=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  makeClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return element;=0A=
    element._overflow =3D Element.getStyle(element, 'overflow') || =
'auto';=0A=
    if (element._overflow !=3D=3D 'hidden')=0A=
      element.style.overflow =3D 'hidden';=0A=
    return element;=0A=
  },=0A=
=0A=
  undoClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element._overflow) return element;=0A=
    element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : =
element._overflow;=0A=
    element._overflow =3D null;=0A=
    return element;=0A=
  },=0A=
=0A=
  clonePosition: function(element, source) {=0A=
    var options =3D Object.extend({=0A=
      setLeft:    true,=0A=
      setTop:     true,=0A=
      setWidth:   true,=0A=
      setHeight:  true,=0A=
      offsetTop:  0,=0A=
      offsetLeft: 0=0A=
    }, arguments[2] || { });=0A=
=0A=
    source =3D $(source);=0A=
    var p =3D Element.viewportOffset(source), delta =3D [0, 0], parent =
=3D null;=0A=
=0A=
    element =3D $(element);=0A=
=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A=
      parent =3D Element.getOffsetParent(element);=0A=
      delta =3D Element.viewportOffset(parent);=0A=
    }=0A=
=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    if (options.setLeft)   element.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if (options.setTop)    element.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if (options.setWidth)  element.style.width =3D source.offsetWidth + =
'px';=0A=
    if (options.setHeight) element.style.height =3D source.offsetHeight =
+ 'px';=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.Methods, {=0A=
  getElementsBySelector: Element.Methods.select,=0A=
=0A=
  childElements: Element.Methods.immediateDescendants=0A=
});=0A=
=0A=
Element._attributeTranslations =3D {=0A=
  write: {=0A=
    names: {=0A=
      className: 'class',=0A=
      htmlFor:   'for'=0A=
    },=0A=
    values: { }=0A=
  }=0A=
};=0A=
=0A=
if (Prototype.Browser.Opera) {=0A=
  Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A=
    function(proceed, element, style) {=0A=
      switch (style) {=0A=
        case 'height': case 'width':=0A=
          if (!Element.visible(element)) return null;=0A=
=0A=
          var dim =3D parseInt(proceed(element, style), 10);=0A=
=0A=
          if (dim !=3D=3D element['offset' + style.capitalize()])=0A=
            return dim + 'px';=0A=
=0A=
          var properties;=0A=
          if (style =3D=3D=3D 'height') {=0A=
            properties =3D ['border-top-width', 'padding-top',=0A=
             'padding-bottom', 'border-bottom-width'];=0A=
          }=0A=
          else {=0A=
            properties =3D ['border-left-width', 'padding-left',=0A=
             'padding-right', 'border-right-width'];=0A=
          }=0A=
          return properties.inject(dim, function(memo, property) {=0A=
            var val =3D proceed(element, property);=0A=
            return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A=
          }) + 'px';=0A=
        default: return proceed(element, style);=0A=
      }=0A=
    }=0A=
  );=0A=
=0A=
  Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A=
    function(proceed, element, attribute) {=0A=
      if (attribute =3D=3D=3D 'title') return element.title;=0A=
      return proceed(element, attribute);=0A=
    }=0A=
  );=0A=
}=0A=
=0A=
else if (Prototype.Browser.IE) {=0A=
  Element.Methods.getStyle =3D function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? =
'styleFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value && element.currentStyle) value =3D =
element.currentStyle[style];=0A=
=0A=
    if (style =3D=3D 'opacity') {=0A=
      if (value =3D (element.getStyle('filter') || =
'').match(/alpha\(opacity=3D(.*)\)/))=0A=
        if (value[1]) return parseFloat(value[1]) / 100;=0A=
      return 1.0;=0A=
    }=0A=
=0A=
    if (value =3D=3D 'auto') {=0A=
      if ((style =3D=3D 'width' || style =3D=3D 'height') && =
(element.getStyle('display') !=3D 'none'))=0A=
        return element['offset' + style.capitalize()] + 'px';=0A=
      return null;=0A=
    }=0A=
    return value;=0A=
  };=0A=
=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    function stripAlpha(filter){=0A=
      return filter.replace(/alpha\([^\)]*\)/gi,'');=0A=
    }=0A=
    element =3D $(element);=0A=
    var currentStyle =3D element.currentStyle;=0A=
    if ((currentStyle && !currentStyle.hasLayout) ||=0A=
      (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A=
        element.style.zoom =3D 1;=0A=
=0A=
    var filter =3D element.getStyle('filter'), style =3D element.style;=0A=
    if (value =3D=3D 1 || value =3D=3D=3D '') {=0A=
      (filter =3D stripAlpha(filter)) ?=0A=
        style.filter =3D filter : style.removeAttribute('filter');=0A=
      return element;=0A=
    } else if (value < 0.00001) value =3D 0;=0A=
    style.filter =3D stripAlpha(filter) +=0A=
      'alpha(opacity=3D' + (value * 100) + ')';=0A=
    return element;=0A=
  };=0A=
=0A=
  Element._attributeTranslations =3D (function(){=0A=
=0A=
    var classProp =3D 'className',=0A=
        forProp =3D 'for',=0A=
        el =3D document.createElement('div');=0A=
=0A=
    el.setAttribute(classProp, 'x');=0A=
=0A=
    if (el.className !=3D=3D 'x') {=0A=
      el.setAttribute('class', 'x');=0A=
      if (el.className =3D=3D=3D 'x') {=0A=
        classProp =3D 'class';=0A=
      }=0A=
    }=0A=
    el =3D null;=0A=
=0A=
    el =3D document.createElement('label');=0A=
    el.setAttribute(forProp, 'x');=0A=
    if (el.htmlFor !=3D=3D 'x') {=0A=
      el.setAttribute('htmlFor', 'x');=0A=
      if (el.htmlFor =3D=3D=3D 'x') {=0A=
        forProp =3D 'htmlFor';=0A=
      }=0A=
    }=0A=
    el =3D null;=0A=
=0A=
    return {=0A=
      read: {=0A=
        names: {=0A=
          'class':      classProp,=0A=
          'className':  classProp,=0A=
          'for':        forProp,=0A=
          'htmlFor':    forProp=0A=
        },=0A=
        values: {=0A=
          _getAttr: function(element, attribute) {=0A=
            return element.getAttribute(attribute);=0A=
          },=0A=
          _getAttr2: function(element, attribute) {=0A=
            return element.getAttribute(attribute, 2);=0A=
          },=0A=
          _getAttrNode: function(element, attribute) {=0A=
            var node =3D element.getAttributeNode(attribute);=0A=
            return node ? node.value : "";=0A=
          },=0A=
          _getEv: (function(){=0A=
=0A=
            var el =3D document.createElement('div'), f;=0A=
            el.onclick =3D Prototype.emptyFunction;=0A=
            var value =3D el.getAttribute('onclick');=0A=
=0A=
            if (String(value).indexOf('{') > -1) {=0A=
              f =3D function(element, attribute) {=0A=
                attribute =3D element.getAttribute(attribute);=0A=
                if (!attribute) return null;=0A=
                attribute =3D attribute.toString();=0A=
                attribute =3D attribute.split('{')[1];=0A=
                attribute =3D attribute.split('}')[0];=0A=
                return attribute.strip();=0A=
              };=0A=
            }=0A=
            else if (value =3D=3D=3D '') {=0A=
              f =3D function(element, attribute) {=0A=
                attribute =3D element.getAttribute(attribute);=0A=
                if (!attribute) return null;=0A=
                return attribute.strip();=0A=
              };=0A=
            }=0A=
            el =3D null;=0A=
            return f;=0A=
          })(),=0A=
          _flag: function(element, attribute) {=0A=
            return $(element).hasAttribute(attribute) ? attribute : null;=0A=
          },=0A=
          style: function(element) {=0A=
            return element.style.cssText.toLowerCase();=0A=
          },=0A=
          title: function(element) {=0A=
            return element.title;=0A=
          }=0A=
        }=0A=
      }=0A=
    }=0A=
  })();=0A=
=0A=
  Element._attributeTranslations.write =3D {=0A=
    names: Object.extend({=0A=
      cellpadding: 'cellPadding',=0A=
      cellspacing: 'cellSpacing'=0A=
    }, Element._attributeTranslations.read.names),=0A=
    values: {=0A=
      checked: function(element, value) {=0A=
        element.checked =3D !!value;=0A=
      },=0A=
=0A=
      style: function(element, value) {=0A=
        element.style.cssText =3D value ? value : '';=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.has =3D {};=0A=
=0A=
  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A=
      'encType maxLength readOnly longDesc =
frameBorder').each(function(attr) {=0A=
    Element._attributeTranslations.write.names[attr.toLowerCase()] =3D =
attr;=0A=
    Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A=
  });=0A=
=0A=
  (function(v) {=0A=
    Object.extend(v, {=0A=
      href:        v._getAttr2,=0A=
      src:         v._getAttr2,=0A=
      type:        v._getAttr,=0A=
      action:      v._getAttrNode,=0A=
      disabled:    v._flag,=0A=
      checked:     v._flag,=0A=
      readonly:    v._flag,=0A=
      multiple:    v._flag,=0A=
      onload:      v._getEv,=0A=
      onunload:    v._getEv,=0A=
      onclick:     v._getEv,=0A=
      ondblclick:  v._getEv,=0A=
      onmousedown: v._getEv,=0A=
      onmouseup:   v._getEv,=0A=
      onmouseover: v._getEv,=0A=
      onmousemove: v._getEv,=0A=
      onmouseout:  v._getEv,=0A=
      onfocus:     v._getEv,=0A=
      onblur:      v._getEv,=0A=
      onkeypress:  v._getEv,=0A=
      onkeydown:   v._getEv,=0A=
      onkeyup:     v._getEv,=0A=
      onsubmit:    v._getEv,=0A=
      onreset:     v._getEv,=0A=
      onselect:    v._getEv,=0A=
      onchange:    v._getEv=0A=
    });=0A=
  })(Element._attributeTranslations.read.values);=0A=
=0A=
  if (Prototype.BrowserFeatures.ElementExtensions) {=0A=
    (function() {=0A=
      function _descendants(element) {=0A=
        var nodes =3D element.getElementsByTagName('*'), results =3D [];=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName !=3D=3D "!") // Filter out comment nodes.=0A=
            results.push(node);=0A=
        return results;=0A=
      }=0A=
=0A=
      Element.Methods.down =3D function(element, expression, index) {=0A=
        element =3D $(element);=0A=
        if (arguments.length =3D=3D 1) return element.firstDescendant();=0A=
        return Object.isNumber(expression) ? =
_descendants(element)[expression] :=0A=
          Element.select(element, expression)[index || 0];=0A=
      }=0A=
    })();=0A=
  }=0A=
=0A=
}=0A=
=0A=
else if (Prototype.Browser.Gecko && =
/rv:1\.8\.0/.test(navigator.userAgent)) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A=
      (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
else if (Prototype.Browser.WebKit) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
=0A=
    if (value =3D=3D 1)=0A=
      if (element.tagName.toUpperCase() =3D=3D 'IMG' && element.width) {=0A=
        element.width++; element.width--;=0A=
      } else try {=0A=
        var n =3D document.createTextNode(' ');=0A=
        element.appendChild(n);=0A=
        element.removeChild(n);=0A=
      } catch (e) { }=0A=
=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
if ('outerHTML' in document.documentElement) {=0A=
  Element.Methods.replace =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) {=0A=
      element.parentNode.replaceChild(content, element);=0A=
      return element;=0A=
    }=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var parent =3D element.parentNode, tagName =3D =
parent.tagName.toUpperCase();=0A=
=0A=
    if (Element._insertionTranslations.tags[tagName]) {=0A=
      var nextSibling =3D element.next(),=0A=
          fragments =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
      parent.removeChild(element);=0A=
      if (nextSibling)=0A=
        fragments.each(function(node) { parent.insertBefore(node, =
nextSibling) });=0A=
      else=0A=
        fragments.each(function(node) { parent.appendChild(node) });=0A=
    }=0A=
    else element.outerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
Element._returnOffset =3D function(l, t) {=0A=
  var result =3D [l, t];=0A=
  result.left =3D l;=0A=
  result.top =3D t;=0A=
  return result;=0A=
};=0A=
=0A=
Element._getContentFromAnonymousElement =3D function(tagName, html, =
force) {=0A=
  var div =3D new Element('div'),=0A=
      t =3D Element._insertionTranslations.tags[tagName];=0A=
=0A=
  var workaround =3D false;=0A=
  if (t) workaround =3D true;=0A=
  else if (force) {=0A=
    workaround =3D true;=0A=
    t =3D ['', '', 0];=0A=
  }=0A=
=0A=
  if (workaround) {=0A=
    div.innerHTML =3D '&nbsp;' + t[0] + html + t[1];=0A=
    div.removeChild(div.firstChild);=0A=
    for (var i =3D t[2]; i--; ) {=0A=
      div =3D div.firstChild;=0A=
    }=0A=
  }=0A=
  else {=0A=
    div.innerHTML =3D html;=0A=
  }=0A=
  return $A(div.childNodes);=0A=
};=0A=
=0A=
Element._insertionTranslations =3D {=0A=
  before: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element);=0A=
  },=0A=
  top: function(element, node) {=0A=
    element.insertBefore(node, element.firstChild);=0A=
  },=0A=
  bottom: function(element, node) {=0A=
    element.appendChild(node);=0A=
  },=0A=
  after: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element.nextSibling);=0A=
  },=0A=
  tags: {=0A=
    TABLE:  ['<table>',                '</table>',                   1],=0A=
    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],=0A=
    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],=0A=
    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],=0A=
    SELECT: ['<select>',               '</select>',                  1]=0A=
  }=0A=
};=0A=
=0A=
(function() {=0A=
  var tags =3D Element._insertionTranslations.tags;=0A=
  Object.extend(tags, {=0A=
    THEAD: tags.TBODY,=0A=
    TFOOT: tags.TBODY,=0A=
    TH:    tags.TD=0A=
  });=0A=
})();=0A=
=0A=
Element.Methods.Simulated =3D {=0A=
  hasAttribute: function(element, attribute) {=0A=
    attribute =3D Element._attributeTranslations.has[attribute] || =
attribute;=0A=
    var node =3D $(element).getAttributeNode(attribute);=0A=
    return !!(node && node.specified);=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.ByTag =3D { };=0A=
=0A=
Object.extend(Element, Element.Methods);=0A=
=0A=
(function(div) {=0A=
=0A=
  if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) {=0A=
    window.HTMLElement =3D { };=0A=
    window.HTMLElement.prototype =3D div['__proto__'];=0A=
    Prototype.BrowserFeatures.ElementExtensions =3D true;=0A=
  }=0A=
=0A=
  div =3D null;=0A=
=0A=
})(document.createElement('div'));=0A=
=0A=
Element.extend =3D (function() {=0A=
=0A=
  function checkDeficiency(tagName) {=0A=
    if (typeof window.Element !=3D 'undefined') {=0A=
      var proto =3D window.Element.prototype;=0A=
      if (proto) {=0A=
        var id =3D '_' + (Math.random()+'').slice(2),=0A=
            el =3D document.createElement(tagName);=0A=
        proto[id] =3D 'x';=0A=
        var isBuggy =3D (el[id] !=3D=3D 'x');=0A=
        delete proto[id];=0A=
        el =3D null;=0A=
        return isBuggy;=0A=
      }=0A=
    }=0A=
    return false;=0A=
  }=0A=
=0A=
  function extendElementWith(element, methods) {=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (Object.isFunction(value) && !(property in element))=0A=
        element[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY =3D checkDeficiency('object');=0A=
=0A=
  if (Prototype.BrowserFeatures.SpecificElementExtensions) {=0A=
    if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) {=0A=
      return function(element) {=0A=
        if (element && typeof element._extendedByPrototype =3D=3D =
'undefined') {=0A=
          var t =3D element.tagName;=0A=
          if (t && (/^(?:object|applet|embed)$/i.test(t))) {=0A=
            extendElementWith(element, Element.Methods);=0A=
            extendElementWith(element, Element.Methods.Simulated);=0A=
            extendElementWith(element, =
Element.Methods.ByTag[t.toUpperCase()]);=0A=
          }=0A=
        }=0A=
        return element;=0A=
      }=0A=
    }=0A=
    return Prototype.K;=0A=
  }=0A=
=0A=
  var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A=
=0A=
  var extend =3D Object.extend(function(element) {=0A=
    if (!element || typeof element._extendedByPrototype !=3D 'undefined' =
||=0A=
        element.nodeType !=3D 1 || element =3D=3D window) return element;=0A=
=0A=
    var methods =3D Object.clone(Methods),=0A=
        tagName =3D element.tagName.toUpperCase();=0A=
=0A=
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A=
=0A=
    extendElementWith(element, methods);=0A=
=0A=
    element._extendedByPrototype =3D Prototype.emptyFunction;=0A=
    return element;=0A=
=0A=
  }, {=0A=
    refresh: function() {=0A=
      if (!Prototype.BrowserFeatures.ElementExtensions) {=0A=
        Object.extend(Methods, Element.Methods);=0A=
        Object.extend(Methods, Element.Methods.Simulated);=0A=
      }=0A=
    }=0A=
  });=0A=
=0A=
  extend.refresh();=0A=
  return extend;=0A=
})();=0A=
=0A=
if (document.documentElement.hasAttribute) {=0A=
  Element.hasAttribute =3D function(element, attribute) {=0A=
    return element.hasAttribute(attribute);=0A=
  };=0A=
}=0A=
else {=0A=
  Element.hasAttribute =3D Element.Methods.Simulated.hasAttribute;=0A=
}=0A=
=0A=
Element.addMethods =3D function(methods) {=0A=
  var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A=
=0A=
  if (!methods) {=0A=
    Object.extend(Form, Form.Methods);=0A=
    Object.extend(Form.Element, Form.Element.Methods);=0A=
    Object.extend(Element.Methods.ByTag, {=0A=
      "FORM":     Object.clone(Form.Methods),=0A=
      "INPUT":    Object.clone(Form.Element.Methods),=0A=
      "SELECT":   Object.clone(Form.Element.Methods),=0A=
      "TEXTAREA": Object.clone(Form.Element.Methods),=0A=
      "BUTTON":   Object.clone(Form.Element.Methods)=0A=
    });=0A=
  }=0A=
=0A=
  if (arguments.length =3D=3D 2) {=0A=
    var tagName =3D methods;=0A=
    methods =3D arguments[1];=0A=
  }=0A=
=0A=
  if (!tagName) Object.extend(Element.Methods, methods || { });=0A=
  else {=0A=
    if (Object.isArray(tagName)) tagName.each(extend);=0A=
    else extend(tagName);=0A=
  }=0A=
=0A=
  function extend(tagName) {=0A=
    tagName =3D tagName.toUpperCase();=0A=
    if (!Element.Methods.ByTag[tagName])=0A=
      Element.Methods.ByTag[tagName] =3D { };=0A=
    Object.extend(Element.Methods.ByTag[tagName], methods);=0A=
  }=0A=
=0A=
  function copy(methods, destination, onlyIfAbsent) {=0A=
    onlyIfAbsent =3D onlyIfAbsent || false;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (!Object.isFunction(value)) continue;=0A=
      if (!onlyIfAbsent || !(property in destination))=0A=
        destination[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  function findDOMClass(tagName) {=0A=
    var klass;=0A=
    var trans =3D {=0A=
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A=
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": =
"DList",=0A=
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": =
"Heading",=0A=
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A=
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", =
"CAPTION":=0A=
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A=
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", =
"TR":=0A=
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A=
      "FrameSet", "IFRAME": "IFrame"=0A=
    };=0A=
    if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
=0A=
    var element =3D document.createElement(tagName),=0A=
        proto =3D element['__proto__'] || element.constructor.prototype;=0A=
=0A=
    element =3D null;=0A=
    return proto;=0A=
  }=0A=
=0A=
  var elementPrototype =3D window.HTMLElement ? HTMLElement.prototype :=0A=
   Element.prototype;=0A=
=0A=
  if (F.ElementExtensions) {=0A=
    copy(Element.Methods, elementPrototype);=0A=
    copy(Element.Methods.Simulated, elementPrototype, true);=0A=
  }=0A=
=0A=
  if (F.SpecificElementExtensions) {=0A=
    for (var tag in Element.Methods.ByTag) {=0A=
      var klass =3D findDOMClass(tag);=0A=
      if (Object.isUndefined(klass)) continue;=0A=
      copy(T[tag], klass.prototype);=0A=
    }=0A=
  }=0A=
=0A=
  Object.extend(Element, Element.Methods);=0A=
  delete Element.ByTag;=0A=
=0A=
  if (Element.extend.refresh) Element.extend.refresh();=0A=
  Element.cache =3D { };=0A=
};=0A=
=0A=
=0A=
document.viewport =3D {=0A=
=0A=
  getDimensions: function() {=0A=
    return { width: this.getWidth(), height: this.getHeight() };=0A=
  },=0A=
=0A=
  getScrollOffsets: function() {=0A=
    return Element._returnOffset(=0A=
      window.pageXOffset || document.documentElement.scrollLeft || =
document.body.scrollLeft,=0A=
      window.pageYOffset || document.documentElement.scrollTop  || =
document.body.scrollTop);=0A=
  }=0A=
};=0A=
=0A=
(function(viewport) {=0A=
  var B =3D Prototype.Browser, doc =3D document, element, property =3D =
{};=0A=
=0A=
  function getRootElement() {=0A=
    if (B.WebKit && !doc.evaluate)=0A=
      return document;=0A=
=0A=
    if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)=0A=
      return document.body;=0A=
=0A=
    return document.documentElement;=0A=
  }=0A=
=0A=
  function define(D) {=0A=
    if (!element) element =3D getRootElement();=0A=
=0A=
    property[D] =3D 'client' + D;=0A=
=0A=
    viewport['get' + D] =3D function() { return element[property[D]] };=0A=
    return viewport['get' + D]();=0A=
  }=0A=
=0A=
  viewport.getWidth  =3D define.curry('Width');=0A=
=0A=
  viewport.getHeight =3D define.curry('Height');=0A=
})(document.viewport);=0A=
=0A=
=0A=
Element.Storage =3D {=0A=
  UID: 1=0A=
};=0A=
=0A=
Element.addMethods({=0A=
  getStorage: function(element) {=0A=
    if (!(element =3D $(element))) return;=0A=
=0A=
    var uid;=0A=
    if (element =3D=3D=3D window) {=0A=
      uid =3D 0;=0A=
    } else {=0A=
      if (typeof element._prototypeUID =3D=3D=3D "undefined")=0A=
        element._prototypeUID =3D Element.Storage.UID++;=0A=
      uid =3D element._prototypeUID;=0A=
    }=0A=
=0A=
    if (!Element.Storage[uid])=0A=
      Element.Storage[uid] =3D $H();=0A=
=0A=
    return Element.Storage[uid];=0A=
  },=0A=
=0A=
  store: function(element, key, value) {=0A=
    if (!(element =3D $(element))) return;=0A=
=0A=
    if (arguments.length =3D=3D=3D 2) {=0A=
      Element.getStorage(element).update(key);=0A=
    } else {=0A=
      Element.getStorage(element).set(key, value);=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  retrieve: function(element, key, defaultValue) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var hash =3D Element.getStorage(element), value =3D hash.get(key);=0A=
=0A=
    if (Object.isUndefined(value)) {=0A=
      hash.set(key, defaultValue);=0A=
      value =3D defaultValue;=0A=
    }=0A=
=0A=
    return value;=0A=
  },=0A=
=0A=
  clone: function(element, deep) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var clone =3D element.cloneNode(deep);=0A=
    clone._prototypeUID =3D void 0;=0A=
    if (deep) {=0A=
      var descendants =3D Element.select(clone, '*'),=0A=
          i =3D descendants.length;=0A=
      while (i--) {=0A=
        descendants[i]._prototypeUID =3D void 0;=0A=
      }=0A=
    }=0A=
    return Element.extend(clone);=0A=
  },=0A=
=0A=
  purge: function(element) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var purgeElement =3D Element._purgeElement;=0A=
=0A=
    purgeElement(element);=0A=
=0A=
    var descendants =3D element.getElementsByTagName('*'),=0A=
     i =3D descendants.length;=0A=
=0A=
    while (i--) purgeElement(descendants[i]);=0A=
=0A=
    return null;=0A=
  }=0A=
});=0A=
=0A=
(function() {=0A=
=0A=
  function toDecimal(pctString) {=0A=
    var match =3D pctString.match(/^(\d+)%?$/i);=0A=
    if (!match) return null;=0A=
    return (Number(match[1]) / 100);=0A=
  }=0A=
=0A=
  function getPixelValue(value, property, context) {=0A=
    var element =3D null;=0A=
    if (Object.isElement(value)) {=0A=
      element =3D value;=0A=
      value =3D element.getStyle(property);=0A=
    }=0A=
=0A=
    if (value =3D=3D=3D null) {=0A=
      return null;=0A=
    }=0A=
=0A=
    if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) {=0A=
      return window.parseFloat(value);=0A=
    }=0A=
=0A=
    var isPercentage =3D value.include('%'), isViewport =3D (context =
=3D=3D=3D document.viewport);=0A=
=0A=
    if (/\d/.test(value) && element && element.runtimeStyle && =
!(isPercentage && isViewport)) {=0A=
      var style =3D element.style.left, rStyle =3D =
element.runtimeStyle.left;=0A=
      element.runtimeStyle.left =3D element.currentStyle.left;=0A=
      element.style.left =3D value || 0;=0A=
      value =3D element.style.pixelLeft;=0A=
      element.style.left =3D style;=0A=
      element.runtimeStyle.left =3D rStyle;=0A=
=0A=
      return value;=0A=
    }=0A=
=0A=
    if (element && isPercentage) {=0A=
      context =3D context || element.parentNode;=0A=
      var decimal =3D toDecimal(value);=0A=
      var whole =3D null;=0A=
      var position =3D element.getStyle('position');=0A=
=0A=
      var isHorizontal =3D property.include('left') || =
property.include('right') ||=0A=
       property.include('width');=0A=
=0A=
      var isVertical =3D  property.include('top') || =
property.include('bottom') ||=0A=
        property.include('height');=0A=
=0A=
      if (context =3D=3D=3D document.viewport) {=0A=
        if (isHorizontal) {=0A=
          whole =3D document.viewport.getWidth();=0A=
        } else if (isVertical) {=0A=
          whole =3D document.viewport.getHeight();=0A=
        }=0A=
      } else {=0A=
        if (isHorizontal) {=0A=
          whole =3D $(context).measure('width');=0A=
        } else if (isVertical) {=0A=
          whole =3D $(context).measure('height');=0A=
        }=0A=
      }=0A=
=0A=
      return (whole =3D=3D=3D null) ? 0 : whole * decimal;=0A=
    }=0A=
=0A=
    return 0;=0A=
  }=0A=
=0A=
  function toCSSPixels(number) {=0A=
    if (Object.isString(number) && number.endsWith('px')) {=0A=
      return number;=0A=
    }=0A=
    return number + 'px';=0A=
  }=0A=
=0A=
  function isDisplayed(element) {=0A=
    var originalElement =3D element;=0A=
    while (element && element.parentNode) {=0A=
      var display =3D element.getStyle('display');=0A=
      if (display =3D=3D=3D 'none') {=0A=
        return false;=0A=
      }=0A=
      element =3D $(element.parentNode);=0A=
    }=0A=
    return true;=0A=
  }=0A=
=0A=
  var hasLayout =3D Prototype.K;=0A=
  if ('currentStyle' in document.documentElement) {=0A=
    hasLayout =3D function(element) {=0A=
      if (!element.currentStyle.hasLayout) {=0A=
        element.style.zoom =3D 1;=0A=
      }=0A=
      return element;=0A=
    };=0A=
  }=0A=
=0A=
  function cssNameFor(key) {=0A=
    if (key.include('border')) key =3D key + '-width';=0A=
    return key.camelize();=0A=
  }=0A=
=0A=
  Element.Layout =3D Class.create(Hash, {=0A=
    initialize: function($super, element, preCompute) {=0A=
      $super();=0A=
      this.element =3D $(element);=0A=
=0A=
      Element.Layout.PROPERTIES.each( function(property) {=0A=
        this._set(property, null);=0A=
      }, this);=0A=
=0A=
      if (preCompute) {=0A=
        this._preComputing =3D true;=0A=
        this._begin();=0A=
        Element.Layout.PROPERTIES.each( this._compute, this );=0A=
        this._end();=0A=
        this._preComputing =3D false;=0A=
      }=0A=
    },=0A=
=0A=
    _set: function(property, value) {=0A=
      return Hash.prototype.set.call(this, property, value);=0A=
    },=0A=
=0A=
    set: function(property, value) {=0A=
      throw "Properties of Element.Layout are read-only.";=0A=
    },=0A=
=0A=
    get: function($super, property) {=0A=
      var value =3D $super(property);=0A=
      return value =3D=3D=3D null ? this._compute(property) : value;=0A=
    },=0A=
=0A=
    _begin: function() {=0A=
      if (this._prepared) return;=0A=
=0A=
      var element =3D this.element;=0A=
      if (isDisplayed(element)) {=0A=
        this._prepared =3D true;=0A=
        return;=0A=
      }=0A=
=0A=
      var originalStyles =3D {=0A=
        position:   element.style.position   || '',=0A=
        width:      element.style.width      || '',=0A=
        visibility: element.style.visibility || '',=0A=
        display:    element.style.display    || ''=0A=
      };=0A=
=0A=
      element.store('prototype_original_styles', originalStyles);=0A=
=0A=
      var position =3D element.getStyle('position'),=0A=
       width =3D element.getStyle('width');=0A=
=0A=
      if (width =3D=3D=3D "0px" || width =3D=3D=3D null) {=0A=
        element.style.display =3D 'block';=0A=
        width =3D element.getStyle('width');=0A=
      }=0A=
=0A=
      var context =3D (position =3D=3D=3D 'fixed') ? document.viewport :=0A=
       element.parentNode;=0A=
=0A=
      element.setStyle({=0A=
        position:   'absolute',=0A=
        visibility: 'hidden',=0A=
        display:    'block'=0A=
      });=0A=
=0A=
      var positionedWidth =3D element.getStyle('width');=0A=
=0A=
      var newWidth;=0A=
      if (width && (positionedWidth =3D=3D=3D width)) {=0A=
        newWidth =3D getPixelValue(element, 'width', context);=0A=
      } else if (position =3D=3D=3D 'absolute' || position =3D=3D=3D =
'fixed') {=0A=
        newWidth =3D getPixelValue(element, 'width', context);=0A=
      } else {=0A=
        var parent =3D element.parentNode, pLayout =3D =
$(parent).getLayout();=0A=
=0A=
        newWidth =3D pLayout.get('width') -=0A=
         this.get('margin-left') -=0A=
         this.get('border-left') -=0A=
         this.get('padding-left') -=0A=
         this.get('padding-right') -=0A=
         this.get('border-right') -=0A=
         this.get('margin-right');=0A=
      }=0A=
=0A=
      element.setStyle({ width: newWidth + 'px' });=0A=
=0A=
      this._prepared =3D true;=0A=
    },=0A=
=0A=
    _end: function() {=0A=
      var element =3D this.element;=0A=
      var originalStyles =3D =
element.retrieve('prototype_original_styles');=0A=
      element.store('prototype_original_styles', null);=0A=
      element.setStyle(originalStyles);=0A=
      this._prepared =3D false;=0A=
    },=0A=
=0A=
    _compute: function(property) {=0A=
      var COMPUTATIONS =3D Element.Layout.COMPUTATIONS;=0A=
      if (!(property in COMPUTATIONS)) {=0A=
        throw "Property not found.";=0A=
      }=0A=
=0A=
      return this._set(property, COMPUTATIONS[property].call(this, =
this.element));=0A=
    },=0A=
=0A=
    toObject: function() {=0A=
      var args =3D $A(arguments);=0A=
      var keys =3D (args.length =3D=3D=3D 0) ? Element.Layout.PROPERTIES =
:=0A=
       args.join(' ').split(' ');=0A=
      var obj =3D {};=0A=
      keys.each( function(key) {=0A=
        if (!Element.Layout.PROPERTIES.include(key)) return;=0A=
        var value =3D this.get(key);=0A=
        if (value !=3D null) obj[key] =3D value;=0A=
      }, this);=0A=
      return obj;=0A=
    },=0A=
=0A=
    toHash: function() {=0A=
      var obj =3D this.toObject.apply(this, arguments);=0A=
      return new Hash(obj);=0A=
    },=0A=
=0A=
    toCSS: function() {=0A=
      var args =3D $A(arguments);=0A=
      var keys =3D (args.length =3D=3D=3D 0) ? Element.Layout.PROPERTIES =
:=0A=
       args.join(' ').split(' ');=0A=
      var css =3D {};=0A=
=0A=
      keys.each( function(key) {=0A=
        if (!Element.Layout.PROPERTIES.include(key)) return;=0A=
        if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return;=0A=
=0A=
        var value =3D this.get(key);=0A=
        if (value !=3D null) css[cssNameFor(key)] =3D value + 'px';=0A=
      }, this);=0A=
      return css;=0A=
    },=0A=
=0A=
    inspect: function() {=0A=
      return "#<Element.Layout>";=0A=
    }=0A=
  });=0A=
=0A=
  Object.extend(Element.Layout, {=0A=
    PROPERTIES: $w('height width top left right bottom border-left =
border-right border-top border-bottom padding-left padding-right =
padding-top padding-bottom margin-top margin-bottom margin-left =
margin-right padding-box-width padding-box-height border-box-width =
border-box-height margin-box-width margin-box-height'),=0A=
=0A=
    COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height =
margin-box-width margin-box-height border-box-width border-box-height'),=0A=
=0A=
    COMPUTATIONS: {=0A=
      'height': function(element) {=0A=
        if (!this._preComputing) this._begin();=0A=
=0A=
        var bHeight =3D this.get('border-box-height');=0A=
        if (bHeight <=3D 0) {=0A=
          if (!this._preComputing) this._end();=0A=
          return 0;=0A=
        }=0A=
=0A=
        var bTop =3D this.get('border-top'),=0A=
         bBottom =3D this.get('border-bottom');=0A=
=0A=
        var pTop =3D this.get('padding-top'),=0A=
         pBottom =3D this.get('padding-bottom');=0A=
=0A=
        if (!this._preComputing) this._end();=0A=
=0A=
        return bHeight - bTop - bBottom - pTop - pBottom;=0A=
      },=0A=
=0A=
      'width': function(element) {=0A=
        if (!this._preComputing) this._begin();=0A=
=0A=
        var bWidth =3D this.get('border-box-width');=0A=
        if (bWidth <=3D 0) {=0A=
          if (!this._preComputing) this._end();=0A=
          return 0;=0A=
        }=0A=
=0A=
        var bLeft =3D this.get('border-left'),=0A=
         bRight =3D this.get('border-right');=0A=
=0A=
        var pLeft =3D this.get('padding-left'),=0A=
         pRight =3D this.get('padding-right');=0A=
=0A=
        if (!this._preComputing) this._end();=0A=
=0A=
        return bWidth - bLeft - bRight - pLeft - pRight;=0A=
      },=0A=
=0A=
      'padding-box-height': function(element) {=0A=
        var height =3D this.get('height'),=0A=
         pTop =3D this.get('padding-top'),=0A=
         pBottom =3D this.get('padding-bottom');=0A=
=0A=
        return height + pTop + pBottom;=0A=
      },=0A=
=0A=
      'padding-box-width': function(element) {=0A=
        var width =3D this.get('width'),=0A=
         pLeft =3D this.get('padding-left'),=0A=
         pRight =3D this.get('padding-right');=0A=
=0A=
        return width + pLeft + pRight;=0A=
      },=0A=
=0A=
      'border-box-height': function(element) {=0A=
        if (!this._preComputing) this._begin();=0A=
        var height =3D element.offsetHeight;=0A=
        if (!this._preComputing) this._end();=0A=
        return height;=0A=
      },=0A=
=0A=
      'border-box-width': function(element) {=0A=
        if (!this._preComputing) this._begin();=0A=
        var width =3D element.offsetWidth;=0A=
        if (!this._preComputing) this._end();=0A=
        return width;=0A=
      },=0A=
=0A=
      'margin-box-height': function(element) {=0A=
        var bHeight =3D this.get('border-box-height'),=0A=
         mTop =3D this.get('margin-top'),=0A=
         mBottom =3D this.get('margin-bottom');=0A=
=0A=
        if (bHeight <=3D 0) return 0;=0A=
=0A=
        return bHeight + mTop + mBottom;=0A=
      },=0A=
=0A=
      'margin-box-width': function(element) {=0A=
        var bWidth =3D this.get('border-box-width'),=0A=
         mLeft =3D this.get('margin-left'),=0A=
         mRight =3D this.get('margin-right');=0A=
=0A=
        if (bWidth <=3D 0) return 0;=0A=
=0A=
        return bWidth + mLeft + mRight;=0A=
      },=0A=
=0A=
      'top': function(element) {=0A=
        var offset =3D element.positionedOffset();=0A=
        return offset.top;=0A=
      },=0A=
=0A=
      'bottom': function(element) {=0A=
        var offset =3D element.positionedOffset(),=0A=
         parent =3D element.getOffsetParent(),=0A=
         pHeight =3D parent.measure('height');=0A=
=0A=
        var mHeight =3D this.get('border-box-height');=0A=
=0A=
        return pHeight - mHeight - offset.top;=0A=
      },=0A=
=0A=
      'left': function(element) {=0A=
        var offset =3D element.positionedOffset();=0A=
        return offset.left;=0A=
      },=0A=
=0A=
      'right': function(element) {=0A=
        var offset =3D element.positionedOffset(),=0A=
         parent =3D element.getOffsetParent(),=0A=
         pWidth =3D parent.measure('width');=0A=
=0A=
        var mWidth =3D this.get('border-box-width');=0A=
=0A=
        return pWidth - mWidth - offset.left;=0A=
      },=0A=
=0A=
      'padding-top': function(element) {=0A=
        return getPixelValue(element, 'paddingTop');=0A=
      },=0A=
=0A=
      'padding-bottom': function(element) {=0A=
        return getPixelValue(element, 'paddingBottom');=0A=
      },=0A=
=0A=
      'padding-left': function(element) {=0A=
        return getPixelValue(element, 'paddingLeft');=0A=
      },=0A=
=0A=
      'padding-right': function(element) {=0A=
        return getPixelValue(element, 'paddingRight');=0A=
      },=0A=
=0A=
      'border-top': function(element) {=0A=
        return getPixelValue(element, 'borderTopWidth');=0A=
      },=0A=
=0A=
      'border-bottom': function(element) {=0A=
        return getPixelValue(element, 'borderBottomWidth');=0A=
      },=0A=
=0A=
      'border-left': function(element) {=0A=
        return getPixelValue(element, 'borderLeftWidth');=0A=
      },=0A=
=0A=
      'border-right': function(element) {=0A=
        return getPixelValue(element, 'borderRightWidth');=0A=
      },=0A=
=0A=
      'margin-top': function(element) {=0A=
        return getPixelValue(element, 'marginTop');=0A=
      },=0A=
=0A=
      'margin-bottom': function(element) {=0A=
        return getPixelValue(element, 'marginBottom');=0A=
      },=0A=
=0A=
      'margin-left': function(element) {=0A=
        return getPixelValue(element, 'marginLeft');=0A=
      },=0A=
=0A=
      'margin-right': function(element) {=0A=
        return getPixelValue(element, 'marginRight');=0A=
      }=0A=
    }=0A=
  });=0A=
=0A=
  if ('getBoundingClientRect' in document.documentElement) {=0A=
    Object.extend(Element.Layout.COMPUTATIONS, {=0A=
      'right': function(element) {=0A=
        var parent =3D hasLayout(element.getOffsetParent());=0A=
        var rect =3D element.getBoundingClientRect(),=0A=
         pRect =3D parent.getBoundingClientRect();=0A=
=0A=
        return (pRect.right - rect.right).round();=0A=
      },=0A=
=0A=
      'bottom': function(element) {=0A=
        var parent =3D hasLayout(element.getOffsetParent());=0A=
        var rect =3D element.getBoundingClientRect(),=0A=
         pRect =3D parent.getBoundingClientRect();=0A=
=0A=
        return (pRect.bottom - rect.bottom).round();=0A=
      }=0A=
    });=0A=
  }=0A=
=0A=
  Element.Offset =3D Class.create({=0A=
    initialize: function(left, top) {=0A=
      this.left =3D left.round();=0A=
      this.top  =3D top.round();=0A=
=0A=
      this[0] =3D this.left;=0A=
      this[1] =3D this.top;=0A=
    },=0A=
=0A=
    relativeTo: function(offset) {=0A=
      return new Element.Offset(=0A=
        this.left - offset.left,=0A=
        this.top  - offset.top=0A=
      );=0A=
    },=0A=
=0A=
    inspect: function() {=0A=
      return "#<Element.Offset left: #{left} top: =
#{top}>".interpolate(this);=0A=
    },=0A=
=0A=
    toString: function() {=0A=
      return "[#{left}, #{top}]".interpolate(this);=0A=
    },=0A=
=0A=
    toArray: function() {=0A=
      return [this.left, this.top];=0A=
    }=0A=
  });=0A=
=0A=
  function getLayout(element, preCompute) {=0A=
    return new Element.Layout(element, preCompute);=0A=
  }=0A=
=0A=
  function measure(element, property) {=0A=
    return $(element).getLayout().get(property);=0A=
  }=0A=
=0A=
  function getDimensions(element) {=0A=
    element =3D $(element);=0A=
    var display =3D Element.getStyle(element, 'display');=0A=
=0A=
    if (display && display !=3D=3D 'none') {=0A=
      return { width: element.offsetWidth, height: element.offsetHeight =
};=0A=
    }=0A=
=0A=
    var style =3D element.style;=0A=
    var originalStyles =3D {=0A=
      visibility: style.visibility,=0A=
      position:   style.position,=0A=
      display:    style.display=0A=
    };=0A=
=0A=
    var newStyles =3D {=0A=
      visibility: 'hidden',=0A=
      display:    'block'=0A=
    };=0A=
=0A=
    if (originalStyles.position !=3D=3D 'fixed')=0A=
      newStyles.position =3D 'absolute';=0A=
=0A=
    Element.setStyle(element, newStyles);=0A=
=0A=
    var dimensions =3D {=0A=
      width:  element.offsetWidth,=0A=
      height: element.offsetHeight=0A=
    };=0A=
=0A=
    Element.setStyle(element, originalStyles);=0A=
=0A=
    return dimensions;=0A=
  }=0A=
=0A=
  function getOffsetParent(element) {=0A=
    element =3D $(element);=0A=
=0A=
    if (isDocument(element) || isDetached(element) || isBody(element) || =
isHtml(element))=0A=
      return $(document.body);=0A=
=0A=
    var isInline =3D (Element.getStyle(element, 'display') =3D=3D=3D =
'inline');=0A=
    if (!isInline && element.offsetParent) return =
$(element.offsetParent);=0A=
=0A=
    while ((element =3D element.parentNode) && element !=3D=3D =
document.body) {=0A=
      if (Element.getStyle(element, 'position') !=3D=3D 'static') {=0A=
        return isHtml(element) ? $(document.body) : $(element);=0A=
      }=0A=
    }=0A=
=0A=
    return $(document.body);=0A=
  }=0A=
=0A=
=0A=
  function cumulativeOffset(element) {=0A=
    element =3D $(element);=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    if (element.parentNode) {=0A=
      do {=0A=
        valueT +=3D element.offsetTop  || 0;=0A=
        valueL +=3D element.offsetLeft || 0;=0A=
        element =3D element.offsetParent;=0A=
      } while (element);=0A=
    }=0A=
    return new Element.Offset(valueL, valueT);=0A=
  }=0A=
=0A=
  function positionedOffset(element) {=0A=
    element =3D $(element);=0A=
=0A=
    var layout =3D element.getLayout();=0A=
=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
      if (element) {=0A=
        if (isBody(element)) break;=0A=
        var p =3D Element.getStyle(element, 'position');=0A=
        if (p !=3D=3D 'static') break;=0A=
      }=0A=
    } while (element);=0A=
=0A=
    valueL -=3D layout.get('margin-top');=0A=
    valueT -=3D layout.get('margin-left');=0A=
=0A=
    return new Element.Offset(valueL, valueT);=0A=
  }=0A=
=0A=
  function cumulativeScrollOffset(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.scrollTop  || 0;=0A=
      valueL +=3D element.scrollLeft || 0;=0A=
      element =3D element.parentNode;=0A=
    } while (element);=0A=
    return new Element.Offset(valueL, valueT);=0A=
  }=0A=
=0A=
  function viewportOffset(forElement) {=0A=
    element =3D $(element);=0A=
    var valueT =3D 0, valueL =3D 0, docBody =3D document.body;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      if (element.offsetParent =3D=3D docBody &&=0A=
        Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      if (element !=3D docBody) {=0A=
        valueT -=3D element.scrollTop  || 0;=0A=
        valueL -=3D element.scrollLeft || 0;=0A=
      }=0A=
    } while (element =3D element.parentNode);=0A=
    return new Element.Offset(valueL, valueT);=0A=
  }=0A=
=0A=
  function absolutize(element) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Element.getStyle(element, 'position') =3D=3D=3D 'absolute') {=0A=
      return element;=0A=
    }=0A=
=0A=
    var offsetParent =3D getOffsetParent(element);=0A=
    var eOffset =3D element.viewportOffset(),=0A=
     pOffset =3D offsetParent.viewportOffset();=0A=
=0A=
    var offset =3D eOffset.relativeTo(pOffset);=0A=
    var layout =3D element.getLayout();=0A=
=0A=
    element.store('prototype_absolutize_original_styles', {=0A=
      left:   element.getStyle('left'),=0A=
      top:    element.getStyle('top'),=0A=
      width:  element.getStyle('width'),=0A=
      height: element.getStyle('height')=0A=
    });=0A=
=0A=
    element.setStyle({=0A=
      position: 'absolute',=0A=
      top:    offset.top + 'px',=0A=
      left:   offset.left + 'px',=0A=
      width:  layout.get('width') + 'px',=0A=
      height: layout.get('height') + 'px'=0A=
    });=0A=
=0A=
    return element;=0A=
  }=0A=
=0A=
  function relativize(element) {=0A=
    element =3D $(element);=0A=
    if (Element.getStyle(element, 'position') =3D=3D=3D 'relative') {=0A=
      return element;=0A=
    }=0A=
=0A=
    var originalStyles =3D=0A=
     element.retrieve('prototype_absolutize_original_styles');=0A=
=0A=
    if (originalStyles) element.setStyle(originalStyles);=0A=
    return element;=0A=
  }=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    getOffsetParent =3D getOffsetParent.wrap(=0A=
      function(proceed, element) {=0A=
        element =3D $(element);=0A=
=0A=
        if (isDocument(element) || isDetached(element) || =
isBody(element) || isHtml(element))=0A=
          return $(document.body);=0A=
=0A=
        var position =3D element.getStyle('position');=0A=
        if (position !=3D=3D 'static') return proceed(element);=0A=
=0A=
        element.setStyle({ position: 'relative' });=0A=
        var value =3D proceed(element);=0A=
        element.setStyle({ position: position });=0A=
        return value;=0A=
      }=0A=
    );=0A=
=0A=
    positionedOffset =3D positionedOffset.wrap(function(proceed, =
element) {=0A=
      element =3D $(element);=0A=
      if (!element.parentNode) return new Element.Offset(0, 0);=0A=
      var position =3D element.getStyle('position');=0A=
      if (position !=3D=3D 'static') return proceed(element);=0A=
=0A=
      var offsetParent =3D element.getOffsetParent();=0A=
      if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D =
'fixed')=0A=
        hasLayout(offsetParent);=0A=
=0A=
      element.setStyle({ position: 'relative' });=0A=
      var value =3D proceed(element);=0A=
      element.setStyle({ position: position });=0A=
      return value;=0A=
    });=0A=
  } else if (Prototype.Browser.Webkit) {=0A=
    cumulativeOffset =3D function(element) {=0A=
      element =3D $(element);=0A=
      var valueT =3D 0, valueL =3D 0;=0A=
      do {=0A=
        valueT +=3D element.offsetTop  || 0;=0A=
        valueL +=3D element.offsetLeft || 0;=0A=
        if (element.offsetParent =3D=3D document.body)=0A=
          if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;=0A=
=0A=
        element =3D element.offsetParent;=0A=
      } while (element);=0A=
=0A=
      return new Element.Offset(valueL, valueT);=0A=
    };=0A=
  }=0A=
=0A=
=0A=
  Element.addMethods({=0A=
    getLayout:              getLayout,=0A=
    measure:                measure,=0A=
    getDimensions:          getDimensions,=0A=
    getOffsetParent:        getOffsetParent,=0A=
    cumulativeOffset:       cumulativeOffset,=0A=
    positionedOffset:       positionedOffset,=0A=
    cumulativeScrollOffset: cumulativeScrollOffset,=0A=
    viewportOffset:         viewportOffset,=0A=
    absolutize:             absolutize,=0A=
    relativize:             relativize=0A=
  });=0A=
=0A=
  function isBody(element) {=0A=
    return element.nodeName.toUpperCase() =3D=3D=3D 'BODY';=0A=
  }=0A=
=0A=
  function isHtml(element) {=0A=
    return element.nodeName.toUpperCase() =3D=3D=3D 'HTML';=0A=
  }=0A=
=0A=
  function isDocument(element) {=0A=
    return element.nodeType =3D=3D=3D Node.DOCUMENT_NODE;=0A=
  }=0A=
=0A=
  function isDetached(element) {=0A=
    return element !=3D=3D document.body &&=0A=
     !Element.descendantOf(element, document.body);=0A=
  }=0A=
=0A=
  if ('getBoundingClientRect' in document.documentElement) {=0A=
    Element.addMethods({=0A=
      viewportOffset: function(element) {=0A=
        element =3D $(element);=0A=
        if (isDetached(element)) return new Element.Offset(0, 0);=0A=
=0A=
        var rect =3D element.getBoundingClientRect(),=0A=
         docEl =3D document.documentElement;=0A=
        return new Element.Offset(rect.left - docEl.clientLeft,=0A=
         rect.top - docEl.clientTop);=0A=
      }=0A=
    });=0A=
  }=0A=
})();=0A=
window.$$ =3D function() {=0A=
  var expression =3D $A(arguments).join(', ');=0A=
  return Prototype.Selector.select(expression, document);=0A=
};=0A=
=0A=
Prototype.Selector =3D (function() {=0A=
=0A=
  function select() {=0A=
    throw new Error('Method "Prototype.Selector.select" must be =
defined.');=0A=
  }=0A=
=0A=
  function match() {=0A=
    throw new Error('Method "Prototype.Selector.match" must be =
defined.');=0A=
  }=0A=
=0A=
  function find(elements, expression, index) {=0A=
    index =3D index || 0;=0A=
    var match =3D Prototype.Selector.match, length =3D elements.length, =
matchIndex =3D 0, i;=0A=
=0A=
    for (i =3D 0; i < length; i++) {=0A=
      if (match(elements[i], expression) && index =3D=3D matchIndex++) {=0A=
        return Element.extend(elements[i]);=0A=
      }=0A=
    }=0A=
  }=0A=
=0A=
  function extendElements(elements) {=0A=
    for (var i =3D 0, length =3D elements.length; i < length; i++) {=0A=
      Element.extend(elements[i]);=0A=
    }=0A=
    return elements;=0A=
  }=0A=
=0A=
=0A=
  var K =3D Prototype.K;=0A=
=0A=
  return {=0A=
    select: select,=0A=
    match: match,=0A=
    find: find,=0A=
    extendElements: (Element.extend =3D=3D=3D K) ? K : extendElements,=0A=
    extendElement: Element.extend=0A=
  };=0A=
})();=0A=
Prototype._original_property =3D window.Sizzle;=0A=
/*!=0A=
 * Sizzle CSS Selector Engine - v1.0=0A=
 *  Copyright 2009, The Dojo Foundation=0A=
 *  Released under the MIT, BSD, and GPL Licenses.=0A=
 *  More information: http://sizzlejs.com/=0A=
 */=0A=
(function(){=0A=
=0A=
var chunker =3D =
/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+=
)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,=0A=
	done =3D 0,=0A=
	toString =3D Object.prototype.toString,=0A=
	hasDuplicate =3D false,=0A=
	baseHasDuplicate =3D true;=0A=
=0A=
[0, 0].sort(function(){=0A=
	baseHasDuplicate =3D false;=0A=
	return 0;=0A=
});=0A=
=0A=
var Sizzle =3D function(selector, context, results, seed) {=0A=
	results =3D results || [];=0A=
	var origContext =3D context =3D context || document;=0A=
=0A=
	if ( context.nodeType !=3D=3D 1 && context.nodeType !=3D=3D 9 ) {=0A=
		return [];=0A=
	}=0A=
=0A=
	if ( !selector || typeof selector !=3D=3D "string" ) {=0A=
		return results;=0A=
	}=0A=
=0A=
	var parts =3D [], m, set, checkSet, check, mode, extra, prune =3D true, =
contextXML =3D isXML(context),=0A=
		soFar =3D selector;=0A=
=0A=
	while ( (chunker.exec(""), m =3D chunker.exec(soFar)) !=3D=3D null ) {=0A=
		soFar =3D m[3];=0A=
=0A=
		parts.push( m[1] );=0A=
=0A=
		if ( m[2] ) {=0A=
			extra =3D m[3];=0A=
			break;=0A=
		}=0A=
	}=0A=
=0A=
	if ( parts.length > 1 && origPOS.exec( selector ) ) {=0A=
		if ( parts.length =3D=3D=3D 2 && Expr.relative[ parts[0] ] ) {=0A=
			set =3D posProcess( parts[0] + parts[1], context );=0A=
		} else {=0A=
			set =3D Expr.relative[ parts[0] ] ?=0A=
				[ context ] :=0A=
				Sizzle( parts.shift(), context );=0A=
=0A=
			while ( parts.length ) {=0A=
				selector =3D parts.shift();=0A=
=0A=
				if ( Expr.relative[ selector ] )=0A=
					selector +=3D parts.shift();=0A=
=0A=
				set =3D posProcess( selector, set );=0A=
			}=0A=
		}=0A=
	} else {=0A=
		if ( !seed && parts.length > 1 && context.nodeType =3D=3D=3D 9 && =
!contextXML &&=0A=
				Expr.match.ID.test(parts[0]) && =
!Expr.match.ID.test(parts[parts.length - 1]) ) {=0A=
			var ret =3D Sizzle.find( parts.shift(), context, contextXML );=0A=
			context =3D ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : =
ret.set[0];=0A=
		}=0A=
=0A=
		if ( context ) {=0A=
			var ret =3D seed ?=0A=
				{ expr: parts.pop(), set: makeArray(seed) } :=0A=
				Sizzle.find( parts.pop(), parts.length =3D=3D=3D 1 && (parts[0] =
=3D=3D=3D "~" || parts[0] =3D=3D=3D "+") && context.parentNode ? =
context.parentNode : context, contextXML );=0A=
			set =3D ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;=0A=
=0A=
			if ( parts.length > 0 ) {=0A=
				checkSet =3D makeArray(set);=0A=
			} else {=0A=
				prune =3D false;=0A=
			}=0A=
=0A=
			while ( parts.length ) {=0A=
				var cur =3D parts.pop(), pop =3D cur;=0A=
=0A=
				if ( !Expr.relative[ cur ] ) {=0A=
					cur =3D "";=0A=
				} else {=0A=
					pop =3D parts.pop();=0A=
				}=0A=
=0A=
				if ( pop =3D=3D null ) {=0A=
					pop =3D context;=0A=
				}=0A=
=0A=
				Expr.relative[ cur ]( checkSet, pop, contextXML );=0A=
			}=0A=
		} else {=0A=
			checkSet =3D parts =3D [];=0A=
		}=0A=
	}=0A=
=0A=
	if ( !checkSet ) {=0A=
		checkSet =3D set;=0A=
	}=0A=
=0A=
	if ( !checkSet ) {=0A=
		throw "Syntax error, unrecognized expression: " + (cur || selector);=0A=
	}=0A=
=0A=
	if ( toString.call(checkSet) =3D=3D=3D "[object Array]" ) {=0A=
		if ( !prune ) {=0A=
			results.push.apply( results, checkSet );=0A=
		} else if ( context && context.nodeType =3D=3D=3D 1 ) {=0A=
			for ( var i =3D 0; checkSet[i] !=3D null; i++ ) {=0A=
				if ( checkSet[i] && (checkSet[i] =3D=3D=3D true || =
checkSet[i].nodeType =3D=3D=3D 1 && contains(context, checkSet[i])) ) {=0A=
					results.push( set[i] );=0A=
				}=0A=
			}=0A=
		} else {=0A=
			for ( var i =3D 0; checkSet[i] !=3D null; i++ ) {=0A=
				if ( checkSet[i] && checkSet[i].nodeType =3D=3D=3D 1 ) {=0A=
					results.push( set[i] );=0A=
				}=0A=
			}=0A=
		}=0A=
	} else {=0A=
		makeArray( checkSet, results );=0A=
	}=0A=
=0A=
	if ( extra ) {=0A=
		Sizzle( extra, origContext, results, seed );=0A=
		Sizzle.uniqueSort( results );=0A=
	}=0A=
=0A=
	return results;=0A=
};=0A=
=0A=
Sizzle.uniqueSort =3D function(results){=0A=
	if ( sortOrder ) {=0A=
		hasDuplicate =3D baseHasDuplicate;=0A=
		results.sort(sortOrder);=0A=
=0A=
		if ( hasDuplicate ) {=0A=
			for ( var i =3D 1; i < results.length; i++ ) {=0A=
				if ( results[i] =3D=3D=3D results[i-1] ) {=0A=
					results.splice(i--, 1);=0A=
				}=0A=
			}=0A=
		}=0A=
	}=0A=
=0A=
	return results;=0A=
};=0A=
=0A=
Sizzle.matches =3D function(expr, set){=0A=
	return Sizzle(expr, null, null, set);=0A=
};=0A=
=0A=
Sizzle.find =3D function(expr, context, isXML){=0A=
	var set, match;=0A=
=0A=
	if ( !expr ) {=0A=
		return [];=0A=
	}=0A=
=0A=
	for ( var i =3D 0, l =3D Expr.order.length; i < l; i++ ) {=0A=
		var type =3D Expr.order[i], match;=0A=
=0A=
		if ( (match =3D Expr.leftMatch[ type ].exec( expr )) ) {=0A=
			var left =3D match[1];=0A=
			match.splice(1,1);=0A=
=0A=
			if ( left.substr( left.length - 1 ) !=3D=3D "\\" ) {=0A=
				match[1] =3D (match[1] || "").replace(/\\/g, "");=0A=
				set =3D Expr.find[ type ]( match, context, isXML );=0A=
				if ( set !=3D null ) {=0A=
					expr =3D expr.replace( Expr.match[ type ], "" );=0A=
					break;=0A=
				}=0A=
			}=0A=
		}=0A=
	}=0A=
=0A=
	if ( !set ) {=0A=
		set =3D context.getElementsByTagName("*");=0A=
	}=0A=
=0A=
	return {set: set, expr: expr};=0A=
};=0A=
=0A=
Sizzle.filter =3D function(expr, set, inplace, not){=0A=
	var old =3D expr, result =3D [], curLoop =3D set, match, anyFound,=0A=
		isXMLFilter =3D set && set[0] && isXML(set[0]);=0A=
=0A=
	while ( expr && set.length ) {=0A=
		for ( var type in Expr.filter ) {=0A=
			if ( (match =3D Expr.match[ type ].exec( expr )) !=3D null ) {=0A=
				var filter =3D Expr.filter[ type ], found, item;=0A=
				anyFound =3D false;=0A=
=0A=
				if ( curLoop =3D=3D result ) {=0A=
					result =3D [];=0A=
				}=0A=
=0A=
				if ( Expr.preFilter[ type ] ) {=0A=
					match =3D Expr.preFilter[ type ]( match, curLoop, inplace, result, =
not, isXMLFilter );=0A=
=0A=
					if ( !match ) {=0A=
						anyFound =3D found =3D true;=0A=
					} else if ( match =3D=3D=3D true ) {=0A=
						continue;=0A=
					}=0A=
				}=0A=
=0A=
				if ( match ) {=0A=
					for ( var i =3D 0; (item =3D curLoop[i]) !=3D null; i++ ) {=0A=
						if ( item ) {=0A=
							found =3D filter( item, match, i, curLoop );=0A=
							var pass =3D not ^ !!found;=0A=
=0A=
							if ( inplace && found !=3D null ) {=0A=
								if ( pass ) {=0A=
									anyFound =3D true;=0A=
								} else {=0A=
									curLoop[i] =3D false;=0A=
								}=0A=
							} else if ( pass ) {=0A=
								result.push( item );=0A=
								anyFound =3D true;=0A=
							}=0A=
						}=0A=
					}=0A=
				}=0A=
=0A=
				if ( found !=3D=3D undefined ) {=0A=
					if ( !inplace ) {=0A=
						curLoop =3D result;=0A=
					}=0A=
=0A=
					expr =3D expr.replace( Expr.match[ type ], "" );=0A=
=0A=
					if ( !anyFound ) {=0A=
						return [];=0A=
					}=0A=
=0A=
					break;=0A=
				}=0A=
			}=0A=
		}=0A=
=0A=
		if ( expr =3D=3D old ) {=0A=
			if ( anyFound =3D=3D null ) {=0A=
				throw "Syntax error, unrecognized expression: " + expr;=0A=
			} else {=0A=
				break;=0A=
			}=0A=
		}=0A=
=0A=
		old =3D expr;=0A=
	}=0A=
=0A=
	return curLoop;=0A=
};=0A=
=0A=
var Expr =3D Sizzle.selectors =3D {=0A=
	order: [ "ID", "NAME", "TAG" ],=0A=
	match: {=0A=
		ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,=0A=
		CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,=0A=
		NAME: /\[name=3D['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,=0A=
		ATTR: =
/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=3D)\s*(['"]*)(.*?)\3|)\s*\]=
/,=0A=
		TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,=0A=
		CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,=0A=
		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=3D[^-]|$)/,=0A=
		PSEUDO: =
/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2=
\))?/=0A=
	},=0A=
	leftMatch: {},=0A=
	attrMap: {=0A=
		"class": "className",=0A=
		"for": "htmlFor"=0A=
	},=0A=
	attrHandle: {=0A=
		href: function(elem){=0A=
			return elem.getAttribute("href");=0A=
		}=0A=
	},=0A=
	relative: {=0A=
		"+": function(checkSet, part, isXML){=0A=
			var isPartStr =3D typeof part =3D=3D=3D "string",=0A=
				isTag =3D isPartStr && !/\W/.test(part),=0A=
				isPartStrNotTag =3D isPartStr && !isTag;=0A=
=0A=
			if ( isTag && !isXML ) {=0A=
				part =3D part.toUpperCase();=0A=
			}=0A=
=0A=
			for ( var i =3D 0, l =3D checkSet.length, elem; i < l; i++ ) {=0A=
				if ( (elem =3D checkSet[i]) ) {=0A=
					while ( (elem =3D elem.previousSibling) && elem.nodeType !=3D=3D 1 =
) {}=0A=
=0A=
					checkSet[i] =3D isPartStrNotTag || elem && elem.nodeName =3D=3D=3D =
part ?=0A=
						elem || false :=0A=
						elem =3D=3D=3D part;=0A=
				}=0A=
			}=0A=
=0A=
			if ( isPartStrNotTag ) {=0A=
				Sizzle.filter( part, checkSet, true );=0A=
			}=0A=
		},=0A=
		">": function(checkSet, part, isXML){=0A=
			var isPartStr =3D typeof part =3D=3D=3D "string";=0A=
=0A=
			if ( isPartStr && !/\W/.test(part) ) {=0A=
				part =3D isXML ? part : part.toUpperCase();=0A=
=0A=
				for ( var i =3D 0, l =3D checkSet.length; i < l; i++ ) {=0A=
					var elem =3D checkSet[i];=0A=
					if ( elem ) {=0A=
						var parent =3D elem.parentNode;=0A=
						checkSet[i] =3D parent.nodeName =3D=3D=3D part ? parent : false;=0A=
					}=0A=
				}=0A=
			} else {=0A=
				for ( var i =3D 0, l =3D checkSet.length; i < l; i++ ) {=0A=
					var elem =3D checkSet[i];=0A=
					if ( elem ) {=0A=
						checkSet[i] =3D isPartStr ?=0A=
							elem.parentNode :=0A=
							elem.parentNode =3D=3D=3D part;=0A=
					}=0A=
				}=0A=
=0A=
				if ( isPartStr ) {=0A=
					Sizzle.filter( part, checkSet, true );=0A=
				}=0A=
			}=0A=
		},=0A=
		"": function(checkSet, part, isXML){=0A=
			var doneName =3D done++, checkFn =3D dirCheck;=0A=
=0A=
			if ( !/\W/.test(part) ) {=0A=
				var nodeCheck =3D part =3D isXML ? part : part.toUpperCase();=0A=
				checkFn =3D dirNodeCheck;=0A=
			}=0A=
=0A=
			checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);=0A=
		},=0A=
		"~": function(checkSet, part, isXML){=0A=
			var doneName =3D done++, checkFn =3D dirCheck;=0A=
=0A=
			if ( typeof part =3D=3D=3D "string" && !/\W/.test(part) ) {=0A=
				var nodeCheck =3D part =3D isXML ? part : part.toUpperCase();=0A=
				checkFn =3D dirNodeCheck;=0A=
			}=0A=
=0A=
			checkFn("previousSibling", part, doneName, checkSet, nodeCheck, =
isXML);=0A=
		}=0A=
	},=0A=
	find: {=0A=
		ID: function(match, context, isXML){=0A=
			if ( typeof context.getElementById !=3D=3D "undefined" && !isXML ) {=0A=
				var m =3D context.getElementById(match[1]);=0A=
				return m ? [m] : [];=0A=
			}=0A=
		},=0A=
		NAME: function(match, context, isXML){=0A=
			if ( typeof context.getElementsByName !=3D=3D "undefined" ) {=0A=
				var ret =3D [], results =3D context.getElementsByName(match[1]);=0A=
=0A=
				for ( var i =3D 0, l =3D results.length; i < l; i++ ) {=0A=
					if ( results[i].getAttribute("name") =3D=3D=3D match[1] ) {=0A=
						ret.push( results[i] );=0A=
					}=0A=
				}=0A=
=0A=
				return ret.length =3D=3D=3D 0 ? null : ret;=0A=
			}=0A=
		},=0A=
		TAG: function(match, context){=0A=
			return context.getElementsByTagName(match[1]);=0A=
		}=0A=
	},=0A=
	preFilter: {=0A=
		CLASS: function(match, curLoop, inplace, result, not, isXML){=0A=
			match =3D " " + match[1].replace(/\\/g, "") + " ";=0A=
=0A=
			if ( isXML ) {=0A=
				return match;=0A=
			}=0A=
=0A=
			for ( var i =3D 0, elem; (elem =3D curLoop[i]) !=3D null; i++ ) {=0A=
				if ( elem ) {=0A=
					if ( not ^ (elem.className && (" " + elem.className + " =
").indexOf(match) >=3D 0) ) {=0A=
						if ( !inplace )=0A=
							result.push( elem );=0A=
					} else if ( inplace ) {=0A=
						curLoop[i] =3D false;=0A=
					}=0A=
				}=0A=
			}=0A=
=0A=
			return false;=0A=
		},=0A=
		ID: function(match){=0A=
			return match[1].replace(/\\/g, "");=0A=
		},=0A=
		TAG: function(match, curLoop){=0A=
			for ( var i =3D 0; curLoop[i] =3D=3D=3D false; i++ ){}=0A=
			return curLoop[i] && isXML(curLoop[i]) ? match[1] : =
match[1].toUpperCase();=0A=
		},=0A=
		CHILD: function(match){=0A=
			if ( match[1] =3D=3D "nth" ) {=0A=
				var test =3D /(-?)(\d*)n((?:\+|-)?\d*)/.exec(=0A=
					match[2] =3D=3D "even" && "2n" || match[2] =3D=3D "odd" && "2n+1" ||=0A=
					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);=0A=
=0A=
				match[2] =3D (test[1] + (test[2] || 1)) - 0;=0A=
				match[3] =3D test[3] - 0;=0A=
			}=0A=
=0A=
			match[0] =3D done++;=0A=
=0A=
			return match;=0A=
		},=0A=
		ATTR: function(match, curLoop, inplace, result, not, isXML){=0A=
			var name =3D match[1].replace(/\\/g, "");=0A=
=0A=
			if ( !isXML && Expr.attrMap[name] ) {=0A=
				match[1] =3D Expr.attrMap[name];=0A=
			}=0A=
=0A=
			if ( match[2] =3D=3D=3D "~=3D" ) {=0A=
				match[4] =3D " " + match[4] + " ";=0A=
			}=0A=
=0A=
			return match;=0A=
		},=0A=
		PSEUDO: function(match, curLoop, inplace, result, not){=0A=
			if ( match[1] =3D=3D=3D "not" ) {=0A=
				if ( ( chunker.exec(match[3]) || "" ).length > 1 || =
/^\w/.test(match[3]) ) {=0A=
					match[3] =3D Sizzle(match[3], null, null, curLoop);=0A=
				} else {=0A=
					var ret =3D Sizzle.filter(match[3], curLoop, inplace, true ^ not);=0A=
					if ( !inplace ) {=0A=
						result.push.apply( result, ret );=0A=
					}=0A=
					return false;=0A=
				}=0A=
			} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( =
match[0] ) ) {=0A=
				return true;=0A=
			}=0A=
=0A=
			return match;=0A=
		},=0A=
		POS: function(match){=0A=
			match.unshift( true );=0A=
			return match;=0A=
		}=0A=
	},=0A=
	filters: {=0A=
		enabled: function(elem){=0A=
			return elem.disabled =3D=3D=3D false && elem.type !=3D=3D "hidden";=0A=
		},=0A=
		disabled: function(elem){=0A=
			return elem.disabled =3D=3D=3D true;=0A=
		},=0A=
		checked: function(elem){=0A=
			return elem.checked =3D=3D=3D true;=0A=
		},=0A=
		selected: function(elem){=0A=
			elem.parentNode.selectedIndex;=0A=
			return elem.selected =3D=3D=3D true;=0A=
		},=0A=
		parent: function(elem){=0A=
			return !!elem.firstChild;=0A=
		},=0A=
		empty: function(elem){=0A=
			return !elem.firstChild;=0A=
		},=0A=
		has: function(elem, i, match){=0A=
			return !!Sizzle( match[3], elem ).length;=0A=
		},=0A=
		header: function(elem){=0A=
			return /h\d/i.test( elem.nodeName );=0A=
		},=0A=
		text: function(elem){=0A=
			return "text" =3D=3D=3D elem.type;=0A=
		},=0A=
		radio: function(elem){=0A=
			return "radio" =3D=3D=3D elem.type;=0A=
		},=0A=
		checkbox: function(elem){=0A=
			return "checkbox" =3D=3D=3D elem.type;=0A=
		},=0A=
		file: function(elem){=0A=
			return "file" =3D=3D=3D elem.type;=0A=
		},=0A=
		password: function(elem){=0A=
			return "password" =3D=3D=3D elem.type;=0A=
		},=0A=
		submit: function(elem){=0A=
			return "submit" =3D=3D=3D elem.type;=0A=
		},=0A=
		image: function(elem){=0A=
			return "image" =3D=3D=3D elem.type;=0A=
		},=0A=
		reset: function(elem){=0A=
			return "reset" =3D=3D=3D elem.type;=0A=
		},=0A=
		button: function(elem){=0A=
			return "button" =3D=3D=3D elem.type || elem.nodeName.toUpperCase() =
=3D=3D=3D "BUTTON";=0A=
		},=0A=
		input: function(elem){=0A=
			return /input|select|textarea|button/i.test(elem.nodeName);=0A=
		}=0A=
	},=0A=
	setFilters: {=0A=
		first: function(elem, i){=0A=
			return i =3D=3D=3D 0;=0A=
		},=0A=
		last: function(elem, i, match, array){=0A=
			return i =3D=3D=3D array.length - 1;=0A=
		},=0A=
		even: function(elem, i){=0A=
			return i % 2 =3D=3D=3D 0;=0A=
		},=0A=
		odd: function(elem, i){=0A=
			return i % 2 =3D=3D=3D 1;=0A=
		},=0A=
		lt: function(elem, i, match){=0A=
			return i < match[3] - 0;=0A=
		},=0A=
		gt: function(elem, i, match){=0A=
			return i > match[3] - 0;=0A=
		},=0A=
		nth: function(elem, i, match){=0A=
			return match[3] - 0 =3D=3D i;=0A=
		},=0A=
		eq: function(elem, i, match){=0A=
			return match[3] - 0 =3D=3D i;=0A=
		}=0A=
	},=0A=
	filter: {=0A=
		PSEUDO: function(elem, match, i, array){=0A=
			var name =3D match[1], filter =3D Expr.filters[ name ];=0A=
=0A=
			if ( filter ) {=0A=
				return filter( elem, i, match, array );=0A=
			} else if ( name =3D=3D=3D "contains" ) {=0A=
				return (elem.textContent || elem.innerText || "").indexOf(match[3]) =
>=3D 0;=0A=
			} else if ( name =3D=3D=3D "not" ) {=0A=
				var not =3D match[3];=0A=
=0A=
				for ( var i =3D 0, l =3D not.length; i < l; i++ ) {=0A=
					if ( not[i] =3D=3D=3D elem ) {=0A=
						return false;=0A=
					}=0A=
				}=0A=
=0A=
				return true;=0A=
			}=0A=
		},=0A=
		CHILD: function(elem, match){=0A=
			var type =3D match[1], node =3D elem;=0A=
			switch (type) {=0A=
				case 'only':=0A=
				case 'first':=0A=
					while ( (node =3D node.previousSibling) )  {=0A=
						if ( node.nodeType =3D=3D=3D 1 ) return false;=0A=
					}=0A=
					if ( type =3D=3D 'first') return true;=0A=
					node =3D elem;=0A=
				case 'last':=0A=
					while ( (node =3D node.nextSibling) )  {=0A=
						if ( node.nodeType =3D=3D=3D 1 ) return false;=0A=
					}=0A=
					return true;=0A=
				case 'nth':=0A=
					var first =3D match[2], last =3D match[3];=0A=
=0A=
					if ( first =3D=3D 1 && last =3D=3D 0 ) {=0A=
						return true;=0A=
					}=0A=
=0A=
					var doneName =3D match[0],=0A=
						parent =3D elem.parentNode;=0A=
=0A=
					if ( parent && (parent.sizcache !=3D=3D doneName || =
!elem.nodeIndex) ) {=0A=
						var count =3D 0;=0A=
						for ( node =3D parent.firstChild; node; node =3D node.nextSibling =
) {=0A=
							if ( node.nodeType =3D=3D=3D 1 ) {=0A=
								node.nodeIndex =3D ++count;=0A=
							}=0A=
						}=0A=
						parent.sizcache =3D doneName;=0A=
					}=0A=
=0A=
					var diff =3D elem.nodeIndex - last;=0A=
					if ( first =3D=3D 0 ) {=0A=
						return diff =3D=3D 0;=0A=
					} else {=0A=
						return ( diff % first =3D=3D 0 && diff / first >=3D 0 );=0A=
					}=0A=
			}=0A=
		},=0A=
		ID: function(elem, match){=0A=
			return elem.nodeType =3D=3D=3D 1 && elem.getAttribute("id") =3D=3D=3D =
match;=0A=
		},=0A=
		TAG: function(elem, match){=0A=
			return (match =3D=3D=3D "*" && elem.nodeType =3D=3D=3D 1) || =
elem.nodeName =3D=3D=3D match;=0A=
		},=0A=
		CLASS: function(elem, match){=0A=
			return (" " + (elem.className || elem.getAttribute("class")) + " ")=0A=
				.indexOf( match ) > -1;=0A=
		},=0A=
		ATTR: function(elem, match){=0A=
			var name =3D match[1],=0A=
				result =3D Expr.attrHandle[ name ] ?=0A=
					Expr.attrHandle[ name ]( elem ) :=0A=
					elem[ name ] !=3D null ?=0A=
						elem[ name ] :=0A=
						elem.getAttribute( name ),=0A=
				value =3D result + "",=0A=
				type =3D match[2],=0A=
				check =3D match[4];=0A=
=0A=
			return result =3D=3D null ?=0A=
				type =3D=3D=3D "!=3D" :=0A=
				type =3D=3D=3D "=3D" ?=0A=
				value =3D=3D=3D check :=0A=
				type =3D=3D=3D "*=3D" ?=0A=
				value.indexOf(check) >=3D 0 :=0A=
				type =3D=3D=3D "~=3D" ?=0A=
				(" " + value + " ").indexOf(check) >=3D 0 :=0A=
				!check ?=0A=
				value && result !=3D=3D false :=0A=
				type =3D=3D=3D "!=3D" ?=0A=
				value !=3D check :=0A=
				type =3D=3D=3D "^=3D" ?=0A=
				value.indexOf(check) =3D=3D=3D 0 :=0A=
				type =3D=3D=3D "$=3D" ?=0A=
				value.substr(value.length - check.length) =3D=3D=3D check :=0A=
				type =3D=3D=3D "|=3D" ?=0A=
				value =3D=3D=3D check || value.substr(0, check.length + 1) =3D=3D=3D =
check + "-" :=0A=
				false;=0A=
		},=0A=
		POS: function(elem, match, i, array){=0A=
			var name =3D match[2], filter =3D Expr.setFilters[ name ];=0A=
=0A=
			if ( filter ) {=0A=
				return filter( elem, i, match, array );=0A=
			}=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
var origPOS =3D Expr.match.POS;=0A=
=0A=
for ( var type in Expr.match ) {=0A=
	Expr.match[ type ] =3D new RegExp( Expr.match[ type ].source + =
/(?![^\[]*\])(?![^\(]*\))/.source );=0A=
	Expr.leftMatch[ type ] =3D new RegExp( /(^(?:.|\r|\n)*?)/.source + =
Expr.match[ type ].source );=0A=
}=0A=
=0A=
var makeArray =3D function(array, results) {=0A=
	array =3D Array.prototype.slice.call( array, 0 );=0A=
=0A=
	if ( results ) {=0A=
		results.push.apply( results, array );=0A=
		return results;=0A=
	}=0A=
=0A=
	return array;=0A=
};=0A=
=0A=
try {=0A=
	Array.prototype.slice.call( document.documentElement.childNodes, 0 );=0A=
=0A=
} catch(e){=0A=
	makeArray =3D function(array, results) {=0A=
		var ret =3D results || [];=0A=
=0A=
		if ( toString.call(array) =3D=3D=3D "[object Array]" ) {=0A=
			Array.prototype.push.apply( ret, array );=0A=
		} else {=0A=
			if ( typeof array.length =3D=3D=3D "number" ) {=0A=
				for ( var i =3D 0, l =3D array.length; i < l; i++ ) {=0A=
					ret.push( array[i] );=0A=
				}=0A=
			} else {=0A=
				for ( var i =3D 0; array[i]; i++ ) {=0A=
					ret.push( array[i] );=0A=
				}=0A=
			}=0A=
		}=0A=
=0A=
		return ret;=0A=
	};=0A=
}=0A=
=0A=
var sortOrder;=0A=
=0A=
if ( document.documentElement.compareDocumentPosition ) {=0A=
	sortOrder =3D function( a, b ) {=0A=
		if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {=0A=
			if ( a =3D=3D b ) {=0A=
				hasDuplicate =3D true;=0A=
			}=0A=
			return 0;=0A=
		}=0A=
=0A=
		var ret =3D a.compareDocumentPosition(b) & 4 ? -1 : a =3D=3D=3D b ? 0 =
: 1;=0A=
		if ( ret =3D=3D=3D 0 ) {=0A=
			hasDuplicate =3D true;=0A=
		}=0A=
		return ret;=0A=
	};=0A=
} else if ( "sourceIndex" in document.documentElement ) {=0A=
	sortOrder =3D function( a, b ) {=0A=
		if ( !a.sourceIndex || !b.sourceIndex ) {=0A=
			if ( a =3D=3D b ) {=0A=
				hasDuplicate =3D true;=0A=
			}=0A=
			return 0;=0A=
		}=0A=
=0A=
		var ret =3D a.sourceIndex - b.sourceIndex;=0A=
		if ( ret =3D=3D=3D 0 ) {=0A=
			hasDuplicate =3D true;=0A=
		}=0A=
		return ret;=0A=
	};=0A=
} else if ( document.createRange ) {=0A=
	sortOrder =3D function( a, b ) {=0A=
		if ( !a.ownerDocument || !b.ownerDocument ) {=0A=
			if ( a =3D=3D b ) {=0A=
				hasDuplicate =3D true;=0A=
			}=0A=
			return 0;=0A=
		}=0A=
=0A=
		var aRange =3D a.ownerDocument.createRange(), bRange =3D =
b.ownerDocument.createRange();=0A=
		aRange.setStart(a, 0);=0A=
		aRange.setEnd(a, 0);=0A=
		bRange.setStart(b, 0);=0A=
		bRange.setEnd(b, 0);=0A=
		var ret =3D aRange.compareBoundaryPoints(Range.START_TO_END, bRange);=0A=
		if ( ret =3D=3D=3D 0 ) {=0A=
			hasDuplicate =3D true;=0A=
		}=0A=
		return ret;=0A=
	};=0A=
}=0A=
=0A=
(function(){=0A=
	var form =3D document.createElement("div"),=0A=
		id =3D "script" + (new Date).getTime();=0A=
	form.innerHTML =3D "<a name=3D'" + id + "'/>";=0A=
=0A=
	var root =3D document.documentElement;=0A=
	root.insertBefore( form, root.firstChild );=0A=
=0A=
	if ( !!document.getElementById( id ) ) {=0A=
		Expr.find.ID =3D function(match, context, isXML){=0A=
			if ( typeof context.getElementById !=3D=3D "undefined" && !isXML ) {=0A=
				var m =3D context.getElementById(match[1]);=0A=
				return m ? m.id =3D=3D=3D match[1] || typeof m.getAttributeNode =
!=3D=3D "undefined" && m.getAttributeNode("id").nodeValue =3D=3D=3D =
match[1] ? [m] : undefined : [];=0A=
			}=0A=
		};=0A=
=0A=
		Expr.filter.ID =3D function(elem, match){=0A=
			var node =3D typeof elem.getAttributeNode !=3D=3D "undefined" && =
elem.getAttributeNode("id");=0A=
			return elem.nodeType =3D=3D=3D 1 && node && node.nodeValue =3D=3D=3D =
match;=0A=
		};=0A=
	}=0A=
=0A=
	root.removeChild( form );=0A=
	root =3D form =3D null; // release memory in IE=0A=
})();=0A=
=0A=
(function(){=0A=
=0A=
	var div =3D document.createElement("div");=0A=
	div.appendChild( document.createComment("") );=0A=
=0A=
	if ( div.getElementsByTagName("*").length > 0 ) {=0A=
		Expr.find.TAG =3D function(match, context){=0A=
			var results =3D context.getElementsByTagName(match[1]);=0A=
=0A=
			if ( match[1] =3D=3D=3D "*" ) {=0A=
				var tmp =3D [];=0A=
=0A=
				for ( var i =3D 0; results[i]; i++ ) {=0A=
					if ( results[i].nodeType =3D=3D=3D 1 ) {=0A=
						tmp.push( results[i] );=0A=
					}=0A=
				}=0A=
=0A=
				results =3D tmp;=0A=
			}=0A=
=0A=
			return results;=0A=
		};=0A=
	}=0A=
=0A=
	div.innerHTML =3D "<a href=3D'#'></a>";=0A=
	if ( div.firstChild && typeof div.firstChild.getAttribute !=3D=3D =
"undefined" &&=0A=
			div.firstChild.getAttribute("href") !=3D=3D "#" ) {=0A=
		Expr.attrHandle.href =3D function(elem){=0A=
			return elem.getAttribute("href", 2);=0A=
		};=0A=
	}=0A=
=0A=
	div =3D null; // release memory in IE=0A=
})();=0A=
=0A=
if ( document.querySelectorAll ) (function(){=0A=
	var oldSizzle =3D Sizzle, div =3D document.createElement("div");=0A=
	div.innerHTML =3D "<p class=3D'TEST'></p>";=0A=
=0A=
	if ( div.querySelectorAll && div.querySelectorAll(".TEST").length =
=3D=3D=3D 0 ) {=0A=
		return;=0A=
	}=0A=
=0A=
	Sizzle =3D function(query, context, extra, seed){=0A=
		context =3D context || document;=0A=
=0A=
		if ( !seed && context.nodeType =3D=3D=3D 9 && !isXML(context) ) {=0A=
			try {=0A=
				return makeArray( context.querySelectorAll(query), extra );=0A=
			} catch(e){}=0A=
		}=0A=
=0A=
		return oldSizzle(query, context, extra, seed);=0A=
	};=0A=
=0A=
	for ( var prop in oldSizzle ) {=0A=
		Sizzle[ prop ] =3D oldSizzle[ prop ];=0A=
	}=0A=
=0A=
	div =3D null; // release memory in IE=0A=
})();=0A=
=0A=
if ( document.getElementsByClassName && =
document.documentElement.getElementsByClassName ) (function(){=0A=
	var div =3D document.createElement("div");=0A=
	div.innerHTML =3D "<div class=3D'test e'></div><div =
class=3D'test'></div>";=0A=
=0A=
	if ( div.getElementsByClassName("e").length =3D=3D=3D 0 )=0A=
		return;=0A=
=0A=
	div.lastChild.className =3D "e";=0A=
=0A=
	if ( div.getElementsByClassName("e").length =3D=3D=3D 1 )=0A=
		return;=0A=
=0A=
	Expr.order.splice(1, 0, "CLASS");=0A=
	Expr.find.CLASS =3D function(match, context, isXML) {=0A=
		if ( typeof context.getElementsByClassName !=3D=3D "undefined" && =
!isXML ) {=0A=
			return context.getElementsByClassName(match[1]);=0A=
		}=0A=
	};=0A=
=0A=
	div =3D null; // release memory in IE=0A=
})();=0A=
=0A=
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {=0A=
	var sibDir =3D dir =3D=3D "previousSibling" && !isXML;=0A=
	for ( var i =3D 0, l =3D checkSet.length; i < l; i++ ) {=0A=
		var elem =3D checkSet[i];=0A=
		if ( elem ) {=0A=
			if ( sibDir && elem.nodeType =3D=3D=3D 1 ){=0A=
				elem.sizcache =3D doneName;=0A=
				elem.sizset =3D i;=0A=
			}=0A=
			elem =3D elem[dir];=0A=
			var match =3D false;=0A=
=0A=
			while ( elem ) {=0A=
				if ( elem.sizcache =3D=3D=3D doneName ) {=0A=
					match =3D checkSet[elem.sizset];=0A=
					break;=0A=
				}=0A=
=0A=
				if ( elem.nodeType =3D=3D=3D 1 && !isXML ){=0A=
					elem.sizcache =3D doneName;=0A=
					elem.sizset =3D i;=0A=
				}=0A=
=0A=
				if ( elem.nodeName =3D=3D=3D cur ) {=0A=
					match =3D elem;=0A=
					break;=0A=
				}=0A=
=0A=
				elem =3D elem[dir];=0A=
			}=0A=
=0A=
			checkSet[i] =3D match;=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {=0A=
	var sibDir =3D dir =3D=3D "previousSibling" && !isXML;=0A=
	for ( var i =3D 0, l =3D checkSet.length; i < l; i++ ) {=0A=
		var elem =3D checkSet[i];=0A=
		if ( elem ) {=0A=
			if ( sibDir && elem.nodeType =3D=3D=3D 1 ) {=0A=
				elem.sizcache =3D doneName;=0A=
				elem.sizset =3D i;=0A=
			}=0A=
			elem =3D elem[dir];=0A=
			var match =3D false;=0A=
=0A=
			while ( elem ) {=0A=
				if ( elem.sizcache =3D=3D=3D doneName ) {=0A=
					match =3D checkSet[elem.sizset];=0A=
					break;=0A=
				}=0A=
=0A=
				if ( elem.nodeType =3D=3D=3D 1 ) {=0A=
					if ( !isXML ) {=0A=
						elem.sizcache =3D doneName;=0A=
						elem.sizset =3D i;=0A=
					}=0A=
					if ( typeof cur !=3D=3D "string" ) {=0A=
						if ( elem =3D=3D=3D cur ) {=0A=
							match =3D true;=0A=
							break;=0A=
						}=0A=
=0A=
					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {=0A=
						match =3D elem;=0A=
						break;=0A=
					}=0A=
				}=0A=
=0A=
				elem =3D elem[dir];=0A=
			}=0A=
=0A=
			checkSet[i] =3D match;=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
var contains =3D document.compareDocumentPosition ?  function(a, b){=0A=
	return a.compareDocumentPosition(b) & 16;=0A=
} : function(a, b){=0A=
	return a !=3D=3D b && (a.contains ? a.contains(b) : true);=0A=
};=0A=
=0A=
var isXML =3D function(elem){=0A=
	return elem.nodeType =3D=3D=3D 9 && elem.documentElement.nodeName =
!=3D=3D "HTML" ||=0A=
		!!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName =
!=3D=3D "HTML";=0A=
};=0A=
=0A=
var posProcess =3D function(selector, context){=0A=
	var tmpSet =3D [], later =3D "", match,=0A=
		root =3D context.nodeType ? [context] : context;=0A=
=0A=
	while ( (match =3D Expr.match.PSEUDO.exec( selector )) ) {=0A=
		later +=3D match[0];=0A=
		selector =3D selector.replace( Expr.match.PSEUDO, "" );=0A=
	}=0A=
=0A=
	selector =3D Expr.relative[selector] ? selector + "*" : selector;=0A=
=0A=
	for ( var i =3D 0, l =3D root.length; i < l; i++ ) {=0A=
		Sizzle( selector, root[i], tmpSet );=0A=
	}=0A=
=0A=
	return Sizzle.filter( later, tmpSet );=0A=
};=0A=
=0A=
=0A=
window.Sizzle =3D Sizzle;=0A=
=0A=
})();=0A=
=0A=
;(function(engine) {=0A=
  var extendElements =3D Prototype.Selector.extendElements;=0A=
=0A=
  function select(selector, scope) {=0A=
    return extendElements(engine(selector, scope || document));=0A=
  }=0A=
=0A=
  function match(element, selector) {=0A=
    return engine.matches(selector, [element]).length =3D=3D 1;=0A=
  }=0A=
=0A=
  Prototype.Selector.engine =3D engine;=0A=
  Prototype.Selector.select =3D select;=0A=
  Prototype.Selector.match =3D match;=0A=
})(Sizzle);=0A=
=0A=
window.Sizzle =3D Prototype._original_property;=0A=
delete Prototype._original_property;=0A=
=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    form =3D $(form);=0A=
    form.reset();=0A=
    return form;=0A=
  },=0A=
=0A=
  serializeElements: function(elements, options) {=0A=
    if (typeof options !=3D 'object') options =3D { hash: !!options };=0A=
    else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A=
    var key, value, submitted =3D false, submit =3D options.submit, =
accumulator, initial;=0A=
=0A=
    if (options.hash) {=0A=
      initial =3D {};=0A=
      accumulator =3D function(result, key, value) {=0A=
        if (key in result) {=0A=
          if (!Object.isArray(result[key])) result[key] =3D =
[result[key]];=0A=
          result[key].push(value);=0A=
        } else result[key] =3D value;=0A=
        return result;=0A=
      };=0A=
    } else {=0A=
      initial =3D '';=0A=
      accumulator =3D function(result, key, value) {=0A=
        return result + (result ? '&' : '') + encodeURIComponent(key) + =
'=3D' + encodeURIComponent(value);=0A=
      }=0A=
    }=0A=
=0A=
    return elements.inject(initial, function(result, element) {=0A=
      if (!element.disabled && element.name) {=0A=
        key =3D element.name; value =3D $(element).getValue();=0A=
        if (value !=3D null && element.type !=3D 'file' && (element.type =
!=3D 'submit' || (!submitted &&=0A=
            submit !=3D=3D false && (!submit || key =3D=3D submit) && =
(submitted =3D true)))) {=0A=
          result =3D accumulator(result, key, value);=0A=
        }=0A=
      }=0A=
      return result;=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form, options) {=0A=
    return Form.serializeElements(Form.getElements(form), options);=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    var elements =3D $(form).getElementsByTagName('*'),=0A=
        element,=0A=
        arr =3D [ ],=0A=
        serializers =3D Form.Element.Serializers;=0A=
    for (var i =3D 0; element =3D elements[i]; i++) {=0A=
      arr.push(element);=0A=
    }=0A=
    return arr.inject([], function(elements, child) {=0A=
      if (serializers[child.tagName.toLowerCase()])=0A=
        elements.push(Element.extend(child));=0A=
      return elements;=0A=
    })=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name) return $A(inputs).map(Element.extend);=0A=
=0A=
    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))=0A=
        continue;=0A=
      matchingInputs.push(Element.extend(input));=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('disable');=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('enable');=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    var elements =3D $(form).getElements().findAll(function(element) {=0A=
      return 'hidden' !=3D element.type && !element.disabled;=0A=
    });=0A=
    var firstByIndex =3D elements.findAll(function(element) {=0A=
      return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A=
    }).sortBy(function(element) { return element.tabIndex }).first();=0A=
=0A=
    return firstByIndex ? firstByIndex : elements.find(function(element) =
{=0A=
      return /^(?:input|select|textarea)$/i.test(element.tagName);=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    form =3D $(form);=0A=
    var element =3D form.findFirstElement();=0A=
    if (element) element.activate();=0A=
    return form;=0A=
  },=0A=
=0A=
  request: function(form, options) {=0A=
    form =3D $(form), options =3D Object.clone(options || { });=0A=
=0A=
    var params =3D options.parameters, action =3D =
form.readAttribute('action') || '';=0A=
    if (action.blank()) action =3D window.location.href;=0A=
    options.parameters =3D form.serialize(true);=0A=
=0A=
    if (params) {=0A=
      if (Object.isString(params)) params =3D params.toQueryParams();=0A=
      Object.extend(options.parameters, params);=0A=
    }=0A=
=0A=
    if (form.hasAttribute('method') && !options.method)=0A=
      options.method =3D form.method;=0A=
=0A=
    return new Ajax.Request(action, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
=0A=
Form.Element =3D {=0A=
  focus: function(element) {=0A=
    $(element).focus();=0A=
    return element;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    $(element).select();=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Form.Element.Methods =3D {=0A=
=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element.disabled && element.name) {=0A=
      var value =3D element.getValue();=0A=
      if (value !=3D undefined) {=0A=
        var pair =3D { };=0A=
        pair[element.name] =3D value;=0A=
        return Object.toQueryString(pair);=0A=
      }=0A=
    }=0A=
    return '';=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    return Form.Element.Serializers[method](element);=0A=
  },=0A=
=0A=
  setValue: function(element, value) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    Form.Element.Serializers[method](element, value);=0A=
    return element;=0A=
  },=0A=
=0A=
  clear: function(element) {=0A=
    $(element).value =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  present: function(element) {=0A=
    return $(element).value !=3D '';=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    try {=0A=
      element.focus();=0A=
      if (element.select && (element.tagName.toLowerCase() !=3D 'input' =
||=0A=
          !(/^(?:button|reset|submit)$/i.test(element.type))))=0A=
        element.select();=0A=
    } catch (e) { }=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D true;=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D false;=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Field =3D Form.Element;=0A=
=0A=
var $F =3D Form.Element.Methods.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element.Serializers =3D (function() {=0A=
  function input(element, value) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return inputSelector(element, value);=0A=
      default:=0A=
        return valueSelector(element, value);=0A=
    }=0A=
  }=0A=
=0A=
  function inputSelector(element, value) {=0A=
    if (Object.isUndefined(value))=0A=
      return element.checked ? element.value : null;=0A=
    else element.checked =3D !!value;=0A=
  }=0A=
=0A=
  function valueSelector(element, value) {=0A=
    if (Object.isUndefined(value)) return element.value;=0A=
    else element.value =3D value;=0A=
  }=0A=
=0A=
  function select(element, value) {=0A=
    if (Object.isUndefined(value))=0A=
      return (element.type =3D=3D=3D 'select-one' ? selectOne : =
selectMany)(element);=0A=
=0A=
    var opt, currentValue, single =3D !Object.isArray(value);=0A=
    for (var i =3D 0, length =3D element.length; i < length; i++) {=0A=
      opt =3D element.options[i];=0A=
      currentValue =3D this.optionValue(opt);=0A=
      if (single) {=0A=
        if (currentValue =3D=3D value) {=0A=
          opt.selected =3D true;=0A=
          return;=0A=
        }=0A=
      }=0A=
      else opt.selected =3D value.include(currentValue);=0A=
    }=0A=
  }=0A=
=0A=
  function selectOne(element) {=0A=
    var index =3D element.selectedIndex;=0A=
    return index >=3D 0 ? optionValue(element.options[index]) : null;=0A=
  }=0A=
=0A=
  function selectMany(element) {=0A=
    var values, length =3D element.length;=0A=
    if (!length) return null;=0A=
=0A=
    for (var i =3D 0, values =3D []; i < length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected) values.push(optionValue(opt));=0A=
    }=0A=
    return values;=0A=
  }=0A=
=0A=
  function optionValue(opt) {=0A=
    return Element.hasAttribute(opt, 'value') ? opt.value : opt.text;=0A=
  }=0A=
=0A=
  return {=0A=
    input:         input,=0A=
    inputSelector: inputSelector,=0A=
    textarea:      valueSelector,=0A=
    select:        select,=0A=
    selectOne:     selectOne,=0A=
    selectMany:    selectMany,=0A=
    optionValue:   optionValue,=0A=
    button:        valueSelector=0A=
  };=0A=
})();=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
=0A=
Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A=
  initialize: function($super, element, frequency, callback) {=0A=
    $super(callback, frequency);=0A=
    this.element   =3D $(element);=0A=
    this.lastValue =3D this.getValue();=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    var value =3D this.getValue();=0A=
    if (Object.isString(this.lastValue) && Object.isString(value) ?=0A=
        this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value)) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D Class.create({=0A=
  initialize: function(element, callback) {=0A=
    this.element  =3D $(element);=0A=
    this.callback =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A=
      this.registerFormCallbacks();=0A=
    else=0A=
      this.registerCallback(this.element);=0A=
  },=0A=
=0A=
  onElementEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  },=0A=
=0A=
  registerFormCallbacks: function() {=0A=
    Form.getElements(this.element).each(this.registerCallback, this);=0A=
  },=0A=
=0A=
  registerCallback: function(element) {=0A=
    if (element.type) {=0A=
      switch (element.type.toLowerCase()) {=0A=
        case 'checkbox':=0A=
        case 'radio':=0A=
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
        default:=0A=
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
(function() {=0A=
=0A=
  var Event =3D {=0A=
    KEY_BACKSPACE: 8,=0A=
    KEY_TAB:       9,=0A=
    KEY_RETURN:   13,=0A=
    KEY_ESC:      27,=0A=
    KEY_LEFT:     37,=0A=
    KEY_UP:       38,=0A=
    KEY_RIGHT:    39,=0A=
    KEY_DOWN:     40,=0A=
    KEY_DELETE:   46,=0A=
    KEY_HOME:     36,=0A=
    KEY_END:      35,=0A=
    KEY_PAGEUP:   33,=0A=
    KEY_PAGEDOWN: 34,=0A=
    KEY_INSERT:   45,=0A=
=0A=
    cache: {}=0A=
  };=0A=
=0A=
  var docEl =3D document.documentElement;=0A=
  var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED =3D 'onmouseenter' in docEl=0A=
    && 'onmouseleave' in docEl;=0A=
=0A=
=0A=
=0A=
  var isIELegacyEvent =3D function(event) { return false; };=0A=
=0A=
  if (window.attachEvent) {=0A=
    if (window.addEventListener) {=0A=
      isIELegacyEvent =3D function(event) {=0A=
        return !(event instanceof window.Event);=0A=
      };=0A=
    } else {=0A=
      isIELegacyEvent =3D function(event) { return true; };=0A=
    }=0A=
  }=0A=
=0A=
  var _isButton;=0A=
=0A=
  function _isButtonForDOMEvents(event, code) {=0A=
    return event.which ? (event.which =3D=3D=3D code + 1) : =
(event.button =3D=3D=3D code);=0A=
  }=0A=
=0A=
  var legacyButtonMap =3D { 0: 1, 1: 4, 2: 2 };=0A=
  function _isButtonForLegacyEvents(event, code) {=0A=
    return event.button =3D=3D=3D legacyButtonMap[code];=0A=
  }=0A=
=0A=
  function _isButtonForWebKit(event, code) {=0A=
    switch (code) {=0A=
      case 0: return event.which =3D=3D 1 && !event.metaKey;=0A=
      case 1: return event.which =3D=3D 2 || (event.which =3D=3D 1 && =
event.metaKey);=0A=
      case 2: return event.which =3D=3D 3;=0A=
      default: return false;=0A=
    }=0A=
  }=0A=
=0A=
  if (window.attachEvent) {=0A=
    if (!window.addEventListener) {=0A=
      _isButton =3D _isButtonForLegacyEvents;=0A=
    } else {=0A=
      _isButton =3D function(event, code) {=0A=
        return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, =
code) :=0A=
         _isButtonForDOMEvents(event, code);=0A=
      }=0A=
    }=0A=
  } else if (Prototype.Browser.WebKit) {=0A=
    _isButton =3D _isButtonForWebKit;=0A=
  } else {=0A=
    _isButton =3D _isButtonForDOMEvents;=0A=
  }=0A=
=0A=
  function isLeftClick(event)   { return _isButton(event, 0) }=0A=
=0A=
  function isMiddleClick(event) { return _isButton(event, 1) }=0A=
=0A=
  function isRightClick(event)  { return _isButton(event, 2) }=0A=
=0A=
  function element(event) {=0A=
    event =3D Event.extend(event);=0A=
=0A=
    var node =3D event.target, type =3D event.type,=0A=
     currentTarget =3D event.currentTarget;=0A=
=0A=
    if (currentTarget && currentTarget.tagName) {=0A=
      if (type =3D=3D=3D 'load' || type =3D=3D=3D 'error' ||=0A=
        (type =3D=3D=3D 'click' && currentTarget.tagName.toLowerCase() =
=3D=3D=3D 'input'=0A=
          && currentTarget.type =3D=3D=3D 'radio'))=0A=
            node =3D currentTarget;=0A=
    }=0A=
=0A=
    if (node.nodeType =3D=3D Node.TEXT_NODE)=0A=
      node =3D node.parentNode;=0A=
=0A=
    return Element.extend(node);=0A=
  }=0A=
=0A=
  function findElement(event, expression) {=0A=
    var element =3D Event.element(event);=0A=
=0A=
    if (!expression) return element;=0A=
    while (element) {=0A=
      if (Object.isElement(element) && Prototype.Selector.match(element, =
expression)) {=0A=
        return Element.extend(element);=0A=
      }=0A=
      element =3D element.parentNode;=0A=
    }=0A=
  }=0A=
=0A=
  function pointer(event) {=0A=
    return { x: pointerX(event), y: pointerY(event) };=0A=
  }=0A=
=0A=
  function pointerX(event) {=0A=
    var docElement =3D document.documentElement,=0A=
     body =3D document.body || { scrollLeft: 0 };=0A=
=0A=
    return event.pageX || (event.clientX +=0A=
      (docElement.scrollLeft || body.scrollLeft) -=0A=
      (docElement.clientLeft || 0));=0A=
  }=0A=
=0A=
  function pointerY(event) {=0A=
    var docElement =3D document.documentElement,=0A=
     body =3D document.body || { scrollTop: 0 };=0A=
=0A=
    return  event.pageY || (event.clientY +=0A=
       (docElement.scrollTop || body.scrollTop) -=0A=
       (docElement.clientTop || 0));=0A=
  }=0A=
=0A=
=0A=
  function stop(event) {=0A=
    Event.extend(event);=0A=
    event.preventDefault();=0A=
    event.stopPropagation();=0A=
=0A=
    event.stopped =3D true;=0A=
  }=0A=
=0A=
=0A=
  Event.Methods =3D {=0A=
    isLeftClick:   isLeftClick,=0A=
    isMiddleClick: isMiddleClick,=0A=
    isRightClick:  isRightClick,=0A=
=0A=
    element:     element,=0A=
    findElement: findElement,=0A=
=0A=
    pointer:  pointer,=0A=
    pointerX: pointerX,=0A=
    pointerY: pointerY,=0A=
=0A=
    stop: stop=0A=
  };=0A=
=0A=
  var methods =3D Object.keys(Event.Methods).inject({ }, function(m, =
name) {=0A=
    m[name] =3D Event.Methods[name].methodize();=0A=
    return m;=0A=
  });=0A=
=0A=
  if (window.attachEvent) {=0A=
    function _relatedTarget(event) {=0A=
      var element;=0A=
      switch (event.type) {=0A=
        case 'mouseover':=0A=
        case 'mouseenter':=0A=
          element =3D event.fromElement;=0A=
          break;=0A=
        case 'mouseout':=0A=
        case 'mouseleave':=0A=
          element =3D event.toElement;=0A=
          break;=0A=
        default:=0A=
          return null;=0A=
      }=0A=
      return Element.extend(element);=0A=
    }=0A=
=0A=
    var additionalMethods =3D {=0A=
      stopPropagation: function() { this.cancelBubble =3D true },=0A=
      preventDefault:  function() { this.returnValue =3D false },=0A=
      inspect: function() { return '[object Event]' }=0A=
    };=0A=
=0A=
    Event.extend =3D function(event, element) {=0A=
      if (!event) return false;=0A=
=0A=
      if (!isIELegacyEvent(event)) return event;=0A=
=0A=
      if (event._extendedByPrototype) return event;=0A=
      event._extendedByPrototype =3D Prototype.emptyFunction;=0A=
=0A=
      var pointer =3D Event.pointer(event);=0A=
=0A=
      Object.extend(event, {=0A=
        target: event.srcElement || element,=0A=
        relatedTarget: _relatedTarget(event),=0A=
        pageX:  pointer.x,=0A=
        pageY:  pointer.y=0A=
      });=0A=
=0A=
      Object.extend(event, methods);=0A=
      Object.extend(event, additionalMethods);=0A=
=0A=
      return event;=0A=
    };=0A=
  } else {=0A=
    Event.extend =3D Prototype.K;=0A=
  }=0A=
=0A=
  if (window.addEventListener) {=0A=
    Event.prototype =3D window.Event.prototype || =
document.createEvent('HTMLEvents').__proto__;=0A=
    Object.extend(Event.prototype, methods);=0A=
  }=0A=
=0A=
  function _createResponder(element, eventName, handler) {=0A=
    var registry =3D Element.retrieve(element, =
'prototype_event_registry');=0A=
=0A=
    if (Object.isUndefined(registry)) {=0A=
      CACHE.push(element);=0A=
      registry =3D Element.retrieve(element, 'prototype_event_registry', =
$H());=0A=
    }=0A=
=0A=
    var respondersForEvent =3D registry.get(eventName);=0A=
    if (Object.isUndefined(respondersForEvent)) {=0A=
      respondersForEvent =3D [];=0A=
      registry.set(eventName, respondersForEvent);=0A=
    }=0A=
=0A=
    if (respondersForEvent.pluck('handler').include(handler)) return =
false;=0A=
=0A=
    var responder;=0A=
    if (eventName.include(":")) {=0A=
      responder =3D function(event) {=0A=
        if (Object.isUndefined(event.eventName))=0A=
          return false;=0A=
=0A=
        if (event.eventName !=3D=3D eventName)=0A=
          return false;=0A=
=0A=
        Event.extend(event, element);=0A=
        handler.call(element, event);=0A=
      };=0A=
    } else {=0A=
      if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED &&=0A=
       (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D =
"mouseleave")) {=0A=
        if (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D =
"mouseleave") {=0A=
          responder =3D function(event) {=0A=
            Event.extend(event, element);=0A=
=0A=
            var parent =3D event.relatedTarget;=0A=
            while (parent && parent !=3D=3D element) {=0A=
              try { parent =3D parent.parentNode; }=0A=
              catch(e) { parent =3D element; }=0A=
            }=0A=
=0A=
            if (parent =3D=3D=3D element) return;=0A=
=0A=
            handler.call(element, event);=0A=
          };=0A=
        }=0A=
      } else {=0A=
        responder =3D function(event) {=0A=
          Event.extend(event, element);=0A=
          handler.call(element, event);=0A=
        };=0A=
      }=0A=
    }=0A=
=0A=
    responder.handler =3D handler;=0A=
    respondersForEvent.push(responder);=0A=
    return responder;=0A=
  }=0A=
=0A=
  function _destroyCache() {=0A=
    for (var i =3D 0, length =3D CACHE.length; i < length; i++) {=0A=
      Event.stopObserving(CACHE[i]);=0A=
      CACHE[i] =3D null;=0A=
    }=0A=
  }=0A=
=0A=
  var CACHE =3D [];=0A=
=0A=
  if (Prototype.Browser.IE)=0A=
    window.attachEvent('onunload', _destroyCache);=0A=
=0A=
  if (Prototype.Browser.WebKit)=0A=
    window.addEventListener('unload', Prototype.emptyFunction, false);=0A=
=0A=
=0A=
  var _getDOMEventName =3D Prototype.K,=0A=
      translations =3D { mouseenter: "mouseover", mouseleave: "mouseout" =
};=0A=
=0A=
  if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) {=0A=
    _getDOMEventName =3D function(eventName) {=0A=
      return (translations[eventName] || eventName);=0A=
    };=0A=
  }=0A=
=0A=
  function observe(element, eventName, handler) {=0A=
    element =3D $(element);=0A=
=0A=
    var responder =3D _createResponder(element, eventName, handler);=0A=
=0A=
    if (!responder) return element;=0A=
=0A=
    if (eventName.include(':')) {=0A=
      if (element.addEventListener)=0A=
        element.addEventListener("dataavailable", responder, false);=0A=
      else {=0A=
        element.attachEvent("ondataavailable", responder);=0A=
        element.attachEvent("onlosecapture", responder);=0A=
      }=0A=
    } else {=0A=
      var actualEventName =3D _getDOMEventName(eventName);=0A=
=0A=
      if (element.addEventListener)=0A=
        element.addEventListener(actualEventName, responder, false);=0A=
      else=0A=
        element.attachEvent("on" + actualEventName, responder);=0A=
    }=0A=
=0A=
    return element;=0A=
  }=0A=
=0A=
  function stopObserving(element, eventName, handler) {=0A=
    element =3D $(element);=0A=
=0A=
    var registry =3D Element.retrieve(element, =
'prototype_event_registry');=0A=
    if (!registry) return element;=0A=
=0A=
    if (!eventName) {=0A=
      registry.each( function(pair) {=0A=
        var eventName =3D pair.key;=0A=
        stopObserving(element, eventName);=0A=
      });=0A=
      return element;=0A=
    }=0A=
=0A=
    var responders =3D registry.get(eventName);=0A=
    if (!responders) return element;=0A=
=0A=
    if (!handler) {=0A=
      responders.each(function(r) {=0A=
        stopObserving(element, eventName, r.handler);=0A=
      });=0A=
      return element;=0A=
    }=0A=
=0A=
    var i =3D responders.length, responder;=0A=
    while (i--) {=0A=
      if (responders[i].handler =3D=3D=3D handler) {=0A=
        responder =3D responders[i];=0A=
        break;=0A=
      }=0A=
    }=0A=
    if (!responder) return element;=0A=
=0A=
    if (eventName.include(':')) {=0A=
      if (element.removeEventListener)=0A=
        element.removeEventListener("dataavailable", responder, false);=0A=
      else {=0A=
        element.detachEvent("ondataavailable", responder);=0A=
        element.detachEvent("onlosecapture", responder);=0A=
      }=0A=
    } else {=0A=
      var actualEventName =3D _getDOMEventName(eventName);=0A=
      if (element.removeEventListener)=0A=
        element.removeEventListener(actualEventName, responder, false);=0A=
      else=0A=
        element.detachEvent('on' + actualEventName, responder);=0A=
    }=0A=
=0A=
    registry.set(eventName, responders.without(responder));=0A=
=0A=
    return element;=0A=
  }=0A=
=0A=
  function fire(element, eventName, memo, bubble) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isUndefined(bubble))=0A=
      bubble =3D true;=0A=
=0A=
    if (element =3D=3D document && document.createEvent && =
!element.dispatchEvent)=0A=
      element =3D document.documentElement;=0A=
=0A=
    var event;=0A=
    if (document.createEvent) {=0A=
      event =3D document.createEvent('HTMLEvents');=0A=
      event.initEvent('dataavailable', bubble, true);=0A=
    } else {=0A=
      event =3D document.createEventObject();=0A=
      event.eventType =3D bubble ? 'ondataavailable' : 'onlosecapture';=0A=
    }=0A=
=0A=
    event.eventName =3D eventName;=0A=
    event.memo =3D memo || { };=0A=
=0A=
    if (document.createEvent)=0A=
      element.dispatchEvent(event);=0A=
    else=0A=
      element.fireEvent(event.eventType, event);=0A=
=0A=
    return Event.extend(event);=0A=
  }=0A=
=0A=
  Event.Handler =3D Class.create({=0A=
    initialize: function(element, eventName, selector, callback) {=0A=
      this.element   =3D $(element);=0A=
      this.eventName =3D eventName;=0A=
      this.selector  =3D selector;=0A=
      this.callback  =3D callback;=0A=
      this.handler   =3D this.handleEvent.bind(this);=0A=
    },=0A=
=0A=
    start: function() {=0A=
      Event.observe(this.element, this.eventName, this.handler);=0A=
      return this;=0A=
    },=0A=
=0A=
    stop: function() {=0A=
      Event.stopObserving(this.element, this.eventName, this.handler);=0A=
      return this;=0A=
    },=0A=
=0A=
    handleEvent: function(event) {=0A=
      var element =3D Event.findElement(event, this.selector);=0A=
      if (element) this.callback.call(this.element, event, element);=0A=
    }=0A=
  });=0A=
=0A=
  function on(element, eventName, selector, callback) {=0A=
    element =3D $(element);=0A=
    if (Object.isFunction(selector) && Object.isUndefined(callback)) {=0A=
      callback =3D selector, selector =3D null;=0A=
    }=0A=
=0A=
    return new Event.Handler(element, eventName, selector, =
callback).start();=0A=
  }=0A=
=0A=
  Object.extend(Event, Event.Methods);=0A=
=0A=
  Object.extend(Event, {=0A=
    fire:          fire,=0A=
    observe:       observe,=0A=
    stopObserving: stopObserving,=0A=
    on:            on=0A=
  });=0A=
=0A=
  Element.addMethods({=0A=
    fire:          fire,=0A=
=0A=
    observe:       observe,=0A=
=0A=
    stopObserving: stopObserving,=0A=
=0A=
    on:            on=0A=
  });=0A=
=0A=
  Object.extend(document, {=0A=
    fire:          fire.methodize(),=0A=
=0A=
    observe:       observe.methodize(),=0A=
=0A=
    stopObserving: stopObserving.methodize(),=0A=
=0A=
    on:            on.methodize(),=0A=
=0A=
    loaded:        false=0A=
  });=0A=
=0A=
  if (window.Event) Object.extend(window.Event, Event);=0A=
  else window.Event =3D Event;=0A=
})();=0A=
=0A=
(function() {=0A=
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A=
     Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */=0A=
=0A=
  var timer;=0A=
=0A=
  function fireContentLoadedEvent() {=0A=
    if (document.loaded) return;=0A=
    if (timer) window.clearTimeout(timer);=0A=
    document.loaded =3D true;=0A=
    document.fire('dom:loaded');=0A=
  }=0A=
=0A=
  function checkReadyState() {=0A=
    if (document.readyState =3D=3D=3D 'complete') {=0A=
      document.stopObserving('readystatechange', checkReadyState);=0A=
      fireContentLoadedEvent();=0A=
    }=0A=
  }=0A=
=0A=
  function pollDoScroll() {=0A=
    try { document.documentElement.doScroll('left'); }=0A=
    catch(e) {=0A=
      timer =3D pollDoScroll.defer();=0A=
      return;=0A=
    }=0A=
    fireContentLoadedEvent();=0A=
  }=0A=
=0A=
  if (document.addEventListener) {=0A=
    document.addEventListener('DOMContentLoaded', =
fireContentLoadedEvent, false);=0A=
  } else {=0A=
    document.observe('readystatechange', checkReadyState);=0A=
    if (window =3D=3D top)=0A=
      timer =3D pollDoScroll.defer();=0A=
  }=0A=
=0A=
  Event.observe(window, 'load', fireContentLoadedEvent);=0A=
})();=0A=
=0A=
Element.addMethods();=0A=
=0A=
/*------------------------------- DEPRECATED =
-------------------------------*/=0A=
=0A=
Hash.toQueryString =3D Object.toQueryString;=0A=
=0A=
var Toggle =3D { display: Element.toggle };=0A=
=0A=
Element.Methods.childOf =3D Element.Methods.descendantOf;=0A=
=0A=
var Insertion =3D {=0A=
  Before: function(element, content) {=0A=
    return Element.insert(element, {before:content});=0A=
  },=0A=
=0A=
  Top: function(element, content) {=0A=
    return Element.insert(element, {top:content});=0A=
  },=0A=
=0A=
  Bottom: function(element, content) {=0A=
    return Element.insert(element, {bottom:content});=0A=
  },=0A=
=0A=
  After: function(element, content) {=0A=
    return Element.insert(element, {after:content});=0A=
  }=0A=
};=0A=
=0A=
var $continue =3D new Error('"throw $continue" is deprecated, use =
"return" instead');=0A=
=0A=
var Position =3D {=0A=
  includeScrollOffsets: false,=0A=
=0A=
  prepare: function() {=0A=
    this.deltaX =3D  window.pageXOffset=0A=
                || document.documentElement.scrollLeft=0A=
                || document.body.scrollLeft=0A=
                || 0;=0A=
    this.deltaY =3D  window.pageYOffset=0A=
                || document.documentElement.scrollTop=0A=
                || document.body.scrollTop=0A=
                || 0;=0A=
  },=0A=
=0A=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (y >=3D this.offset[1] &&=0A=
            y <  this.offset[1] + element.offsetHeight &&=0A=
            x >=3D this.offset[0] &&=0A=
            x <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  withinIncludingScrolloffsets: function(element, x, y) {=0A=
    var offsetcache =3D Element.cumulativeScrollOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  overlap: function(mode, element) {=0A=
    if (!mode) return 0;=0A=
    if (mode =3D=3D 'vertical')=0A=
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A=
        element.offsetHeight;=0A=
    if (mode =3D=3D 'horizontal')=0A=
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A=
        element.offsetWidth;=0A=
  },=0A=
=0A=
=0A=
  cumulativeOffset: Element.Methods.cumulativeOffset,=0A=
=0A=
  positionedOffset: Element.Methods.positionedOffset,=0A=
=0A=
  absolutize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.absolutize(element);=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.relativize(element);=0A=
  },=0A=
=0A=
  realOffset: Element.Methods.cumulativeScrollOffset,=0A=
=0A=
  offsetParent: Element.Methods.getOffsetParent,=0A=
=0A=
  page: Element.Methods.viewportOffset,=0A=
=0A=
  clone: function(source, target, options) {=0A=
    options =3D options || { };=0A=
    return Element.clonePosition(target, source, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!document.getElementsByClassName) document.getElementsByClassName =
=3D function(instanceMethods){=0A=
  function iter(name) {=0A=
    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' =
" + name + " ')]";=0A=
  }=0A=
=0A=
  instanceMethods.getElementsByClassName =3D =
Prototype.BrowserFeatures.XPath ?=0A=
  function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') =
: iter(className);=0A=
    return cond ? document._getElementsByXPath('.//*' + cond, element) : =
[];=0A=
  } : function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var elements =3D [], classNames =3D (/\s/.test(className) ? =
$w(className) : null);=0A=
    if (!classNames && !className) return elements;=0A=
=0A=
    var nodes =3D $(element).getElementsByTagName('*');=0A=
    className =3D ' ' + className + ' ';=0A=
=0A=
    for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A=
      if (child.className && (cn =3D ' ' + child.className + ' ') && =
(cn.include(className) ||=0A=
          (classNames && classNames.all(function(name) {=0A=
            return !name.toString().blank() && cn.include(' ' + name + ' =
');=0A=
          }))))=0A=
        elements.push(Element.extend(child));=0A=
    }=0A=
    return elements;=0A=
  };=0A=
=0A=
  return function(className, parentElement) {=0A=
    return $(parentElement || =
document.body).getElementsByClassName(className);=0A=
  };=0A=
}(Element.Methods);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.ClassNames =3D Class.create();=0A=
Element.ClassNames.prototype =3D {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    this.element.className.split(/\s+/).select(function(name) {=0A=
      return name.length > 0;=0A=
    })._each(iterator);=0A=
  },=0A=
=0A=
  set: function(className) {=0A=
    this.element.className =3D className;=0A=
  },=0A=
=0A=
  add: function(classNameToAdd) {=0A=
    if (this.include(classNameToAdd)) return;=0A=
    this.set($A(this).concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set($A(this).without(classNameToRemove).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return $A(this).join(' ');=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.ClassNames.prototype, Enumerable);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
(function() {=0A=
  window.Selector =3D Class.create({=0A=
    initialize: function(expression) {=0A=
      this.expression =3D expression.strip();=0A=
    },=0A=
=0A=
    findElements: function(rootElement) {=0A=
      return Prototype.Selector.select(this.expression, rootElement);=0A=
    },=0A=
=0A=
    match: function(element) {=0A=
      return Prototype.Selector.match(element, this.expression);=0A=
    },=0A=
=0A=
    toString: function() {=0A=
      return this.expression;=0A=
    },=0A=
=0A=
    inspect: function() {=0A=
      return "#<Selector: " + this.expression + ">";=0A=
    }=0A=
  });=0A=
=0A=
  Object.extend(Selector, {=0A=
    matchElements: function(elements, expression) {=0A=
      var match =3D Prototype.Selector.match,=0A=
          results =3D [];=0A=
=0A=
      for (var i =3D 0, length =3D elements.length; i < length; i++) {=0A=
        var element =3D elements[i];=0A=
        if (match(element, expression)) {=0A=
          results.push(Element.extend(element));=0A=
        }=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    findElement: function(elements, expression, index) {=0A=
      index =3D index || 0;=0A=
      var matchIndex =3D 0, element;=0A=
      for (var i =3D 0, length =3D elements.length; i < length; i++) {=0A=
        element =3D elements[i];=0A=
        if (Prototype.Selector.match(element, expression) && index =
=3D=3D=3D matchIndex++) {=0A=
          return Element.extend(element);=0A=
        }=0A=
      }=0A=
    },=0A=
=0A=
    findChildElements: function(element, expressions) {=0A=
      var selector =3D expressions.toArray().join(', ');=0A=
      return Prototype.Selector.select(selector, element || document);=0A=
    }=0A=
  });=0A=
})();=0A=

------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: application/octet-stream
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/webtrends.js

// WebTrends SmartSource Data Collector Tag
// Version: 9.3.0    =20
// Tag Builder Version: 3.1
// Created: 11/23/2010 10:53:56 AM

var userConsent =3D getCookie("user_consent");
if(userConsent && userConsent =3D=3D "true"){
function WebTrends(){
	var that=3Dthis;
	// begin: user modifiable
	this.dcsid=3D"dcs5w0txb10000wocrvqy1nqm_6n1p";
	this.domain=3D"bookshop.europa.eu";
	this.timezone=3D1;
	this.fpcdom=3D".bookshop.europa.eu";
	this.onsitedoms=3D"bookshop.europa.eu/.*";
	this.downloadtypes=3D"epub";
	this.navigationtag=3D"div,table";
	this.trackevents=3Dtrue;
	this.trimoffsiteparams=3Dtrue;
	this.enabled=3Dtrue;
	this.i18n=3Dfalse;
	this.fpc=3D"WT_FPC";
	this.paidsearchparams=3D"gclid";
	this.splitvalue=3D"";
	this.preserve=3Dtrue;
	// end: user modifiable
	this.DCS=3D{};
	this.WT=3D{};
	this.DCSext=3D{};
	this.images=3D[];
	this.index=3D0;
	this.exre=3D(function(){return(window.RegExp?new =
RegExp("dcs(uri)|(ref)|(aut)|(met)|(sta)|(sip)|(pro)|(byt)|(dat)|(p3p)|(c=
fg)|(redirect)|(cip)","i"):"");})();
	=
this.re=3D(function(){return(window.RegExp?(that.i18n?{"%25":/\%/g,"%26":=
/\&/g}:{"%09":/\t/g,"%20":/ =
/g,"%23":/\#/g,"%26":/\&/g,"%2B":/\+/g,"%3F":/\?/g,"%5C":/\\/g,"%22":/\"/=
g,"%7F":/\x7F/g,"%A0":/\xA0/g}):"");})();
}
WebTrends.prototype.dcsGetId=3Dfunction(){
	if =
(this.enabled&&(document.cookie.indexOf(this.fpc+"=3D")=3D=3D-1)&&(docume=
nt.cookie.indexOf("WTLOPTOUT=3D")=3D=3D-1)){
		document.write("<scr"+"ipt type=3D'text/javascript' =
src=3D'"+"http"+(window.location.protocol.indexOf('https:')=3D=3D0?'s':''=
)+"://"+this.domain+"/"+this.dcsid+"/wtid.js"+"'><\/scr"+"ipt>");
	}
}
WebTrends.prototype.dcsGetCookie=3Dfunction(name){
	var cookies=3Ddocument.cookie.split("; ");
	var cmatch=3D[];
	var idx=3D0;
	var i=3D0;
	var namelen=3Dname.length;
	var clen=3Dcookies.length;
	for (i=3D0;i<clen;i++){
		var c=3Dcookies[i];
		if ((c.substring(0,namelen+1))=3D=3D(name+"=3D")){
			cmatch[idx++]=3Dc;
		}
	}
	var cmatchCount=3Dcmatch.length;
	if (cmatchCount>0){
		idx=3D0;
		if ((cmatchCount>1)&&(name=3D=3Dthis.fpc)){
			var dLatest=3Dnew Date(0);
			for (i=3D0;i<cmatchCount;i++){
				var lv=3DparseInt(this.dcsGetCrumb(cmatch[i],"lv"));
				var dLst=3Dnew Date(lv);
				if (dLst>dLatest){
					dLatest.setTime(dLst.getTime());
					idx=3Di;
				}
			}
		}
		return unescape(cmatch[idx].substring(namelen+1));
	}
	else{
		return null;
	}
}
WebTrends.prototype.dcsGetCrumb=3Dfunction(cval,crumb,sep){
	var aCookie=3Dcval.split(sep||":");
	for (var i=3D0;i<aCookie.length;i++){
		var aCrumb=3DaCookie[i].split("=3D");
		if (crumb=3D=3DaCrumb[0]){
			return aCrumb[1];
		}
	}
	return null;
}
WebTrends.prototype.dcsGetIdCrumb=3Dfunction(cval,crumb){
	var id=3Dcval.substring(0,cval.indexOf(":lv=3D"));
	var aCrumb=3Did.split("=3D");
	for (var i=3D0;i<aCrumb.length;i++){
		if (crumb=3D=3DaCrumb[0]){
			return aCrumb[1];
		}
	}
	return null;
}
WebTrends.prototype.dcsIsFpcSet=3Dfunction(name,id,lv,ss){
	var c=3Dthis.dcsGetCookie(name);
	if (c){
		return =
((id=3D=3Dthis.dcsGetIdCrumb(c,"id"))&&(lv=3D=3Dthis.dcsGetCrumb(c,"lv"))=
&&(ss=3D=3Dthis.dcsGetCrumb(c,"ss")))?0:3;
	}
	return 2;
}
WebTrends.prototype.dcsFPC=3Dfunction(){
	if (document.cookie.indexOf("WTLOPTOUT=3D")!=3D-1){
		return;
	}
	var WT=3Dthis.WT;
	var name=3Dthis.fpc;
	var dCur=3Dnew Date();
	var adj=3D(dCur.getTimezoneOffset()*60000)+(this.timezone*3600000);
	dCur.setTime(dCur.getTime()+adj);
	var dExp=3Dnew Date(dCur.getTime()+315360000000);
	var dSes=3Dnew Date(dCur.getTime());
	=
WT.co_f=3DWT.vtid=3DWT.vtvs=3DWT.vt_f=3DWT.vt_f_a=3DWT.vt_f_s=3DWT.vt_f_d=
=3DWT.vt_f_tlh=3DWT.vt_f_tlv=3D"";
	if (document.cookie.indexOf(name+"=3D")=3D=3D-1){
		if ((typeof(gWtId)!=3D"undefined")&&(gWtId!=3D"")){
			WT.co_f=3DgWtId;
		}
		else if ((typeof(gTempWtId)!=3D"undefined")&&(gTempWtId!=3D"")){
			WT.co_f=3DgTempWtId;
			WT.vt_f=3D"1";
		}
		else{
			WT.co_f=3D"2";
			var curt=3DdCur.getTime().toString();
			for (var i=3D2;i<=3D(32-curt.length);i++){
				WT.co_f+=3DMath.floor(Math.random()*16.0).toString(16);
			}
			WT.co_f+=3Dcurt;
			WT.vt_f=3D"1";
		}
		if (typeof(gWtAccountRollup)=3D=3D"undefined"){
			WT.vt_f_a=3D"1";
		}
		WT.vt_f_s=3DWT.vt_f_d=3D"1";
		WT.vt_f_tlh=3DWT.vt_f_tlv=3D"0";
	}
	else{
		var c=3Dthis.dcsGetCookie(name);
		var id=3Dthis.dcsGetIdCrumb(c,"id");
		var lv=3DparseInt(this.dcsGetCrumb(c,"lv"));
		var ss=3DparseInt(this.dcsGetCrumb(c,"ss"));
		if ((id=3D=3Dnull)||(id=3D=3D"null")||isNaN(lv)||isNaN(ss)){
			return;
		}
		WT.co_f=3Did;
		var dLst=3Dnew Date(lv);
		WT.vt_f_tlh=3DMath.floor((dLst.getTime()-adj)/1000);
		dSes.setTime(ss);
		if =
((dCur.getTime()>(dLst.getTime()+1800000))||(dCur.getTime()>(dSes.getTime=
()+28800000))){
			WT.vt_f_tlv=3DMath.floor((dSes.getTime()-adj)/1000);
			dSes.setTime(dCur.getTime());
			WT.vt_f_s=3D"1";
		}
		if =
((dCur.getDay()!=3DdLst.getDay())||(dCur.getMonth()!=3DdLst.getMonth())||=
(dCur.getYear()!=3DdLst.getYear())){
			WT.vt_f_d=3D"1";
		}
	}
	WT.co_f=3Descape(WT.co_f);
	WT.vtid=3D(typeof(this.vtid)=3D=3D"undefined")?WT.co_f:(this.vtid||"");
	WT.vtvs=3D(dSes.getTime()-adj).toString();
	var expiry=3D"; expires=3D"+dExp.toGMTString();
	var cur=3DdCur.getTime().toString();
	var ses=3DdSes.getTime().toString();
	=
document.cookie=3Dname+"=3D"+"id=3D"+WT.co_f+":lv=3D"+cur+":ss=3D"+ses+ex=
piry+"; path=3D/"+(((this.fpcdom!=3D""))?("; =
domain=3D"+this.fpcdom):(""));
	var rc=3Dthis.dcsIsFpcSet(name,WT.co_f,cur,ses);
	if (rc!=3D0){
		=
WT.co_f=3DWT.vtvs=3DWT.vt_f_s=3DWT.vt_f_d=3DWT.vt_f_tlh=3DWT.vt_f_tlv=3D"=
";
		if (typeof(this.vtid)=3D=3D"undefined"){
			WT.vtid=3D"";
		}
		WT.vt_f=3DWT.vt_f_a=3Drc;
    }
}
WebTrends.prototype.dcsIsOnsite=3Dfunction(host){
	if (host.length>0){
	    host=3Dhost.toLowerCase();
	    if (host=3D=3Dwindow.location.hostname.toLowerCase()){
		    return true;
	    }
	    if (typeof(this.onsitedoms.test)=3D=3D"function"){
		    return this.onsitedoms.test(host);
	    }
	    else if (this.onsitedoms.length>0){
		    var doms=3Dthis.dcsSplit(this.onsitedoms);
		    var len=3Ddoms.length;
		    for (var i=3D0;i<len;i++){
			    if (host=3D=3Ddoms[i]){
			        return true;
			    }
		    }
	    }
	}
	return false;
}
WebTrends.prototype.dcsTypeMatch=3Dfunction(pth, typelist){
	var =
type=3Dpth.toLowerCase().substring(pth.lastIndexOf(".")+1,pth.length);
	var types=3Dthis.dcsSplit(typelist);
	var tlen=3Dtypes.length;=09
	for (var i=3D0;i<tlen;i++){
		if (type=3D=3Dtypes[i]){
			return true;
		}
	}
	return false;
}
WebTrends.prototype.dcsEvt=3Dfunction(evt,tag){
	var e=3Devt.target||evt.srcElement;
	while (e.tagName&&(e.tagName.toLowerCase()!=3Dtag.toLowerCase())){
		e=3De.parentElement||e.parentNode;
	}
	return e;
}
WebTrends.prototype.dcsNavigation=3Dfunction(evt){
	var id=3D"";
	var cname=3D"";
	var elems=3Dthis.dcsSplit(this.navigationtag);
	var elen=3Delems.length;=09
	var i,e,elem;
	for (i=3D0;i<elen;i++){
		elem=3Delems[i];
		if (elem.length){
			e=3Dthis.dcsEvt(evt,elem);
			id=3D(e.getAttribute&&e.getAttribute("id"))?e.getAttribute("id"):"";
			cname=3De.className||"";
			if (id.length||cname.length){
				break;
			}
		}
	}
	return id.length?id:cname;
}
WebTrends.prototype.dcsBind=3Dfunction(event,func){
	if ((typeof(func)=3D=3D"function")&&document.body){
		if (document.body.addEventListener){
			document.body.addEventListener(event, func.wtbind(this), true);
		}
		else if(document.body.attachEvent){
			document.body.attachEvent("on"+event, func.wtbind(this));
		}
	}
}
WebTrends.prototype.dcsET=3Dfunction(){
	var =
e=3D(navigator.appVersion.indexOf("MSIE")!=3D-1)?"click":"mousedown";
	this.dcsBind(e,this.dcsDownload);
	this.dcsBind(e,this.dcsOffsite);
	this.dcsBind("contextmenu",this.dcsRightClick);
}
WebTrends.prototype.dcsMultiTrack=3Dfunction(){
	var args=3DdcsMultiTrack.arguments?dcsMultiTrack.arguments:arguments;
	if (args.length%2=3D=3D0){
	    this.dcsSaveProps(args);
		this.dcsSetProps(args);
		var dCurrent=3Dnew Date();
		this.DCS.dcsdat=3DdCurrent.getTime();
		this.dcsFPC();
		this.dcsTag();
		this.dcsRestoreProps();
	}
}

WebTrends.prototype.dcsCleanUp=3Dfunction(){
	this.DCS=3D{};
	this.WT=3D{};
	this.DCSext=3D{};
	if (arguments.length%2=3D=3D0){
		this.dcsSetProps(arguments);
	}
}
WebTrends.prototype.dcsSetProps=3Dfunction(args){
	for (var i=3D0;i<args.length;i+=3D2){
		if (args[i].indexOf('WT.')=3D=3D0){
			this.WT[args[i].substring(3)]=3Dargs[i+1];
		}
		else if (args[i].indexOf('DCS.')=3D=3D0){
			this.DCS[args[i].substring(4)]=3Dargs[i+1];
		}
		else if (args[i].indexOf('DCSext.')=3D=3D0){
			this.DCSext[args[i].substring(7)]=3Dargs[i+1];
		}
	}
}
WebTrends.prototype.dcsSaveProps=3Dfunction(args){
	var i,key,param;
	if (this.preserve){
		this.args=3D[];
		for (i=3D0;i<args.length;i+=3D2){
			param=3Dargs[i];
			if (param.indexOf('WT.')=3D=3D0){
				key=3Dparam.substring(3);
				this.args[i]=3Dparam;
				this.args[i+1]=3Dthis.WT[key]||"";
			}
			else if (param.indexOf('DCS.')=3D=3D0){
				key=3Dparam.substring(4);
				this.args[i]=3Dparam;
				this.args[i+1]=3Dthis.DCS[key]||"";
			}
			else if (param.indexOf('DCSext.')=3D=3D0){
				key=3Dparam.substring(7);
				this.args[i]=3Dparam;
				this.args[i+1]=3Dthis.DCSext[key]||"";
			}
		}
	}
}
WebTrends.prototype.dcsRestoreProps=3Dfunction(){
	if (this.preserve){
		this.dcsSetProps(this.args);
		this.args=3D[];
	}
}
WebTrends.prototype.dcsSplit=3Dfunction(list){
	var items=3Dlist.toLowerCase().split(",");
	var len=3Ditems.length;
	for (var i=3D0;i<len;i++){
		items[i]=3Ditems[i].replace(/^\s*/,"").replace(/\s*$/,"");
	}
	return items;
}
// Code section for Track clicks to download links.
WebTrends.prototype.dcsDownload=3Dfunction(evt){
	evt=3Devt||(window.event||"");
	if (evt&&((typeof(evt.which)!=3D"number")||(evt.which=3D=3D1))){
		var e=3Dthis.dcsEvt(evt,"A");
		if (e.href){
		    var hn=3De.hostname?(e.hostname.split(":")[0]):"";
		    if =
(this.dcsIsOnsite(hn)&&this.dcsTypeMatch(e.pathname,this.downloadtypes)){=

		        var =
qry=3De.search?e.search.substring(e.search.indexOf("?")+1,e.search.length=
):"";
		        var =
pth=3De.pathname?((e.pathname.indexOf("/")!=3D0)?"/"+e.pathname:e.pathnam=
e):"/";
		        var ttl=3D"";
		        var text=3Ddocument.all?e.innerText:e.text;
		        var img=3Dthis.dcsEvt(evt,"IMG");
		        if (img.alt){
			        ttl=3Dimg.alt;
		        }
		        else if (text){
			        ttl=3Dtext;
		        }
		        else if (e.innerHTML){
			        ttl=3De.innerHTML;
		        }
		        =
this.dcsMultiTrack("DCS.dcssip",hn,"DCS.dcsuri",pth,"DCS.dcsqry",e.search=
||"","WT.ti","Download:"+ttl,"WT.dl","20","WT.nv",this.dcsNavigation(evt)=
);
		    }
		}
	}
}
// Code section for Track right clicks to download links.
WebTrends.prototype.dcsRightClick=3Dfunction(evt){
	evt=3Devt||(window.event||"");
	if (evt){
		var btn=3Devt.which||evt.button;
		if ((btn!=3D1)||(navigator.userAgent.indexOf("Safari")!=3D-1)){
			var e=3Dthis.dcsEvt(evt,"A");
			if ((typeof(e.href)!=3D"undefined")&&e.href){
				if =
((typeof(e.protocol)!=3D"undefined")&&e.protocol&&(e.protocol.indexOf("ht=
tp")!=3D-1)){
					if =
((typeof(e.pathname)!=3D"undefined")&&this.dcsTypeMatch(e.pathname,this.d=
ownloadtypes)){
						var =
pth=3De.pathname?((e.pathname.indexOf("/")!=3D0)?"/"+e.pathname:e.pathnam=
e):"/";
						var hn=3De.hostname?(e.hostname.split(":")[0]):"";
						=
this.dcsMultiTrack("DCS.dcssip",hn,"DCS.dcsuri",pth,"DCS.dcsqry","","WT.t=
i","RightClick:"+pth,"WT.dl","25");
					}
				}
			}
		}
	}
}
// Code section for Track clicks to links leading offsite.
WebTrends.prototype.dcsOffsite=3Dfunction(evt){
	evt=3Devt||(window.event||"");
	if (evt&&((typeof(evt.which)!=3D"number")||(evt.which=3D=3D1))){
		var e=3Dthis.dcsEvt(evt,"A");
		if (e.href){
		    var hn=3De.hostname?(e.hostname.split(":")[0]):"";
		    var pr=3De.protocol||"";
		    if =
((hn.length>0)&&(pr.indexOf("http")=3D=3D0)&&!this.dcsIsOnsite(hn)){
			    var =
qry=3De.search?e.search.substring(e.search.indexOf("?")+1,e.search.length=
):"";
			    var =
pth=3De.pathname?((e.pathname.indexOf("/")!=3D0)?"/"+e.pathname:e.pathnam=
e):"/";
			    this.dcsMultiTrack("DCS.dcssip", hn, "DCS.dcsuri", pth, =
"DCS.dcsqry", this.trimoffsiteparams ? "" : qry, "DCS.dcsref", =
window.location, "WT.ti", "Offsite:" + hn + pth + (qry.length ? ("?" + =
qry) : ""), "WT.dl", "24", "WT.nv", this.dcsNavigation(evt));
		    }
		}
	}
}

WebTrends.prototype.dcsAdv=3Dfunction(){
	if (this.trackevents&&(typeof(this.dcsET)=3D=3D"function")){
		if (window.addEventListener){
			window.addEventListener("load",this.dcsET.wtbind(this),false);
		}
		else if (window.attachEvent){
			window.attachEvent("onload",this.dcsET.wtbind(this));
		}
	}
	this.dcsFPC();
}
WebTrends.prototype.dcsVar=3Dfunction(){
	var dCurrent=3Dnew Date();
	var WT=3Dthis.WT;
	var DCS=3Dthis.DCS;
	WT.tz=3DparseInt(dCurrent.getTimezoneOffset()/60*-1)||"0";
	WT.bh=3DdCurrent.getHours()||"0";
	=
WT.ul=3Dnavigator.appName=3D=3D"Netscape"?navigator.language:navigator.us=
erLanguage;
	if (typeof(screen)=3D=3D"object"){
		=
WT.cd=3Dnavigator.appName=3D=3D"Netscape"?screen.pixelDepth:screen.colorD=
epth;
		WT.sr=3Dscreen.width+"x"+screen.height;
	}
	if (typeof(navigator.javaEnabled())=3D=3D"boolean"){
		WT.jo=3Dnavigator.javaEnabled()?"Yes":"No";
	}
	if (document.title){
		if (window.RegExp){
			var tire=3Dnew =
RegExp("^"+window.location.protocol+"//"+window.location.hostname+"\\s-\\=
s");
			WT.ti=3Ddocument.title.replace(tire,"");
		}
		else{
			WT.ti=3Ddocument.title;
		}
	}
	WT.js=3D"Yes";
	WT.jv=3D(function(){
		var agt=3Dnavigator.userAgent.toLowerCase();
		var major=3DparseInt(navigator.appVersion);
		var mac=3D(agt.indexOf("mac")!=3D-1);
		var ff=3D(agt.indexOf("firefox")!=3D-1);
		var ff0=3D(agt.indexOf("firefox/0.")!=3D-1);
		var ff10=3D(agt.indexOf("firefox/1.0")!=3D-1);
		var ff15=3D(agt.indexOf("firefox/1.5")!=3D-1);
		var ff20=3D(agt.indexOf("firefox/2.0")!=3D-1);
		var ff3up=3D(ff&&!ff0&&!ff10&!ff15&!ff20);
		var =
nn=3D(!ff&&(agt.indexOf("mozilla")!=3D-1)&&(agt.indexOf("compatible")=3D=3D=
-1));
		var nn4=3D(nn&&(major=3D=3D4));
		var nn6up=3D(nn&&(major>=3D5));
		var =
ie=3D((agt.indexOf("msie")!=3D-1)&&(agt.indexOf("opera")=3D=3D-1));
		var ie4=3D(ie&&(major=3D=3D4)&&(agt.indexOf("msie 4")!=3D-1));
		var ie5up=3D(ie&&!ie4);
		var op=3D(agt.indexOf("opera")!=3D-1);
		var op5=3D(agt.indexOf("opera =
5")!=3D-1||agt.indexOf("opera/5")!=3D-1);
		var op6=3D(agt.indexOf("opera =
6")!=3D-1||agt.indexOf("opera/6")!=3D-1);
		var op7up=3D(op&&!op5&&!op6);
		var jv=3D"1.1";
		if (ff3up){
			jv=3D"1.8";
		}
		else if (ff20){
			jv=3D"1.7";
		}
		else if (ff15){
			jv=3D"1.6";
		}
		else if (ff0||ff10||nn6up||op7up){
			jv=3D"1.5";
		}
		else if ((mac&&ie5up)||op6){
			jv=3D"1.4";
		}
		else if (ie5up||nn4||op5){
			jv=3D"1.3";
		}
		else if (ie4){
			jv=3D"1.2";
		}
		return jv;
	})();
	WT.ct=3D"unknown";
	if (document.body&&document.body.addBehavior){
		try{
			document.body.addBehavior("#default#clientCaps");
			WT.ct=3Ddocument.body.connectionType||"unknown";
			document.body.addBehavior("#default#homePage");
			WT.hp=3Ddocument.body.isHomePage(location.href)?"1":"0";
		}
		catch(e){
		}
	}
	if (document.all){
		=
WT.bs=3Ddocument.body?document.body.offsetWidth+"x"+document.body.offsetH=
eight:"unknown";
	}
	else{
		WT.bs=3Dwindow.innerWidth+"x"+window.innerHeight;
	}
	WT.fv=3D(function(){
		var i,flash;
		if (window.ActiveXObject){
			for(i=3D15;i>0;i--){
				try{
					flash=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
					return i+".0";
				}
				catch(e){
				}
			}
		}
		else if (navigator.plugins&&navigator.plugins.length){
			for (i=3D0;i<navigator.plugins.length;i++){
				if (navigator.plugins[i].name.indexOf('Shockwave Flash')!=3D-1){
					return navigator.plugins[i].description.split(" ")[2];
				}
			}
		}
		return "Not enabled";
	})();
	WT.slv=3D(function(){
		var slv=3D"Not enabled";
		try{    =20
			if (navigator.userAgent.indexOf('MSIE')!=3D-1){
				var sli =3D new ActiveXObject('AgControl.AgControl');
				if (sli){
					slv=3D"Unknown";
				}
			}
			else if (navigator.plugins["Silverlight Plug-In"]){
				slv=3D"Unknown";
			}
		}
		catch(e){
		}
		if (slv!=3D"Not enabled"){
			var i,m,M,F;
			if =
((typeof(Silverlight)=3D=3D"object")&&(typeof(Silverlight.isInstalled)=3D=
=3D"function")){
				for(i=3D9;i>0;i--){
					M=3Di;
					if (Silverlight.isInstalled(M+".0")){
							break;
					}
					if (slv=3D=3DM){
						break;
					}
				}
				for (m=3D9;m>=3D0;m--){
					F=3DM+"."+m;
					if (Silverlight.isInstalled(F)){
						slv=3DF;
						break;
					}
					if (slv=3D=3DF){
						break;
					}
				}
			}
		}
		return slv;
	})();
	if (this.i18n){
		if (typeof(document.defaultCharset)=3D=3D"string"){
			WT.le=3Ddocument.defaultCharset;
		}=20
		else if (typeof(document.characterSet)=3D=3D"string"){
			WT.le=3Ddocument.characterSet;
		}
		else{
			WT.le=3D"unknown";
		}
	}
	WT.tv=3D"9.3.0";
	WT.sp=3Dthis.splitvalue;
	WT.dl=3D"0";
	WT.ssl=3D(window.location.protocol.indexOf('https:')=3D=3D0)?"1":"0";
	DCS.dcsdat=3DdCurrent.getTime();
	DCS.dcssip=3Dwindow.location.hostname;
	DCS.dcsuri=3Dwindow.location.pathname;
	WT.es=3DDCS.dcssip+DCS.dcsuri;
	if (window.location.search){
		DCS.dcsqry=3Dwindow.location.search;
	}
	if (DCS.dcsqry){
		var dcsqry=3DDCS.dcsqry.toLowerCase();
		var =
params=3Dthis.paidsearchparams.length?this.paidsearchparams.toLowerCase()=
.split(","):[];
		for (var i=3D0;i<params.length;i++){
			if (dcsqry.indexOf(params[i]+"=3D")!=3D-1){
				WT.srch=3D"1";
				break;
			}
		}
	}
	if =
((window.document.referrer!=3D"")&&(window.document.referrer!=3D"-")){
		if (!(navigator.appName=3D=3D"Microsoft Internet =
Explorer"&&parseInt(navigator.appVersion)<4)){
			DCS.dcsref=3Dwindow.document.referrer;
		}
	}
}
WebTrends.prototype.dcsEscape=3Dfunction(S, REL){
	if (REL!=3D""){
		S=3DS.toString();
		for (var R in REL){
 			if (REL[R] instanceof RegExp){
				S=3DS.replace(REL[R],R);
 			}
		}
		return S;
	}
	else{
		return escape(S);
	}
}
WebTrends.prototype.dcsA=3Dfunction(N,V){
	if (this.i18n&&(this.exre!=3D"")&&!this.exre.test(N)){
		if (N=3D=3D"dcsqry"){
			var newV=3D"";
			var params=3DV.substring(1).split("&");
			for (var i=3D0;i<params.length;i++){
				var pair=3Dparams[i];
				var pos=3Dpair.indexOf("=3D");
				if (pos!=3D-1){
					var key=3Dpair.substring(0,pos);
					var val=3Dpair.substring(pos+1);
					if (i!=3D0){
						newV+=3D"&";
					}
					newV+=3Dkey+"=3D"+this.dcsEncode(val);
				}
			}
			V=3DV.substring(0,1)+newV;
		}
		else{
			V=3Dthis.dcsEncode(V);
		}
	}
	return "&"+N+"=3D"+this.dcsEscape(V, this.re);
}
WebTrends.prototype.dcsEncode=3Dfunction(S){
	return =
(typeof(encodeURIComponent)=3D=3D"function")?encodeURIComponent(S):escape=
(S);
}
WebTrends.prototype.dcsCreateImage=3Dfunction(dcsSrc){
	if (document.images){
		this.images[this.index]=3Dnew Image();
		this.images[this.index].src=3DdcsSrc;
		this.index++;
	}
	else{
		document.write('<img alt=3D"" border=3D"0" name=3D"DCSIMG" width=3D"1" =
height=3D"1" src=3D"'+dcsSrc+'">');
	}
}
WebTrends.prototype.dcsMeta=3Dfunction(){
	var elems;
	if (document.documentElement){
		elems=3Ddocument.getElementsByTagName("meta");
	}
	else if (document.all){
		elems=3Ddocument.all.tags("meta");
	}
	if (typeof(elems)!=3D"undefined"){
		var length=3Delems.length;
		for (var i=3D0;i<length;i++){
			var name=3Delems.item(i).name;
			var content=3Delems.item(i).content;
			var equiv=3Delems.item(i).httpEquiv;
			if (name.length>0){
				if (name.toUpperCase().indexOf("WT.")=3D=3D0){
					this.WT[name.substring(3)]=3Dcontent;
				}
				else if (name.toUpperCase().indexOf("DCSEXT.")=3D=3D0){
					this.DCSext[name.substring(7)]=3Dcontent;
				}
				else if (name.toUpperCase().indexOf("DCS.")=3D=3D0){
					this.DCS[name.substring(4)]=3Dcontent;
				}
			}
		}
	}
}
WebTrends.prototype.dcsTag=3Dfunction(){
	if (document.cookie.indexOf("WTLOPTOUT=3D")!=3D-1){
		return;
	}
	var WT=3Dthis.WT;
	var DCS=3Dthis.DCS;
	var DCSext=3Dthis.DCSext;
	var i18n=3Dthis.i18n;
	var =
P=3D"http"+(window.location.protocol.indexOf('https:')=3D=3D0?'s':'')+":/=
/"+this.domain+(this.dcsid=3D=3D""?'':'/'+this.dcsid)+"/dcs.gif?";
	if (i18n){
		WT.dep=3D"";
	}
	for (var N in DCS){
 		if (DCS[N]&&(typeof DCS[N]!=3D"function")){
			P+=3Dthis.dcsA(N,DCS[N]);
		}
	}
	for (N in WT){
		if (WT[N]&&(typeof WT[N]!=3D"function")){
			P+=3Dthis.dcsA("WT."+N,WT[N]);
		}
	}
	for (N in DCSext){
		if (DCSext[N]&&(typeof DCSext[N]!=3D"function")){
			if (i18n){
				WT.dep=3D(WT.dep.length=3D=3D0)?N:(WT.dep+";"+N);
			}
			P+=3Dthis.dcsA(N,DCSext[N]);
		}
	}
	if (i18n&&(WT.dep.length>0)){
		P+=3Dthis.dcsA("WT.dep",WT.dep);
	}
	if (P.length>2048&&navigator.userAgent.indexOf('MSIE')>=3D0){
		P=3DP.substring(0,2040)+"&WT.tu=3D1";
	}
	this.dcsCreateImage(P);
	this.WT.ad=3D"";
}
WebTrends.prototype.dcsDebug=3Dfunction(){
	var t=3Dthis;
	var i=3Dt.images[0].src;
	var q=3Di.indexOf("?");
	var r=3Di.substring(0,q).split("/");
	var m=3D"<b>Protocol</b><br><code>"+r[0]+"<br></code>";
	m+=3D"<b>Domain</b><br><code>"+r[2]+"<br></code>";
	m+=3D"<b>Path</b><br><code>/"+r[3]+"/"+r[4]+"<br></code>";
	m+=3D"<b>Query =
Params</b><code>"+i.substring(q+1).replace(/\&/g,"<br>")+"</code>";
	=
m+=3D"<br><b>Cookies</b><br><code>"+document.cookie.replace(/\;/g,"<br>")=
+"</code>";
	if (t.w&&!t.w.closed){
		t.w.close();
	}
	=
t.w=3Dwindow.open("","dcsDebug","width=3D500,height=3D650,scrollbars=3Dye=
s,resizable=3Dyes");
	t.w.document.write(m);
	t.w.focus();
}
WebTrends.prototype.dcsCollect=3Dfunction(){
    if (this.enabled){
        this.dcsVar();
        this.dcsMeta();
        this.dcsAdv();
        if (typeof(this.dcsCustom)=3D=3D"function"){
			this.dcsCustom();
        }
        this.dcsTag();
    }
}

function dcsMultiTrack(){
	if (typeof(_tag)!=3D"undefined"){
		return(_tag.dcsMultiTrack());
	}
}

function dcsDebug(){
	if (typeof(_tag)!=3D"undefined"){
		return(_tag.dcsDebug());
	}
}

Function.prototype.wtbind =3D function(obj){
	var method=3Dthis;
	var temp=3Dfunction(){
		return method.apply(obj,arguments);
	};
	return temp;
}
}
else{
	document.cookie =3D "WT_FPC" + '=3D;expires=3DThu, 01 Jan 1970 00:00:01 =
GMT;';
}
------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: application/octet-stream
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/eub-publication.js

var UIUtils =3D new (
	Class.create({
=09
		_orientation : {'left' : '99%', 'top' : '5%'},
		_layerStyle	 : {
			'background' : '#000',
			'display' : 'block',
			'filter': 'alpha(opacity=3D5)',
			'left' : '0',
			'opacity': '0.05',
			'position' : 'absolute',
			'top' : '0',
			'z-index': '101'
		},
=09
		drawLayerOver: function(element) {
			var layer =3D new Element('span',{'class':'layer'});
			var style =3D arguments[1] || this._layerStyle;
			layer.setStyle(style);
			layer.setStyle({
				'height' : element.getHeight() + 'px',
				'width' : element.getWidth() + 'px'
			});
			element.insert(layer);
		},
	=09
		removeLayerOver: function(element) {
			if (element.down('span.layer'))
				element.down('span.layer').remove();
		},
	=09
		mark: function(element, image) {
			var o =3D arguments[2] || this._orientation;
			element.setStyle({
				'background': 'url(' + image + ') ' + o.left + ' ' + o.top + ' =
no-repeat'
			});
		},
	=09
		unmark: function(element) {
			element.setStyle({'background' : 'none'});
		},
	=09
		showSerialsLink : function(elementID, URL, title, accesskey, tabindex, =
caption, parameters) {
			var element =3D $(elementID);
			if (element !=3D null) {
				var anchor =3D new Element('a', {
					'href'		: URL + '?' + Object.toQueryString(parameters),
					'title' 	: title,
					'accesskey' : accesskey,
					'tabindex' 	: tabindex
				});
				anchor.update(caption);
				var span =3D new Element('span').update(anchor);
				element.update(span);
			}
		},
	=09
		hideSerialsLink : function(elementID) {
			var element =3D $(elementID);
			if (element !=3D null) {
				var e =3D element.down('span');
				if (e !=3D null) {
					e.remove();
				}
			}
		}
	})
) ();

var AjaxUtils =3D new (
	Class.create({
=09
		_loadingIndicator 	: '/images/eu-loading-indicator.gif',
		_errorIndicator		: '/images/error.gif',
=09
		markAsLoading: function(element, webRoot) {
			UIUtils.drawLayerOver(element);
			UIUtils.mark(element, webRoot + this._loadingIndicator);
		},
	=09
		markAsError: function(element, webRoot) {
			UIUtils.mark(element, webRoot + this._errorIndicator);
		},
	=09
		unmark: function(element) {
			UIUtils.unmark(element);
			UIUtils.removeLayerOver(element);
		},
=09
		injectResponse: function(url, parameters, source, webRoot, origin) {
			new Ajax.Request(url, {
				method : 'get',
				parameters : parameters,
				onCreate : function() {
					AjaxUtils.markAsLoading(source, webRoot);
				},
				onComplete : function(t) {
					if (t.status =3D=3D 200) {
						source.replace(t.responseText);
						if ($(origin.id))
							$(origin.id).focus();
					}  else {
						AjaxUtils.markAsError(source, webRoot);
						AjaxUtils.unmark.delay(10, source);
					}
				}
			});
		}
	=09
	})
) ();
------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: application/octet-stream
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/dialog.js

/**
 * @author      Roland Franssen <franssen.roland@gmail.com>
 * @website     http://roland.devarea.nl/dialog/
 * @copyright   2008 http://roland.devarea.nl/dialog/
 * @license     MIT
 * @version     2.1
 **/

var Dialogs =3D {
	Lang:{
		close:   '&nbsp;&times;&nbsp;',
		prev:    '&laquo; Previous',
		next:    'Next &raquo;',
		loading: 'Loading...',
		ok:      'OK',
		yes:     'Yes',
		no:      'No'
	},
	Default:{
		handle:         null,                    // css rule | element | null
		autoOpen:       false,                   // true | false
		background:     ['#000', '#fff'],        // array
		width:          'auto',                  // auto | max | integer
		height:         'auto',                  // auto | max | integer
		minWidth:       null,                    // null | pixel value
		minHeight:      null,                    // null | pixel value
		innerScroll:    true,                    // true | false
		opacity:        .75,                     // float | false
		margin:         10,                      // integer
		padding:        10,                      // integer
		title:          null,                    // string | null
		className:      null,                    // string | null
		content:        null,                    // string | element | array | =
object | function
		iframe:         null,                    // string | null
		target:{
		  id:           null,                    // string | null
		  auto:         true                     // true | false
		},
		ajax:{
		  url:          null,                    // string | null
		  jsonTemplate: null,                    // interpolation template =
string | null
		  options:      {}                       // default ajax options
		},
		close:{
		  link:         true,                    // true | false
		  esc:          true,                    // true | false
		  overlay:      true                     // true | false
		},
        beforeOpen:     Prototype.emptyFunction, // function
		afterOpen:      Prototype.emptyFunction, // function
		beforeClose:    Prototype.emptyFunction, // function
		afterClose:     Prototype.emptyFunction, // function
		afterClick:     Prototype.emptyFunction, // function
		afterIframeLoad:Prototype.emptyFunction  // function
	},
	Browser:{
		IE6:(Prototype.Browser.IE && parseInt(navigator.appVersion) =3D=3D 4 =
&& navigator.userAgent.toLowerCase().indexOf('msie 6.') !=3D -1)
	}
};

Object.extend(Dialogs, {
	instance: null,
	_exec:false,
	_open:false,
	_elements:{
		overlay:['div', 'dialog-overlay', 'fixed'],
		container:['div', 'dialog-container', 'fixed'],
		content:['div', 'dialog-content'],
		loading:['div', 'dialog-loading'],
		top:['div', 'dialog-top'],
		bottom:['div', 'dialog-bottom'],
		title:['span', 'dialog-title'],
		close:['a', 'dialog-close'],
		next:['a', null, 'next'],
		prev:['a', null, 'prev'],
		curr:['span', null, 'curr']
	},
	fix:{
		scroll:Dialogs.Browser.IE6,
		select:Dialogs.Browser.IE6
	},
	view:function(){
		var view =3D document.viewport,
		    dim  =3D view.getDimensions(),
			data =3D {width:dim.width, height:dim.height};
		if(Dialogs.fix.scroll){
			var scroll =3D view.getScrollOffsets();
			data.top  =3D scroll.top;
			data.left =3D scroll.left;
		}
		return data;
	},
	elm:function(elm){
		return Dialogs._elements[elm];
	},
	load:function(){
		if(!!Dialogs._exec) return;
		Dialogs._exec =3D true;
		var e =3D Dialogs._elements;
		for(var x in e){
			var d =3D e[x],
			    a =3D {style:'display:none'};
			if(d[1]) a['id'] =3D d[1];
			//~ if(d[2]) a['className'] =3D d[2];
			switch(d[0]){
				case 'a': a['href'] =3D 'javascript:;'; break;
			}
			var el =3D new Element(d[0], a);
			if(d[2]) {
				el.addClassName(d[2]);
			}
			if(Dialogs.Lang[x]) el.update(Dialogs.Lang[x]);
			Dialogs._elements[x] =3D el;
		}

		$(document).observe('dom:loaded', Dialogs._insertElements);
	},

	_insertElements: function()
	{
		if(!!Dialogs._inserted) return;
		Dialogs._inserted =3D=3D true;
		var e =3D Dialogs._elements;
			$(document.body)
			.insert({top: e['overlay']})
			.insert({top: e['container']
				.insert(e['top']
					.insert(e['title'])
					.insert(e['close'])
				)
				.insert(e['content'])
				.insert(e['bottom']
					.insert(e['prev'])
					.insert(e['curr'])
					.insert(e['next'])
				)
			});
		if(Dialogs.Browser.IE6) e['top'].insert(new Element('div', =
{style:'clear:both'}));
	},

	close:function(){
		Dialogs.instance =3D null;
		[Dialogs.elm('title'), Dialogs.elm('content'), =
Dialogs.elm('curr')].invoke('update', '');
		for(var x in Dialogs._elements) =
Dialogs._elements[x].writeAttribute('style', 'display:none');
		Dialogs.elm('container').setStyle('left:-99999px;top:-99999px');
		if(Dialogs.fix.select)
			=
$$('select.dialog-hideselect').invoke('show').invoke('removeClassName', =
'dialog-hideselect');
		Dialogs._open =3D false;
	},
	alert:function(s){
		var o =3D new Element('input', {value:Dialogs.Lang.ok, =
type:'button'}),
		    a =3D new Dialog({
				className:'alert',
				close:{link:false, esc:true},
				padding:20,
				content:function(){
					o.observe('click', Dialogs.close);
					return [s, '<br /><br />', o];
				},
				afterOpen:function(){
					o.focus();
				}
			});
		a.open();
	},
	confirm:function(s, y_call, n_call){
		var y =3D new Element('input', {value:Dialogs.Lang.yes, =
type:'button'}),
		    n =3D new Element('input', {value:Dialogs.Lang.no, =
type:'button'}),
		    c =3D new Dialog({
				className:'confirm',
				close:{link:false},
				padding:20,
				content:function(){
					y.observe('click', function(){
						if(Object.isFunction(y_call)) y_call();
						else Dialogs.close();
					});
					n.observe('click', function(){
						if(Object.isFunction(n_call)) n_call();
						else Dialogs.close();
					});
					return [s, '<br /><br />', y, n];
				},
				afterOpen:function(){
					y.focus();
				}
			});
		c.open();
	}
});
Dialogs.load();
var Dialog =3D Class.create();
Dialog.prototype =3D {
	initialize:function(opt){
		if (! Dialogs._inserted) {
			Dialogs._insertElements();
		}
		this.opt =3D Object.extend(Object.clone(Dialogs.Default), opt || {});
		var c =3D this.opt.content;
		if(Object.isFunction(c))
			Object.extend(this.opt, {content:c()});
		c =3D this.opt.content;
		if(Object.isString(this.opt.target.id) || =
Object.isElement(this.opt.target.id)){
			var b =3D $(this.opt.target.id);
			Object.extend(this.opt, {content:b.innerHTML});
			if(this.opt.target.auto){
				var a =3D /#(.+)$/.exec(window.location);
				if(Object.isArray(a) && Object.isString(a[1])){
					a =3D a[1].split(',').last();
					if(a =3D=3D b.identify()) this.open.bind(this).delay(1);
				}
			}
		}else if(Object.isHash(c))
			this.steps =3D {
				i:0,
				k:c.keys(),
				v:c.values(),
				m:c.size()
			};
		this.attachEvents();
		if(this.opt.autoOpen) this.open();
		Dialogs.instance =3D this;
	},
	exec:function(bool){
		return Dialogs._open =3D=3D this._open && =
Dialogs.elm('overlay').visible() && bool;
	},
	attachEvents:function(){
		Event.observe(window, 'resize', =
this.setDimensions.bindAsEventListener(this));
		if(Dialogs.fix.scroll)
			Event.observe(window, 'scroll', =
this.setScroll.bindAsEventListener(this));
		var handles =3D [];
		if(Object.isElement(this.opt.handle)) =
handles.push($(this.opt.handle));
		else if(Object.isArray(this.opt.handle)) =
this.opt.handle.each(function(handle){ handles.push($(handle)); });
		else if(Object.isString(this.opt.handle)) handles =3D =
$$(this.opt.handle);
		handles.invoke('show').invoke('observe', 'click', function(e){
			e.stop();
			if(Object.isFunction(this.opt.afterClick)) this.opt.afterClick(e);
			this.open();
		}.bindAsEventListener(this));
		Dialogs.elm('close').observe('click', function(){
			if(this.exec(this.opt.close.link)) this.close();
		}.bindAsEventListener(this));
		Dialogs.elm('overlay').observe('click', function(){
			if(this.exec(this.opt.close.overlay)) this.close();
		}.bindAsEventListener(this));
		document.observe('keyup', function(e){
			if(this.exec(this.opt.close.esc && (e.which || e.keyCode) =3D=3D =
Event.KEY_ESC)) this.close();
		}.bindAsEventListener(this));
		if(this.steps){
			[Dialogs.elm('prev'), Dialogs.elm('next')].invoke('observe', 'click', =
this.setSteps.bindAsEventListener(this));
			document.observe('keydown', function(e){
				var c =3D e.which || e.keyCode;
				if(this.exec((c =3D=3D Event.KEY_LEFT) || (c =3D=3D =
Event.KEY_RIGHT))) this.setSteps(e);
			}.bindAsEventListener(this));
		}
	},
	setAuto:function(){
		this.auto =3D {max:0};
		var t =3D Dialogs.elm('title'), c =3D Dialogs.elm('close');
		[t,c].invoke('setStyle', 'float:none');
		$w('top content bottom').each(function(b){
			var e =3D Dialogs.elm(b);
			if(!e.visible()) this.auto[b] =3D {width:0,height:0};
			else{
				e.writeAttribute('style', =
'display:inline;float:left;overflow:visible;white-space:nowrap');
				this.auto[b] =3D e.getDimensions();
				e.writeAttribute('style', 'overflow:hidden');
				if(b =3D=3D 'content') this.auto[b].width +=3D =
(parseInt(this.opt.padding) || 0) * 2;
				if(this.auto[b].width > this.auto.max) this.auto.max =3D =
this.auto[b].width;
			}
		}.bind(this));
		t.setStyle('float:left');
		c.setStyle('float:right');
	},
	setDimensions:function(){
		if(!this.exec(true)) return;
		this.setAuto();
		var a =3D this.auto,
		    d =3D Dialogs.view(),
		    t =3D Dialogs.elm('content'),
			c =3D Dialogs.elm('container'),
		    o =3D {
			  m:((parseInt(this.opt.margin) || 0) * 2),
			  p:((parseInt(this.opt.padding) || 0) * 2),
			  t:a.top.height,
			  b:a.bottom.height
			},
		    m =3D {width:(d.width-o.m), height:(d.height-o.m-o.t-o.b)},
		    h =3D this.opt.height,
			w =3D this.opt.width,
		    x =3D y =3D false;
		if(Object.isNumber(w)) w +=3D o.p;
		if(w =3D=3D 'max') w =3D m.width;
		if(!Object.isNumber(w)) w =3D a.max;
		if(w < (this.opt.minWidth || 0)) w =3D this.opt.minWidth || 0;
		if(w > m.width){ w =3D m.width; x =3D true }
		t.setStyle('width:'+(w-o.p)+'px;height:auto');
		if(Object.isNumber(h)) h +=3D o.p;
		if(h =3D=3D 'max') h =3D m.height;
		if(!Object.isNumber(h)) h =3D t.getHeight()+o.p;
		if(h < (this.opt.minHeight || 0)) w =3D this.opt.minHeight || 0;
		if(h > m.height){ h =3D m.height; y =3D true; }
		t.setStyle('height:'+(h-o.p)+'px;padding:'+(o.p/2)+'px');
		if(this.opt.innerScroll && (x || y)) t.setStyle('overflow:scroll');
		var s =3D {w:w,h:(h+o.t+o.b)};
		=
c.setStyle('width:'+s.w+'px;height:'+s.h+'px;top:50%;left:50%;margin:-'+p=
arseInt(s.h/2)+'px 0 0 -'+parseInt(s.w/2)+'px');
		if(Dialogs.fix.scroll){
			=
Dialogs.elm('overlay').setStyle('width:'+d.width+'px;height:'+d.height+'p=
x');
			this.setScroll();
		}
	},
	setScroll:function(){
		if(!this.exec(true)) return;
		var v =3D Dialogs.view(),
			c =3D Dialogs.elm('container'),
			d =3D c.getDimensions(),
			t =3D v.top + parseInt((v.height - d.height) / 2),
			l =3D v.left + parseInt((v.width - d.width) / 2);
		c.setStyle('margin:0;top:'+t+'px;left:'+l+'px');
		Dialogs.elm('overlay').setStyle('margin:'+v.top+'px 0 0 =
'+v.left+'px');
	},
	setLoad:function(){
		var l =3D Dialogs.elm('loading').show(),
		    t =3D Dialogs.elm('content'),
		    b =3D t.down('#'+l.identify());
		if(!Object.isElement(b)) t.insert(l);
	},
	setAjax:function(){
		this.setLoad();
		var o =3D this.opt.ajax.options || {},
		    c =3D (o.onComplete && Object.isFunction(o.onComplete) ? =
o.onComplete : null),
		    a =3D function(t){
				var tpl =3D this.opt.ajax.jsonTemplate;
				if(t.responseJSON && Object.isString(tpl)) =
Dialogs.elm('content').update(tpl.interpolate(t.responseJSON));
				else Dialogs.elm('content').update(t.responseText || '');
				this.setImages();
				this.setDimensions();
				if(Object.isFunction(c)) c(t);
			}.bind(this);
		Object.extend(o, {onComplete:a});
		new Ajax.Request(this.opt.ajax.url, o);
	},
	setIframe:function(){
		this.setLoad();
		var f =3D new Element('iframe', {src:this.opt.iframe, frameborder:0, =
id:'dialog-iframe'});
		Dialogs.elm('content').insert(f);
		f.observe('load', function(){
			Dialogs.elm('loading').hide();
			f.setStyle('width:100%;height:100%');
			this.setDimensions();
			if(Object.isFunction(this.opt.afterIframeLoad)) =
this.opt.afterIframeLoad.call(this);
		}.bindAsEventListener(this));
	},
	setSteps:function(ev){
		if(!this.exec(true)) return;
		var m =3D this.steps.m,
		    s =3D false,
			n =3D Dialogs.elm('next'),
			p =3D Dialogs.elm('prev');
		if((ev.which || ev.keyCode) =3D=3D Event.KEY_RIGHT || =
ev.element().hasClassName('next')){
			if(this.steps.i < (m - 1)) s =3D true;
			if(s) ++this.steps.i;
			if(((this.steps.i + 1) >=3D m) && n.visible()) n.hide();
			if(((this.steps.i - 1) >=3D 0) && !p.visible()) p.show();
		}else{
			if(this.steps.i > 0) s =3D true;
			if(s) --this.steps.i;
			if(((this.steps.i - 1) < 0) && p.visible()) p.hide();
			if(((this.steps.i + 1) <=3D m) && !n.visible()) n.show();
		}
		if(s) this.setContent();
	},
	setContent:function(){
		var c =3D this.opt.content,
		    t =3D Dialogs.elm('content');
		t.update('');
		if(Object.isString(c) || Object.isElement(c)) t.insert(c);
		else if(Object.isArray(c)) c.each(function(b){ t.insert(b); });
		else if(Object.isHash(c)){
			var b =3D Dialogs.elm('bottom');
			t.update('').insert(this.steps.v[this.steps.i]);
			Dialogs.elm('curr').update(this.steps.k[this.steps.i]);
			if(!b.visible()) b.show().childElements().invoke('show');
			if(this.steps.i <=3D 0) Dialogs.elm('prev').hide();
			if(this.steps.i >=3D (this.steps.m - 1)) Dialogs.elm('next').hide();
		}else if(Object.isString(this.opt.ajax.url)) this.setAjax();
		else if(Object.isString(this.opt.iframe)) this.setIframe();
		this.setImages();
		this.setDimensions.bind(this).defer();
	},
	setImages:function(){
		Dialogs.elm('content').select('img').each(function(el){
			el.onload =3D function(){
				this.setDimensions();
			}.bind(this);
		}.bind(this));
	},
	open:function(){
        if(Object.isFunction(this.opt.beforeOpen)) =
this.opt.beforeOpen();
		if(Dialogs.fix.select)
			$$('select').select(function(el){ return el.visible(); =
}).invoke('hide').invoke('addClassName', 'dialog-hideselect');
		if(Object.isString(this.opt.title) || this.opt.close.link){
			if(Object.isString(this.opt.title)) =
Dialogs.elm('title').show().update(this.opt.title);
			if(this.opt.close.link) Dialogs.elm('close').show();
			else Dialogs.elm('close').hide();
			Dialogs.elm('top').show();
		}else Dialogs.elm('top').hide();
		var o =3D Dialogs.elm('overlay'), c =3D Dialogs.elm('container'), t =
=3D Dialogs.elm('content');
		[o, c, t].invoke('show');
		o.setOpacity(this.opt.opacity || =
1).setStyle({background:this.opt.background[0] || '#000'});
		c.writeAttribute('style', =
'left:-99999px;top:-99999px;background:'+(this.opt.background[1] || =
'#fff'));
		t.writeAttribute('class', this.opt.className || '');
		Dialogs._open =3D new Date().getTime();
		this._open =3D Dialogs._open;
		this.setContent();
		if(Object.isFunction(this.opt.afterOpen)) this.opt.afterOpen();
	},
	close:function(){
		if(Object.isFunction(this.opt.beforeClose)) this.opt.beforeClose();
		Dialogs.close();
		if(Object.isFunction(this.opt.afterClose)) this.opt.afterClose();
	}
};
------=_NextPart_000_0000_01CFE2E5.BBA2CAB0
mime-version: 1.0
content-type: application/octet-stream
content-transfer-encoding: quoted-printable
content-location: http://bookshop.europa.eu/is-bin/intershop.static/WFS/EU-Bookshop-Site/-/en_GB/jscript/eub-webtrends.js

var WTPublication =3D new (
	Class.create({
=09
	NAME			 		: 'WT.pn',
	CATALOGUE_NUMBER 		: 'WT.pn_sku',
	PUBLICATION_FORMAT 		: 'WT.pc',
	BIBLIOGPRAHICAL_TYPE 	: 'WT.pn_sc',
	PUBLICATION_LANGUAGE 	: 'WT.pn_gr',
	PRICING_CONDITION 		: 'WT.pn_id',
	EVENT					: 'WT.tx_e',
	ACTION					: 'WT.dl',
	URI						: 'DCS.dcsuri',
	QUERY					: 'DCS.dcsqry',
	IP						: 'DCS.dcsip',
	EVENT_SOURCE			: 'WT.es',
	EVENT_NAME				: 'WT.ev',
	TITLE					: 'WT.ti',
	SCENARIO				: 'WT.si_n',
	SCENARIO_STEP			: 'WT.si_p',
	CONTENT_GROUP			: 'WT.cg_n',
	CONTENT_SUB_GROUP		: 'WT.cg_s',
	PRICE					: 'WT.tx_s',
	QUANTITY				: 'WT.tx_u',
	FAMILY					: 'WT.pn_fa',
	AUTHORS_1				: 'WT.pn_su_1',
	AUTHORS_2				: 'WT.pn_su_2',
	AUTHORS_3				: 'WT.pn_su_3',
	AUTHORS_4				: 'WT.pn_su_4',
	VISITOR					: 'DCSext.vstr',
=09
	SEPARATOR 				: ';',
	EXPRESSION_TEMPLATE		: new =
Template('input[name=3D#{parameterName}].webtrends-tags'),
	TITLE_TEMPLATE			: new Template('Download for #{number} file #{file}'),
	DOWNLOAD_EVENT_CODE		: 'd',
	DOWNLOAD_ACTION_CODE	: '20',
	OTHER_ACTION_CODE		: '99',
	WEB_ROOT 				: '',
=09
	_getValue : function(context, parameterName) {
		var wtParameter =3D =
$(context).getElementsBySelector(WTPublication.EXPRESSION_TEMPLATE.evalua=
te({parameterName : parameterName}));
		var collection =3D Form.serializeElements(wtParameter, {});
		var parameterValue =3D '';
		for (var e in collection) {
			if (parameterValue.length > 0) {
				parameterValue +=3D WTPublication.SEPARATOR;
			}
			var value =3D collection[e];
			if (Object.isArray(value))
				value =3D value.join(WTPublication.SEPARATOR);
			parameterValue +=3D value;
		}
		return parameterValue;
	},
=09
	/**
	 *	Tracks publication view with small delay. If Webtrends "global" tag =
is not defined tracking request is fired after the page is loaded.
	 */
	view : function(context) {
		if (typeof _tag !=3D 'undefined') {
			WTPublication._view(context);
		} else {
			Behaviour.addLoadEvent(
				function() {
					WTPublication.view(context);
				}
			);
		}
	},
=09
	purchase : function(title, values) {
		if (typeof _tag !=3D 'undefined') {
			WTPublication._purchase(title, values);
		} else {
			Behaviour.addLoadEvent(
				function() {
					WTPublication.purchase(title, values);
				}
			);
		}
	},
=09
	confirmation : function(values) {
		if (typeof _tag !=3D 'undefined') {
			WTPublication._confirmation(values);
		} else {
			Behaviour.addLoadEvent(
				function() {
					WTPublication._confirmation(values);
				}
			);
		}
	},
=09
	_view : function(context) {
		var wtNumber =3D WTPublication._getValue(context, =
WTPublication.CATALOGUE_NUMBER);
		var wtFormat =3D WTPublication._getValue(context, =
WTPublication.PUBLICATION_FORMAT);
		var wtType =3D WTPublication._getValue(context, =
WTPublication.BIBLIOGPRAHICAL_TYPE);
		var wtLanguage =3D WTPublication._getValue(context, =
WTPublication.PUBLICATION_LANGUAGE);
		var wtPricing =3D WTPublication._getValue(context, =
WTPublication.PRICING_CONDITION);
		var wtTitle =3D WTPublication._getValue(context, WTPublication.NAME);
		var wtEventName =3D WTPublication._getValue(context, =
WTPublication.EVENT_NAME);
		var wtEventSource =3D WTPublication._getValue(context, =
WTPublication.EVENT_SOURCE);

		if (wtEventName !=3D '' && wtEventSource !=3D '')
			dcsMultiTrack(
				WTPublication.CATALOGUE_NUMBER,		wtNumber,
				WTPublication.PUBLICATION_FORMAT, 	wtFormat,
				WTPublication.BIBLIOGPRAHICAL_TYPE,	wtType,
				WTPublication.PUBLICATION_LANGUAGE, wtLanguage,
				WTPublication.PRICING_CONDITION,	wtPricing,
				WTPublication.ACTION, 				WTPublication.OTHER_ACTION_CODE,
				WTPublication.EVENT_NAME,			wtEventName,
				WTPublication.EVENT_SOURCE,			wtEventSource,
				WTPublication.NAME,					wtTitle
			);
		else
			dcsMultiTrack(
				WTPublication.CATALOGUE_NUMBER,		wtNumber,
				WTPublication.PUBLICATION_FORMAT, 	wtFormat,
				WTPublication.BIBLIOGPRAHICAL_TYPE,	wtType,
				WTPublication.PUBLICATION_LANGUAGE, wtLanguage,
				WTPublication.PRICING_CONDITION,	wtPricing,
				WTPublication.ACTION, 				WTPublication.OTHER_ACTION_CODE,
				WTPublication.NAME,					wtTitle
			);
	},
=09
	download : function(context, anchor) {
	=09
		var query =3D anchor.parseQuery();
		var uri =3D WTPublication.WEB_ROOT + query.FileName;
		var title =3D =
WTPublication.TITLE_TEMPLATE.evaluate({number:query.CatalogueNumber.lengt=
h > 0 ? query.CatalogueNumber : query.SKU, file:query.FileName});
	=09
		var wtNumber =3D WTPublication._getValue(context, =
WTPublication.CATALOGUE_NUMBER);
		var wtFormat =3D WTPublication._getValue(context, =
WTPublication.PUBLICATION_FORMAT);
		var wtType =3D WTPublication._getValue(context, =
WTPublication.BIBLIOGPRAHICAL_TYPE);
		var wtLanguage =3D WTPublication._getValue(context, =
WTPublication.PUBLICATION_LANGUAGE);
		var wtEventName =3D WTPublication._getValue(context, =
WTPublication.EVENT_NAME);
		var wtEventSource =3D WTPublication._getValue(context, =
WTPublication.EVENT_SOURCE);
		var wtPricing =3D WTPublication._getValue(context, =
WTPublication.PRICING_CONDITION);

		if (wtEventName !=3D '' && wtEventSource !=3D '')
			dcsMultiTrack(
				WTPublication.CATALOGUE_NUMBER,		wtNumber,
				WTPublication.PUBLICATION_FORMAT, 	wtFormat,
				WTPublication.BIBLIOGPRAHICAL_TYPE,	wtType,
				WTPublication.PUBLICATION_LANGUAGE, wtLanguage,
				WTPublication.PRICING_CONDITION,	wtPricing,
				WTPublication.EVENT, 				WTPublication.DOWNLOAD_EVENT_CODE,
				WTPublication.ACTION, 				WTPublication.DOWNLOAD_ACTION_CODE,
				WTPublication.EVENT_NAME,			wtEventName,
				WTPublication.EVENT_SOURCE,			wtEventSource,
				WTPublication.URI,					uri,
				WTPublication.TITLE,				title
			);
		else
			dcsMultiTrack(
				WTPublication.CATALOGUE_NUMBER,		wtNumber,
				WTPublication.PUBLICATION_FORMAT, 	wtFormat,
				WTPublication.BIBLIOGPRAHICAL_TYPE,	wtType,
				WTPublication.PUBLICATION_LANGUAGE, wtLanguage,
				WTPublication.PRICING_CONDITION,	wtPricing,
				WTPublication.EVENT, 				WTPublication.DOWNLOAD_EVENT_CODE,
				WTPublication.ACTION, 				WTPublication.DOWNLOAD_ACTION_CODE,
				WTPublication.URI,					uri,
				WTPublication.TITLE,				title
			);
	},
=09
	file : function(url) {
		window.location =3D url;
	},
=09
	_purchase : function(title, values) {
=09
		values =3D new Hash(values);
		var wtName =3D values.get(WTPublication.NAME);
		var wtNumber =3D values.get(WTPublication.CATALOGUE_NUMBER);
		var wtFormat =3D values.get(WTPublication.PUBLICATION_FORMAT);
		var wtType =3D values.get(WTPublication.BIBLIOGPRAHICAL_TYPE);
		var wtLanguage =3D values.get(WTPublication.PUBLICATION_LANGUAGE);
		var wtPricing =3D values.get(WTPublication.PRICING_CONDITION);
		var wtEventCode =3D values.get(WTPublication.EVENT);
		var wtScenario =3D values.get(WTPublication.SCENARIO);
		var wtScenarioStep =3D values.get(WTPublication.SCENARIO_STEP);
		var wtPrice =3D values.get(WTPublication.PRICE);
		var wtQuantity =3D values.get(WTPublication.QUANTITY);
		var wtIP =3D values.get(WTPublication.IP);
		var wt1stLevelOfAuthors =3D values.get(WTPublication.AUTHORS_1);
		var wt2ndLevelOfAuthors =3D values.get(WTPublication.AUTHORS_2);
		var wt3rdLevelOfAuthors =3D values.get(WTPublication.AUTHORS_3);
		var wt4thLevelOfAuthors =3D values.get(WTPublication.AUTHORS_4);
	=09
		dcsMultiTrack(
			WTPublication.AUTHORS_1,			wt1stLevelOfAuthors,
			WTPublication.AUTHORS_2,			wt2ndLevelOfAuthors,
			WTPublication.AUTHORS_3,			wt3rdLevelOfAuthors,
			WTPublication.AUTHORS_4,			wt4thLevelOfAuthors,
			WTPublication.NAME,					wtName,
			WTPublication.CATALOGUE_NUMBER,		wtNumber,
			WTPublication.PUBLICATION_FORMAT, 	wtFormat,
			WTPublication.BIBLIOGPRAHICAL_TYPE,	wtType,
			WTPublication.PUBLICATION_LANGUAGE, wtLanguage,
			WTPublication.PRICING_CONDITION,	wtPricing,
			WTPublication.EVENT, 				wtEventCode,
			WTPublication.SCENARIO,				wtScenario,
			WTPublication.SCENARIO_STEP,		wtScenarioStep,
			WTPublication.PRICE,				wtPrice,
			WTPublication.QUANTITY,				wtQuantity,
			WTPublication.CONTENT_SUB_GROUP,	'',
			WTPublication.CONTENT_GROUP,		'',
			WTPublication.IP,					wtIP,
			WTPublication.TITLE,				title
		);
	},
=09
	_confirmation : function(values) {
=09
		values =3D new Hash(values);
		var wtName =3D values.get(WTPublication.NAME);
		var wtNumber =3D values.get(WTPublication.CATALOGUE_NUMBER);
		var wtFormat =3D values.get(WTPublication.PUBLICATION_FORMAT);
		var wtType =3D values.get(WTPublication.BIBLIOGPRAHICAL_TYPE);
		var wtLanguage =3D values.get(WTPublication.PUBLICATION_LANGUAGE);
		var wtPricing =3D values.get(WTPublication.PRICING_CONDITION);
		var wtPrice =3D values.get(WTPublication.PRICE);
		var wtQuantity =3D values.get(WTPublication.QUANTITY);
		var wt1stLevelOfAuthors =3D values.get(WTPublication.AUTHORS_1);
		var wt2ndLevelOfAuthors =3D values.get(WTPublication.AUTHORS_2);
		var wt3rdLevelOfAuthors =3D values.get(WTPublication.AUTHORS_3);
		var wt4thLevelOfAuthors =3D values.get(WTPublication.AUTHORS_4);
		var wtVisitor =3D values.get(WTPublication.VISITOR);
	=09
		dcsMultiTrack(
			WTPublication.VISITOR,				wtVisitor,
			WTPublication.AUTHORS_1,			wt1stLevelOfAuthors,
			WTPublication.AUTHORS_2,			wt2ndLevelOfAuthors,
			WTPublication.AUTHORS_3,			wt3rdLevelOfAuthors,
			WTPublication.AUTHORS_4,			wt4thLevelOfAuthors,
			WTPublication.NAME,					wtName,
			WTPublication.CATALOGUE_NUMBER,		wtNumber,
			WTPublication.PUBLICATION_FORMAT, 	wtFormat,
			WTPublication.BIBLIOGPRAHICAL_TYPE,	wtType,
			WTPublication.PUBLICATION_LANGUAGE, wtLanguage,
			WTPublication.PRICING_CONDITION,	wtPricing,
			WTPublication.PRICE,				wtPrice,
			WTPublication.QUANTITY,				wtQuantity
		);
	}
})
) ();
------=_NextPart_000_0000_01CFE2E5.BBA2CAB0--
