From: Subject: Eventi Date: Thu, 21 Oct 2010 13:47:12 +0200 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_01D8_01CB7126.76FC8E30" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5931 This is a multi-part message in MIME format. ------=_NextPart_000_01D8_01CB7126.76FC8E30 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://aurum.comune.pescara.it/eventi.php?id=142 Eventi
  • home
  • storia
  • eventi
  • galleria
  • contatti
  • spazi

Eventi in programma

dal 23-10-2010 al 24-10-2010
TERZO = FESTIVAL=20 MEDITERRANEO DELLA LAICITA=92
La terza edizione del = Festival=20 Mediterraneo della Laicit=E0 propone il tema della Laicit=E0 a confronto = e in=20 rapporto alla Spiritualit=E0, due dimensioni culturali, esistenziali e = filosofiche=20 che nel luogo comune sono in contrapposizione. Con: Mostafa El Ayoubi,=20 Alessandra Ciattini, Giovanni Franzoni, Chiara Lalli, Filippo La Porta, = Giacomo=20 Marramao, Marco Pannella, Marco Politi, Luigi Lombardi Vallauri, Antonio = Zimarino. Coordina Gabriella Caramore.

dal 19-10-2010 al 19-12-2010
BIENNALE = HABITAT=20 2010
Organizzata da Associazione HabitatLAB Onlus di = Pescara=20 Ordine degli Architetti di Pescara Patrocinio di Presidenza del = Consiglio=20 Regionale, Province di Pescara, L=92Aquila, Chieti e Teramo, Comune di = Pescara=20

dal 14-10-2010 al 23-11-2010
DANTE E=20 L'ANTIPURGATORIO
Mostra di Pittura organizzata da = Fondazione=20 Casa di Dante in Abruzzo - Comune di Pescara - Regione = Abruzzo

dal 10-10-2010 al 03-11-2010
PROTAGONISTI = DEL=20 CONTEMPORANEO
Rassegna d'Arte Internazionale = organizzata da=20 Ass.to alla Cultura Comune di Pescara - Fondazione Michetti

Evento

dal 23-10-2010 al 24-10-2010

TERZO FESTIVAL MEDITERRANEO DELLA LAICITA=92

"La terza edizione del Festival Mediterraneo della Laicit=E0 = propone il=20 tema della Laicit=E0 a confronto e in rapporto alla Spiritualit=E0, due = dimensioni=20 culturali, esistenziali e filosofiche che nel luogo comune sono in=20 contrapposizione. Con: Mostafa El Ayoubi, Alessandra Ciattini, Giovanni=20 Franzoni, Chiara Lalli, Filippo La Porta, Giacomo Marramao, Marco = Pannella,=20 Marco Politi, Luigi Lombardi Vallauri, Antonio Zimarino. Coordina = Gabriella=20 Caramore. "

Ex=20 Aurum Pescara
 
La terza=20 edizione del Festival Mediterraneo della Laicit=E0 propone il tema della = Laicit=E0 a=20 confronto e in rapporto alla Spiritualit=E0, due dimensioni culturali,=20 esistenziali e filosofiche che nel luogo comune sono in = contrapposizione. E=92=20 possibile un ponte per confrontarsi ed aprirsi alla possibilit=E0 di = punti di=20 contatto per offrire uno spazio di riflessione e di ricerca? Vorremmo,=20 attraverso questa proposta, dare un segnale che contribuisca a = modificare=20 attitudini mentali e comportamentali che vedono nel nostro Paese una = netta ed=20 irriducibile alternativa tra laicit=E0 e spiritualit=E0.
 
Con:=20 Mostafa El Ayoubi, Alessandra Ciattini, Giovanni Franzoni, Chiara Lalli, = Filippo=20 La Porta, Giacomo Marramao, Marco Pannella, Marco Politi, Luigi Lombardi = Vallauri, Antonio Zimarino. Coordina Gabriella Caramore.
 
Iscriviti <= /DIV>
sabato 23 = e domenica=20 24 ottobre 2010 - Pescara, ex Aurum
Direttore=20 scientifico
 
Giacomo=20 MARRAMAO
 
Vicedirettore=20 scientifico,
 
Cinzia=20 DATO
 
Coordinatrice=20 organizzativa,
 
Silvana=20 Prosperi
 
Comitato = organizzativo:
 
Muni CYTRON,=20
 
Fausto=20 BELLANTE,
 
Michele=20 MEOMARTINO,
 
Paolo VISCI,=20
 
Gretje VAN=20 DEER
 

 

PROGRAMMA

 
Sabato =20 23   
LAICITA=92 e=20 SPIRITUALITA=92
ore = 16.30 /=20 17.30
Un approccio=20 laico alle culture
 
Alessandra=20 CIATTINI    
Letture    
 
ore = 17.30 /=20 18.30
Dante ed=20 un=92etica per il terzo millennio
 
Filippo = LA=20 PORTA
Letture  =20
 
ore = 19.00 / =20 20.00
Laicit=E0,=20 spiritualit=E0, religiosit=E0
Marco = PANNELLA e Marco=20 POLITI
 
Domenica = 24 =20
Spiritualit=E0 laica=20
ore = 10.30 /=20 11.30
 
Laicit=E0 del=20 crocifisso?
Chiara=20 LALLI
 
Letture     
 
ore = 11.30 /=20 12.30
 
Concetto e=20 pratica di mistica laica
Luigi = LOMBARDI=20 VALLAURI
 
Letture     
 
ore = 17.00 /=20 19.00
 
Letture      
Tavola=20 Rotonda
Arte,cultura e=20 religione nel mondo globalizzato
Mostafa  EL =20 AYOUBI, Giovanni FRANZONI , Giacomo MARRAMAO, Antonio ZIMARINO. Coordina = Gabriella CARAMORE
 
ore = 19.00 =20
Assegnazione=20 del Premio =93LAICI  PER IL MEDITERRANEO=94
 
:::
 
Sezione=20 Artistica 
a cura = di Antongiulio=20 Zimarino
 
Unbroken=20 beat of Soul
Ininterrotto=20 battito d=92Anima 
Video = arte=20 contemporanea internazionale
per il = Terzo festival=20 mediterraneo della laicit=E0
15 - 24 = ottobre - Ex=20 Aurum Pescara
ore 9.30 / 13.30;=20 15.30 / 19.30
 

Copyright 2007 ex Aurum | xHTML | CSS | Credits: Sara Taricani |=20

- ------=_NextPart_000_01D8_01CB7126.76FC8E30 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://aurum.comune.pescara.it/css/aurum.css BODY { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } A { COLOR: #000; TEXT-DECORATION: none } A:hover { TEXT-DECORATION: none } H1 { FONT-FAMILY: Georgia; FONT-SIZE: 14px; FONT-WEIGHT: bold } H3 { FONT-FAMILY: Verdana, Geneva, Arial, Helvetica, sans-serif; FONT-SIZE: = 11px; FONT-WEIGHT: normal } H4 { FONT-FAMILY: Verdana, Geneva, Arial, Helvetica, sans-serif; FONT-SIZE: = 10px; FONT-WEIGHT: normal } H5 { FONT-FAMILY: Verdana, Geneva, Arial, Helvetica, sans-serif; COLOR: = #000; FONT-SIZE: 10px; FONT-WEIGHT: normal } #container { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MARGIN: 0px auto; = MIN-HEIGHT: 750px; PADDING-LEFT: 0px; WIDTH: 628px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } #content { PADDING-BOTTOM: 0px; MIN-HEIGHT: 750px; PADDING-LEFT: 0px; WIDTH: = 628px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } #header { BACKGROUND-IMAGE: url(../img/header.gif); PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 627px; PADDING-RIGHT: 0px; = BACKGROUND-REPEAT: no-repeat; FLOAT: left; HEIGHT: 85px; PADDING-TOP: = 0px } #logo { BACKGROUND-IMAGE: url(../img/logo.gif); PADDING-BOTTOM: 0px; MARGIN: = 20px 0px 0px 540px; PADDING-LEFT: 0px; WIDTH: 50px; PADDING-RIGHT: 0px; = FLOAT: left; HEIGHT: 60px; PADDING-TOP: 0px } #logo UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; TEXT-INDENT: -9999px; = MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: = none; PADDING-TOP: 0px } #logo UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #Logo A { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 50px; = PADDING-RIGHT: 0px; DISPLAY: block; HEIGHT: 60px; PADDING-TOP: 0px } #image { BACKGROUND-IMAGE: url(../img/image.jpg); PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 627px; PADDING-RIGHT: 0px; FLOAT: left; = HEIGHT: 290px; PADDING-TOP: 0px } #image2 { BACKGROUND-IMAGE: url(../img/image2.jpg); PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 627px; PADDING-RIGHT: 0px; FLOAT: left; = HEIGHT: 290px; PADDING-TOP: 0px } #image3 { BACKGROUND-IMAGE: url(../img/image3.jpg); PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 627px; PADDING-RIGHT: 0px; FLOAT: left; = HEIGHT: 290px; PADDING-TOP: 0px } #image4 { BACKGROUND-IMAGE: url(../img/image4.jpg); PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 627px; PADDING-RIGHT: 0px; FLOAT: left; = HEIGHT: 290px; PADDING-TOP: 0px } #image5 { BACKGROUND-IMAGE: url(../img/image5.jpg); PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 627px; PADDING-RIGHT: 0px; FLOAT: left; = HEIGHT: 290px; PADDING-TOP: 0px } #menu { BACKGROUND-IMAGE: url(../img/menu9.gif); PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 627px; PADDING-RIGHT: 0px; = BACKGROUND-REPEAT: no-repeat; FLOAT: left; HEIGHT: 40px; PADDING-TOP: = 0px } #menu UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #menu UL LI { LIST-STYLE-TYPE: none; TEXT-INDENT: -9999px; DISPLAY: inline; FLOAT: = left; LIST-STYLE-IMAGE: none } #home A { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 101px; = PADDING-RIGHT: 0px; DISPLAY: block; HEIGHT: 40px; PADDING-TOP: 0px } #home A:hover { BACKGROUND: url(../img/menu9.gif) 0px -40px } #storia A { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 105px; = PADDING-RIGHT: 0px; DISPLAY: block; HEIGHT: 40px; PADDING-TOP: 0px } #storia A:hover { BACKGROUND: url(../img/menu9.gif) -101px -40px } #eventi A { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 105px; = PADDING-RIGHT: 0px; DISPLAY: block; HEIGHT: 40px; PADDING-TOP: 0px } #eventi A:hover { BACKGROUND: url(../img/menu9.gif) -206px -40px } #galleria A { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 105px; = PADDING-RIGHT: 0px; DISPLAY: block; HEIGHT: 40px; PADDING-TOP: 0px } #galleria A:hover { BACKGROUND: url(../img/menu9.gif) -311px -40px } #contatti A { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 105px; = PADDING-RIGHT: 0px; DISPLAY: block; HEIGHT: 40px; PADDING-TOP: 0px } #contatti A:hover { BACKGROUND: url(../img/menu9.gif) -416px -40px } #spazi A { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 104px; = PADDING-RIGHT: 0px; DISPLAY: block; HEIGHT: 40px; PADDING-TOP: 0px } #spazi A:hover { BACKGROUND: url(../img/menu9.gif) -519px -40px } #text { BACKGROUND-IMAGE: url(../img/body.gif); PADDING-BOTTOM: 0px; MARGIN: = 0px; MIN-HEIGHT: 300px; PADDING-LEFT: 0px; WIDTH: 626px; PADDING-RIGHT: = 0px; BACKGROUND-REPEAT: repeat-y; FLOAT: left; PADDING-TOP: 0px } #news { PADDING-BOTTOM: 5px !important; MARGIN: 0px; PADDING-LEFT: 20px = !important; WIDTH: 205px; PADDING-RIGHT: 0px !important; FLOAT: left; = HEIGHT: 302px; PADDING-TOP: 15px !important } #news A:hover { COLOR: #808080; TEXT-DECORATION: underline } #prima { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px; MIN-HEIGHT: 20px; = PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #seconda { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px; MIN-HEIGHT: 40px; = PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #terza { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px; MIN-HEIGHT: 40px; = PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #leggi { MARGIN: 0px 0px 0px 130px; WIDTH: 80px; FLOAT: left; HEIGHT: 30px } .puls { BORDER-BOTTOM: #000 3px solid; BORDER-LEFT: #000 3px solid; = BACKGROUND-COLOR: #000; MARGIN: 0px 1px 0px 0px; WIDTH: 30px; = FONT-FAMILY: Verdana, Geneva, Arial, Helvetica, sans-serif; HEIGHT: = 30px; COLOR: #fff; FONT-SIZE: 11px; BORDER-TOP: #000 3px solid; = BORDER-RIGHT: #000 3px solid; TEXT-DECORATION: none } #intro { TEXT-ALIGN: justify; PADDING-BOTTOM: 5px !important; MARGIN: 0px; = MIN-HEIGHT: 200px; PADDING-LEFT: 10px !important; WIDTH: 370px; = PADDING-RIGHT: 20px !important; FLOAT: right; PADDING-TOP: 15px = !important } #intro3 { TEXT-ALIGN: justify; PADDING-BOTTOM: 5px !important; MARGIN: 0px 0px = 0px 20px; MIN-HEIGHT: 200px; PADDING-LEFT: 10px !important; WIDTH: = 260px; PADDING-RIGHT: 20px !important; FLOAT: right; PADDING-TOP: 15px = !important } #intro2 { TEXT-ALIGN: justify; PADDING-BOTTOM: 5px !important; MARGIN: 0px; = MIN-HEIGHT: 200px; PADDING-LEFT: 10px !important; WIDTH: 300px; = PADDING-RIGHT: 20px !important; FLOAT: right; PADDING-TOP: 15px = !important } #scorri { MARGIN: 0px 0px 0px 330px; WIDTH: 30px; FLOAT: left; HEIGHT: 30px } #scorri2 { MARGIN: 4px 0px 0px 275px; WIDTH: 70px; FLOAT: left; HEIGHT: 30px } #scorri3 { MARGIN: 4px 0px 0px 330px; WIDTH: 70px; FLOAT: left; HEIGHT: 30px } #footer { BACKGROUND-IMAGE: url(../img/footer1.gif); TEXT-ALIGN: center; = PADDING-BOTTOM: 0px; MARGIN: 2px 0px 0px; PADDING-LEFT: 0px; WIDTH: = 627px; PADDING-RIGHT: 0px; BACKGROUND-REPEAT: no-repeat; FLOAT: left; = HEIGHT: 40px; COLOR: #fff; PADDING-TOP: 0px } #intro2 IMG { BORDER-BOTTOM: #000 5px solid; BORDER-LEFT: #000 5px solid; = PADDING-BOTTOM: 0px; MARGIN: 0px 2px 2px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #000 5px solid; = BORDER-RIGHT: #000 5px solid; PADDING-TOP: 0px } #intro2 A:hover IMG { BORDER-BOTTOM: #e2e0c0 5px solid; BORDER-LEFT: #e2e0c0 5px solid; = BORDER-TOP: #e2e0c0 5px solid; BORDER-RIGHT: #e2e0c0 5px solid } #intro IMG { BORDER-BOTTOM: #000 5px solid; BORDER-LEFT: #000 5px solid; = PADDING-BOTTOM: 0px; MARGIN: 0px 2px 2px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #000 5px solid; = BORDER-RIGHT: #000 5px solid; PADDING-TOP: 0px } #intro A:hover IMG { BORDER-BOTTOM: #e2e0c0 5px solid; BORDER-LEFT: #e2e0c0 5px solid; = BORDER-TOP: #e2e0c0 5px solid; BORDER-RIGHT: #e2e0c0 5px solid } #footer A { COLOR: #fff; TEXT-DECORATION: none } #footer A:hover { COLOR: #e2e0c0 } #footer H4 { MARGIN: 10px; COLOR: #fff; FONT-SIZE: 10px; FONT-WEIGHT: bolder } .Stile1 { COLOR: #ffffff } #evento { TEXT-ALIGN: left; PADDING-BOTTOM: 5px !important; MARGIN: 0px; = MIN-HEIGHT: 200px; PADDING-LEFT: 10px !important; WIDTH: 368px; = PADDING-RIGHT: 20px !important; FLOAT: right; PADDING-TOP: 15px = !important } #evento IMG { BORDER-BOTTOM: #000 5px solid; BORDER-LEFT: #000 5px solid; = PADDING-BOTTOM: 0px; MARGIN: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = BORDER-TOP: #000 5px solid; BORDER-RIGHT: #000 5px solid; PADDING-TOP: = 0px } #evento A { COLOR: #808080 } #evento A:hover { COLOR: #000000; TEXT-DECORATION: underline } #evento A:hover IMG { BORDER-BOTTOM: #e2e0c0 5px solid; BORDER-LEFT: #e2e0c0 5px solid; = BORDER-TOP: #e2e0c0 5px solid; BORDER-RIGHT: #e2e0c0 5px solid } ------=_NextPart_000_01D8_01CB7126.76FC8E30 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://aurum.comune.pescara.it/css/lightbox.css #lightbox { Z-INDEX: 100; POSITION: absolute; TEXT-ALIGN: center; LINE-HEIGHT: 0; = WIDTH: 100%; LEFT: 0px } #lightbox A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: = medium none; BORDER-RIGHT: medium none } #outerImageContainer { POSITION: relative; BACKGROUND-COLOR: #fff; MARGIN: 0px auto; WIDTH: = 250px; HEIGHT: 250px } #imageContainer { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; = PADDING-TOP: 10px } #loading { POSITION: absolute; TEXT-ALIGN: center; LINE-HEIGHT: 0; WIDTH: 100%; = HEIGHT: 25%; TOP: 40%; LEFT: 0% } #hoverNav { Z-INDEX: 10; POSITION: absolute; WIDTH: 100%; HEIGHT: 100%; TOP: 0px; = LEFT: 0px } #imageContainer > #hoverNav { LEFT: 0px } #hoverNav A { OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: medium } #prevLink { WIDTH: 49%; DISPLAY: block; BACKGROUND: url(../images/blank.gif) = no-repeat; HEIGHT: 100% } #nextLink { WIDTH: 49%; DISPLAY: block; BACKGROUND: url(../images/blank.gif) = no-repeat; HEIGHT: 100% } #prevLink { FLOAT: left; LEFT: 0px } #nextLink { FLOAT: right; RIGHT: 0px } #prevLink:hover { BACKGROUND: url(../images/prevlabel.gif) no-repeat left 15% } #prevLink:hover:visited { BACKGROUND: url(../images/prevlabel.gif) no-repeat left 15% } #nextLink:hover { BACKGROUND: url(../images/nextlabel.gif) no-repeat right 15% } #nextLink:hover:visited { BACKGROUND: url(../images/nextlabel.gif) no-repeat right 15% } #imageDataContainer { BACKGROUND-COLOR: #fff; MARGIN: 0px auto; WIDTH: 100%; FONT: 10px/1.4em = Verdana, Helvetica, sans-serif; OVERFLOW: auto } #imageData { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; COLOR: = #666; PADDING-TOP: 0px } #imageData #imageDetails { TEXT-ALIGN: left; WIDTH: 70%; FLOAT: left } #imageData #caption { FONT-WEIGHT: bold } #imageData #numberDisplay { PADDING-BOTTOM: 1em; DISPLAY: block; CLEAR: left } #imageData #bottomNavClose { PADDING-BOTTOM: 0.7em; WIDTH: 66px; FLOAT: right } #overlay { Z-INDEX: 90; POSITION: absolute; BACKGROUND-COLOR: #000; WIDTH: 100%; = HEIGHT: 500px; TOP: 0px; LEFT: 0px } ------=_NextPart_000_01D8_01CB7126.76FC8E30 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://aurum.comune.pescara.it/js/prototype.js /* Prototype JavaScript framework, version 1.4.0=0A= * (c) 2005 Sam Stephenson =0A= *=0A= * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please = diff=0A= * against the source tree, available from the Prototype darcs = repository.=0A= *=0A= * Prototype is freely distributable under the terms of an MIT-style = license.=0A= *=0A= * For details, see the Prototype web site: http://prototype.conio.net/=0A= *=0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Prototype =3D {=0A= Version: '1.4.0',=0A= ScriptFragment: '(?:)((\n|\r|.)*?)(?:<\/script>)',=0A= =0A= emptyFunction: function() {},=0A= K: function(x) {return x}=0A= }=0A= =0A= var Class =3D {=0A= create: function() {=0A= return function() {=0A= this.initialize.apply(this, arguments);=0A= }=0A= }=0A= }=0A= =0A= var Abstract =3D new Object();=0A= =0A= Object.extend =3D function(destination, source) {=0A= for (property in source) {=0A= destination[property] =3D source[property];=0A= }=0A= return destination;=0A= }=0A= =0A= Object.inspect =3D function(object) {=0A= try {=0A= if (object =3D=3D undefined) return 'undefined';=0A= if (object =3D=3D null) return 'null';=0A= return object.inspect ? object.inspect() : object.toString();=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=0A= }=0A= =0A= Function.prototype.bind =3D function() {=0A= var __method =3D this, args =3D $A(arguments), object =3D args.shift();=0A= return function() {=0A= return __method.apply(object, args.concat($A(arguments)));=0A= }=0A= }=0A= =0A= Function.prototype.bindAsEventListener =3D function(object) {=0A= var __method =3D this;=0A= return function(event) {=0A= return __method.call(object, event || window.event);=0A= }=0A= }=0A= =0A= Object.extend(Number.prototype, {=0A= toColorPart: function() {=0A= var digits =3D this.toString(16);=0A= if (this < 16) return '0' + digits;=0A= return digits;=0A= },=0A= =0A= succ: function() {=0A= return this + 1;=0A= },=0A= =0A= times: function(iterator) {=0A= $R(0, this, true).each(iterator);=0A= return this;=0A= }=0A= });=0A= =0A= var Try =3D {=0A= these: function() {=0A= var returnValue;=0A= =0A= for (var i =3D 0; i < arguments.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= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var PeriodicalExecuter =3D Class.create();=0A= PeriodicalExecuter.prototype =3D {=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= setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);=0A= },=0A= =0A= onTimerEvent: function() {=0A= if (!this.currentlyExecuting) {=0A= try {=0A= this.currentlyExecuting =3D true;=0A= this.callback();=0A= } finally {=0A= this.currentlyExecuting =3D false;=0A= }=0A= }=0A= }=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= function $() {=0A= var elements =3D new Array();=0A= =0A= for (var i =3D 0; i < arguments.length; i++) {=0A= var element =3D arguments[i];=0A= if (typeof element =3D=3D 'string')=0A= element =3D document.getElementById(element);=0A= =0A= if (arguments.length =3D=3D 1)=0A= return element;=0A= =0A= elements.push(element);=0A= }=0A= =0A= return elements;=0A= }=0A= Object.extend(String.prototype, {=0A= stripTags: function() {=0A= return this.replace(/<\/?[^>]+>/gi, '');=0A= },=0A= =0A= stripScripts: function() {=0A= return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A= },=0A= =0A= extractScripts: function() {=0A= var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A= var 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= evalScripts: function() {=0A= return this.extractScripts().map(eval);=0A= },=0A= =0A= escapeHTML: function() {=0A= var div =3D document.createElement('div');=0A= var text =3D document.createTextNode(this);=0A= div.appendChild(text);=0A= return div.innerHTML;=0A= },=0A= =0A= unescapeHTML: function() {=0A= var div =3D document.createElement('div');=0A= div.innerHTML =3D this.stripTags();=0A= return div.childNodes[0] ? div.childNodes[0].nodeValue : '';=0A= },=0A= =0A= toQueryParams: function() {=0A= var pairs =3D this.match(/^\??(.*)$/)[1].split('&');=0A= return pairs.inject({}, function(params, pairString) {=0A= var pair =3D pairString.split('=3D');=0A= params[pair[0]] =3D pair[1];=0A= return params;=0A= });=0A= },=0A= =0A= toArray: function() {=0A= return this.split('');=0A= },=0A= =0A= camelize: function() {=0A= var oStringList =3D this.split('-');=0A= if (oStringList.length =3D=3D 1) return oStringList[0];=0A= =0A= var camelizedString =3D this.indexOf('-') =3D=3D 0=0A= ? oStringList[0].charAt(0).toUpperCase() + = oStringList[0].substring(1)=0A= : oStringList[0];=0A= =0A= for (var i =3D 1, len =3D oStringList.length; i < len; i++) {=0A= var s =3D oStringList[i];=0A= camelizedString +=3D s.charAt(0).toUpperCase() + s.substring(1);=0A= }=0A= =0A= return camelizedString;=0A= },=0A= =0A= inspect: function() {=0A= return "'" + this.replace('\\', '\\\\').replace("'", '\\\'') + "'";=0A= }=0A= });=0A= =0A= String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A= =0A= var $break =3D new Object();=0A= var $continue =3D new Object();=0A= =0A= var Enumerable =3D {=0A= each: function(iterator) {=0A= var index =3D 0;=0A= try {=0A= this._each(function(value) {=0A= try {=0A= iterator(value, index++);=0A= } catch (e) {=0A= if (e !=3D $continue) throw e;=0A= }=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= },=0A= =0A= all: function(iterator) {=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!(iterator || Prototype.K)(value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= any: function(iterator) {=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= if (result =3D !!(iterator || Prototype.K)(value, index))=0A= throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= collect: function(iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(iterator(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= detect: function (iterator) {=0A= var result;=0A= this.each(function(value, index) {=0A= if (iterator(value, index)) {=0A= result =3D value;=0A= throw $break;=0A= }=0A= });=0A= return result;=0A= },=0A= =0A= findAll: function(iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= grep: function(pattern, iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= var stringValue =3D value.toString();=0A= if (stringValue.match(pattern))=0A= results.push((iterator || Prototype.K)(value, index));=0A= })=0A= return results;=0A= },=0A= =0A= include: function(object) {=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= inject: function(memo, iterator) {=0A= this.each(function(value, index) {=0A= memo =3D iterator(memo, value, index);=0A= });=0A= return memo;=0A= },=0A= =0A= invoke: function(method) {=0A= var args =3D $A(arguments).slice(1);=0A= return this.collect(function(value) {=0A= return value[method].apply(value, args);=0A= });=0A= },=0A= =0A= max: function(iterator) {=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D (iterator || Prototype.K)(value, index);=0A= if (value >=3D (result || value))=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= min: function(iterator) {=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D (iterator || Prototype.K)(value, index);=0A= if (value <=3D (result || value))=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= partition: function(iterator) {=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= ((iterator || Prototype.K)(value, index) ?=0A= trues : falses).push(value);=0A= });=0A= return [trues, falses];=0A= },=0A= =0A= pluck: function(property) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(value[property]);=0A= });=0A= return results;=0A= },=0A= =0A= reject: function(iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (!iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= sortBy: function(iterator) {=0A= return this.collect(function(value, index) {=0A= return {value: value, criteria: iterator(value, index)};=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= toArray: function() {=0A= return this.collect(Prototype.K);=0A= },=0A= =0A= zip: function() {=0A= var iterator =3D Prototype.K, args =3D $A(arguments);=0A= if (typeof args.last() =3D=3D 'function')=0A= iterator =3D args.pop();=0A= =0A= var collections =3D [this].concat(args).map($A);=0A= return this.map(function(value, index) {=0A= iterator(value =3D collections.pluck(index));=0A= return value;=0A= });=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= }=0A= }=0A= =0A= Object.extend(Enumerable, {=0A= map: Enumerable.collect,=0A= find: Enumerable.detect,=0A= select: Enumerable.findAll,=0A= member: Enumerable.include,=0A= entries: Enumerable.toArray=0A= });=0A= var $A =3D Array.from =3D function(iterable) {=0A= if (!iterable) return [];=0A= if (iterable.toArray) {=0A= return iterable.toArray();=0A= } else {=0A= var results =3D [];=0A= for (var i =3D 0; i < iterable.length; i++)=0A= results.push(iterable[i]);=0A= return results;=0A= }=0A= }=0A= =0A= Object.extend(Array.prototype, Enumerable);=0A= =0A= Array.prototype._reverse =3D Array.prototype.reverse;=0A= =0A= Object.extend(Array.prototype, {=0A= _each: function(iterator) {=0A= for (var i =3D 0; i < this.length; i++)=0A= iterator(this[i]);=0A= },=0A= =0A= clear: function() {=0A= this.length =3D 0;=0A= return this;=0A= },=0A= =0A= first: function() {=0A= return this[0];=0A= },=0A= =0A= last: function() {=0A= return this[this.length - 1];=0A= },=0A= =0A= compact: function() {=0A= return this.select(function(value) {=0A= return value !=3D undefined || value !=3D null;=0A= });=0A= },=0A= =0A= flatten: function() {=0A= return this.inject([], function(array, value) {=0A= return array.concat(value.constructor =3D=3D Array ?=0A= value.flatten() : [value]);=0A= });=0A= },=0A= =0A= without: function() {=0A= var values =3D $A(arguments);=0A= return this.select(function(value) {=0A= return !values.include(value);=0A= });=0A= },=0A= =0A= indexOf: function(object) {=0A= for (var i =3D 0; i < this.length; i++)=0A= if (this[i] =3D=3D object) return i;=0A= return -1;=0A= },=0A= =0A= reverse: function(inline) {=0A= return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A= },=0A= =0A= shift: function() {=0A= var result =3D this[0];=0A= for (var i =3D 0; i < this.length - 1; i++)=0A= this[i] =3D this[i + 1];=0A= this.length--;=0A= return result;=0A= },=0A= =0A= inspect: function() {=0A= return '[' + this.map(Object.inspect).join(', ') + ']';=0A= }=0A= });=0A= var Hash =3D {=0A= _each: function(iterator) {=0A= for (key in this) {=0A= var value =3D this[key];=0A= if (typeof value =3D=3D 'function') continue;=0A= =0A= var pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= },=0A= =0A= keys: function() {=0A= return this.pluck('key');=0A= },=0A= =0A= values: function() {=0A= return this.pluck('value');=0A= },=0A= =0A= merge: function(hash) {=0A= return $H(hash).inject($H(this), function(mergedHash, pair) {=0A= mergedHash[pair.key] =3D pair.value;=0A= return mergedHash;=0A= });=0A= },=0A= =0A= toQueryString: function() {=0A= return this.map(function(pair) {=0A= return pair.map(encodeURIComponent).join('=3D');=0A= }).join('&');=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= }=0A= }=0A= =0A= function $H(object) {=0A= var hash =3D Object.extend({}, object || {});=0A= Object.extend(hash, Enumerable);=0A= Object.extend(hash, Hash);=0A= return hash;=0A= }=0A= ObjectRange =3D Class.create();=0A= Object.extend(ObjectRange.prototype, Enumerable);=0A= Object.extend(ObjectRange.prototype, {=0A= initialize: function(start, end, exclusive) {=0A= this.start =3D start;=0A= this.end =3D end;=0A= this.exclusive =3D exclusive;=0A= },=0A= =0A= _each: function(iterator) {=0A= var value =3D this.start;=0A= do {=0A= iterator(value);=0A= value =3D value.succ();=0A= } while (this.include(value));=0A= },=0A= =0A= include: function(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= =0A= var $R =3D function(start, end, exclusive) {=0A= return new ObjectRange(start, end, exclusive);=0A= }=0A= =0A= var Ajax =3D {=0A= getTransport: function() {=0A= return Try.these(=0A= function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A= function() {return new ActiveXObject('Microsoft.XMLHTTP')},=0A= function() {return new XMLHttpRequest()}=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(responderToAdd) {=0A= if (!this.include(responderToAdd))=0A= this.responders.push(responderToAdd);=0A= },=0A= =0A= unregister: function(responderToRemove) {=0A= this.responders =3D this.responders.without(responderToRemove);=0A= },=0A= =0A= dispatch: function(callback, request, transport, json) {=0A= this.each(function(responder) {=0A= if (responder[callback] && typeof responder[callback] =3D=3D = 'function') {=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() {=0A= Ajax.activeRequestCount++;=0A= },=0A= =0A= onComplete: function() {=0A= Ajax.activeRequestCount--;=0A= }=0A= });=0A= =0A= Ajax.Base =3D function() {};=0A= Ajax.Base.prototype =3D {=0A= setOptions: function(options) {=0A= this.options =3D {=0A= method: 'post',=0A= asynchronous: true,=0A= parameters: ''=0A= }=0A= Object.extend(this.options, options || {});=0A= },=0A= =0A= responseIsSuccess: function() {=0A= return this.transport.status =3D=3D undefined=0A= || this.transport.status =3D=3D 0=0A= || (this.transport.status >=3D 200 && this.transport.status < = 300);=0A= },=0A= =0A= responseIsFailure: function() {=0A= return !this.responseIsSuccess();=0A= }=0A= }=0A= =0A= Ajax.Request =3D Class.create();=0A= Ajax.Request.Events =3D=0A= ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A= =0A= Ajax.Request.prototype =3D Object.extend(new Ajax.Base(), {=0A= initialize: function(url, options) {=0A= this.transport =3D Ajax.getTransport();=0A= this.setOptions(options);=0A= this.request(url);=0A= },=0A= =0A= request: function(url) {=0A= var parameters =3D this.options.parameters || '';=0A= if (parameters.length > 0) parameters +=3D '&_=3D';=0A= =0A= try {=0A= this.url =3D url;=0A= if (this.options.method =3D=3D 'get' && parameters.length > 0)=0A= this.url +=3D (this.url.match(/\?/) ? '&' : '?') + parameters;=0A= =0A= Ajax.Responders.dispatch('onCreate', this, this.transport);=0A= =0A= this.transport.open(this.options.method, this.url,=0A= this.options.asynchronous);=0A= =0A= if (this.options.asynchronous) {=0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= setTimeout((function() = {this.respondToReadyState(1)}).bind(this), 10);=0A= }=0A= =0A= this.setRequestHeaders();=0A= =0A= var body =3D this.options.postBody ? this.options.postBody : = parameters;=0A= this.transport.send(this.options.method =3D=3D 'post' ? body : = null);=0A= =0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= setRequestHeaders: function() {=0A= var requestHeaders =3D=0A= ['X-Requested-With', 'XMLHttpRequest',=0A= 'X-Prototype-Version', Prototype.Version];=0A= =0A= if (this.options.method =3D=3D 'post') {=0A= requestHeaders.push('Content-type',=0A= 'application/x-www-form-urlencoded');=0A= =0A= /* Force "Connection: close" for Mozilla browsers to work around=0A= * a bug where XMLHttpReqeuest sends an incorrect Content-length=0A= * header. See Mozilla Bugzilla #246651.=0A= */=0A= if (this.transport.overrideMimeType)=0A= requestHeaders.push('Connection', 'close');=0A= }=0A= =0A= if (this.options.requestHeaders)=0A= requestHeaders.push.apply(requestHeaders, = this.options.requestHeaders);=0A= =0A= for (var i =3D 0; i < requestHeaders.length; i +=3D 2)=0A= this.transport.setRequestHeader(requestHeaders[i], = requestHeaders[i+1]);=0A= },=0A= =0A= onStateChange: function() {=0A= var readyState =3D this.transport.readyState;=0A= if (readyState !=3D 1)=0A= this.respondToReadyState(this.transport.readyState);=0A= },=0A= =0A= header: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name);=0A= } catch (e) {}=0A= },=0A= =0A= evalJSON: function() {=0A= try {=0A= return eval(this.header('X-JSON'));=0A= } catch (e) {}=0A= },=0A= =0A= evalResponse: function() {=0A= try {=0A= return eval(this.transport.responseText);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= respondToReadyState: function(readyState) {=0A= var event =3D Ajax.Request.Events[readyState];=0A= var transport =3D this.transport, json =3D this.evalJSON();=0A= =0A= if (event =3D=3D 'Complete') {=0A= try {=0A= (this.options['on' + this.transport.status]=0A= || this.options['on' + (this.responseIsSuccess() ? 'Success' : = 'Failure')]=0A= || Prototype.emptyFunction)(transport, json);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= if ((this.header('Content-type') || = '').match(/^text\/javascript/i))=0A= this.evalResponse();=0A= }=0A= =0A= try {=0A= (this.options['on' + event] || Prototype.emptyFunction)(transport, = json);=0A= Ajax.Responders.dispatch('on' + event, this, transport, json);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= /* Avoid memory leak in MSIE: clean up the oncomplete event handler = */=0A= if (event =3D=3D 'Complete')=0A= this.transport.onreadystatechange =3D Prototype.emptyFunction;=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.Updater =3D Class.create();=0A= =0A= Object.extend(Object.extend(Ajax.Updater.prototype, = Ajax.Request.prototype), {=0A= initialize: function(container, url, options) {=0A= this.containers =3D {=0A= success: container.success ? $(container.success) : $(container),=0A= failure: container.failure ? $(container.failure) :=0A= (container.success ? null : $(container))=0A= }=0A= =0A= this.transport =3D Ajax.getTransport();=0A= this.setOptions(options);=0A= =0A= var onComplete =3D this.options.onComplete || = Prototype.emptyFunction;=0A= this.options.onComplete =3D (function(transport, object) {=0A= this.updateContent();=0A= onComplete(transport, object);=0A= }).bind(this);=0A= =0A= this.request(url);=0A= },=0A= =0A= updateContent: function() {=0A= var receiver =3D this.responseIsSuccess() ?=0A= this.containers.success : this.containers.failure;=0A= var response =3D this.transport.responseText;=0A= =0A= if (!this.options.evalScripts)=0A= response =3D response.stripScripts();=0A= =0A= if (receiver) {=0A= if (this.options.insertion) {=0A= new this.options.insertion(receiver, response);=0A= } else {=0A= Element.update(receiver, response);=0A= }=0A= }=0A= =0A= if (this.responseIsSuccess()) {=0A= if (this.onComplete)=0A= setTimeout(this.onComplete.bind(this), 10);=0A= }=0A= }=0A= });=0A= =0A= Ajax.PeriodicalUpdater =3D Class.create();=0A= Ajax.PeriodicalUpdater.prototype =3D Object.extend(new Ajax.Base(), {=0A= initialize: function(container, url, options) {=0A= this.setOptions(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.onComplete =3D undefined;=0A= clearTimeout(this.timer);=0A= (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A= },=0A= =0A= updateComplete: function(request) {=0A= if (this.options.decay) {=0A= this.decay =3D (request.responseText =3D=3D this.lastText ?=0A= this.decay * this.options.decay : 1);=0A= =0A= this.lastText =3D request.responseText;=0A= }=0A= this.timer =3D setTimeout(this.onTimerEvent.bind(this),=0A= this.decay * this.frequency * 1000);=0A= },=0A= =0A= onTimerEvent: function() {=0A= this.updater =3D new Ajax.Updater(this.container, this.url, = this.options);=0A= }=0A= });=0A= document.getElementsByClassName =3D function(className, parentElement) {=0A= var children =3D ($(parentElement) || = document.body).getElementsByTagName('*');=0A= return $A(children).inject([], function(elements, child) {=0A= if (child.className.match(new RegExp("(^|\\s)" + className + = "(\\s|$)")))=0A= elements.push(child);=0A= return elements;=0A= });=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!window.Element) {=0A= var Element =3D new Object();=0A= }=0A= =0A= Object.extend(Element, {=0A= visible: function(element) {=0A= return $(element).style.display !=3D 'none';=0A= },=0A= =0A= toggle: function() {=0A= for (var i =3D 0; i < arguments.length; i++) {=0A= var element =3D $(arguments[i]);=0A= Element[Element.visible(element) ? 'hide' : 'show'](element);=0A= }=0A= },=0A= =0A= hide: function() {=0A= for (var i =3D 0; i < arguments.length; i++) {=0A= var element =3D $(arguments[i]);=0A= element.style.display =3D 'none';=0A= }=0A= },=0A= =0A= show: function() {=0A= for (var i =3D 0; i < arguments.length; i++) {=0A= var element =3D $(arguments[i]);=0A= element.style.display =3D '';=0A= }=0A= },=0A= =0A= remove: function(element) {=0A= element =3D $(element);=0A= element.parentNode.removeChild(element);=0A= },=0A= =0A= update: function(element, html) {=0A= $(element).innerHTML =3D html.stripScripts();=0A= setTimeout(function() {html.evalScripts()}, 10);=0A= },=0A= =0A= getHeight: function(element) {=0A= element =3D $(element);=0A= return element.offsetHeight;=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= return Element.classNames(element).include(className);=0A= },=0A= =0A= addClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= return Element.classNames(element).add(className);=0A= },=0A= =0A= removeClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= return Element.classNames(element).remove(className);=0A= },=0A= =0A= // removes whitespace-only text node children=0A= cleanWhitespace: function(element) {=0A= element =3D $(element);=0A= for (var i =3D 0; i < element.childNodes.length; i++) {=0A= var node =3D element.childNodes[i];=0A= if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A= Element.remove(node);=0A= }=0A= },=0A= =0A= empty: function(element) {=0A= return $(element).innerHTML.match(/^\s*$/);=0A= },=0A= =0A= scrollTo: function(element) {=0A= element =3D $(element);=0A= var x =3D element.x ? element.x : element.offsetLeft,=0A= y =3D element.y ? element.y : element.offsetTop;=0A= window.scrollTo(x, y);=0A= },=0A= =0A= getStyle: function(element, style) {=0A= element =3D $(element);=0A= var value =3D element.style[style.camelize()];=0A= if (!value) {=0A= if (document.defaultView && document.defaultView.getComputedStyle) = {=0A= var css =3D document.defaultView.getComputedStyle(element, null);=0A= value =3D css ? css.getPropertyValue(style) : null;=0A= } else if (element.currentStyle) {=0A= value =3D element.currentStyle[style.camelize()];=0A= }=0A= }=0A= =0A= if (window.opera && ['left', 'top', 'right', = 'bottom'].include(style))=0A= if (Element.getStyle(element, 'position') =3D=3D 'static') value = =3D 'auto';=0A= =0A= return value =3D=3D 'auto' ? null : value;=0A= },=0A= =0A= setStyle: function(element, style) {=0A= element =3D $(element);=0A= for (name in style)=0A= element.style[name.camelize()] =3D style[name];=0A= },=0A= =0A= getDimensions: function(element) {=0A= element =3D $(element);=0A= if (Element.getStyle(element, 'display') !=3D 'none')=0A= return {width: element.offsetWidth, height: element.offsetHeight};=0A= =0A= // All *Width and *Height properties give 0 on elements with display = none,=0A= // so enable the element temporarily=0A= var els =3D element.style;=0A= var originalVisibility =3D els.visibility;=0A= var originalPosition =3D els.position;=0A= els.visibility =3D 'hidden';=0A= els.position =3D 'absolute';=0A= els.display =3D '';=0A= var originalWidth =3D element.clientWidth;=0A= var originalHeight =3D element.clientHeight;=0A= els.display =3D 'none';=0A= els.position =3D originalPosition;=0A= els.visibility =3D originalVisibility;=0A= return {width: originalWidth, height: originalHeight};=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= // Opera returns the offset relative to the positioning context, = when an=0A= // element is position relative but top and left have not been = defined=0A= if (window.opera) {=0A= element.style.top =3D 0;=0A= element.style.left =3D 0;=0A= }=0A= }=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= },=0A= =0A= makeClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return;=0A= element._overflow =3D element.style.overflow;=0A= if ((Element.getStyle(element, 'overflow') || 'visible') !=3D = 'hidden')=0A= element.style.overflow =3D 'hidden';=0A= },=0A= =0A= undoClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return;=0A= element.style.overflow =3D element._overflow;=0A= element._overflow =3D undefined;=0A= }=0A= });=0A= =0A= var Toggle =3D new Object();=0A= Toggle.display =3D Element.toggle;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.Insertion =3D function(adjacency) {=0A= this.adjacency =3D adjacency;=0A= }=0A= =0A= Abstract.Insertion.prototype =3D {=0A= initialize: function(element, content) {=0A= this.element =3D $(element);=0A= this.content =3D content.stripScripts();=0A= =0A= if (this.adjacency && this.element.insertAdjacentHTML) {=0A= try {=0A= this.element.insertAdjacentHTML(this.adjacency, this.content);=0A= } catch (e) {=0A= if (this.element.tagName.toLowerCase() =3D=3D 'tbody') {=0A= this.insertContent(this.contentFromAnonymousTable());=0A= } else {=0A= throw e;=0A= }=0A= }=0A= } else {=0A= this.range =3D this.element.ownerDocument.createRange();=0A= if (this.initializeRange) this.initializeRange();=0A= = this.insertContent([this.range.createContextualFragment(this.content)]);=0A= }=0A= =0A= setTimeout(function() {content.evalScripts()}, 10);=0A= },=0A= =0A= contentFromAnonymousTable: function() {=0A= var div =3D document.createElement('div');=0A= div.innerHTML =3D '' + this.content + = '
';=0A= return $A(div.childNodes[0].childNodes[0].childNodes);=0A= }=0A= }=0A= =0A= var Insertion =3D new Object();=0A= =0A= Insertion.Before =3D Class.create();=0A= Insertion.Before.prototype =3D Object.extend(new = Abstract.Insertion('beforeBegin'), {=0A= initializeRange: function() {=0A= this.range.setStartBefore(this.element);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.each((function(fragment) {=0A= this.element.parentNode.insertBefore(fragment, this.element);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= Insertion.Top =3D Class.create();=0A= Insertion.Top.prototype =3D Object.extend(new = Abstract.Insertion('afterBegin'), {=0A= initializeRange: function() {=0A= this.range.selectNodeContents(this.element);=0A= this.range.collapse(true);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.reverse(false).each((function(fragment) {=0A= this.element.insertBefore(fragment, this.element.firstChild);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= Insertion.Bottom =3D Class.create();=0A= Insertion.Bottom.prototype =3D Object.extend(new = Abstract.Insertion('beforeEnd'), {=0A= initializeRange: function() {=0A= this.range.selectNodeContents(this.element);=0A= this.range.collapse(this.element);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.each((function(fragment) {=0A= this.element.appendChild(fragment);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= Insertion.After =3D Class.create();=0A= Insertion.After.prototype =3D Object.extend(new = Abstract.Insertion('afterEnd'), {=0A= initializeRange: function() {=0A= this.range.setStartAfter(this.element);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.each((function(fragment) {=0A= this.element.parentNode.insertBefore(fragment,=0A= this.element.nextSibling);=0A= }).bind(this));=0A= }=0A= });=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(this.toArray().concat(classNameToAdd).join(' '));=0A= },=0A= =0A= remove: function(classNameToRemove) {=0A= if (!this.include(classNameToRemove)) return;=0A= this.set(this.select(function(className) {=0A= return className !=3D classNameToRemove;=0A= }).join(' '));=0A= },=0A= =0A= toString: function() {=0A= return this.toArray().join(' ');=0A= }=0A= }=0A= =0A= Object.extend(Element.ClassNames.prototype, Enumerable);=0A= var Field =3D {=0A= clear: function() {=0A= for (var i =3D 0; i < arguments.length; i++)=0A= $(arguments[i]).value =3D '';=0A= },=0A= =0A= focus: function(element) {=0A= $(element).focus();=0A= },=0A= =0A= present: function() {=0A= for (var i =3D 0; i < arguments.length; i++)=0A= if ($(arguments[i]).value =3D=3D '') return false;=0A= return true;=0A= },=0A= =0A= select: function(element) {=0A= $(element).select();=0A= },=0A= =0A= activate: function(element) {=0A= element =3D $(element);=0A= element.focus();=0A= if (element.select)=0A= element.select();=0A= }=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Form =3D {=0A= serialize: function(form) {=0A= var elements =3D Form.getElements($(form));=0A= var queryComponents =3D new Array();=0A= =0A= for (var i =3D 0; i < elements.length; i++) {=0A= var queryComponent =3D Form.Element.serialize(elements[i]);=0A= if (queryComponent)=0A= queryComponents.push(queryComponent);=0A= }=0A= =0A= return queryComponents.join('&');=0A= },=0A= =0A= getElements: function(form) {=0A= form =3D $(form);=0A= var elements =3D new Array();=0A= =0A= for (tagName in Form.Element.Serializers) {=0A= var tagElements =3D form.getElementsByTagName(tagName);=0A= for (var j =3D 0; j < tagElements.length; j++)=0A= elements.push(tagElements[j]);=0A= }=0A= return elements;=0A= },=0A= =0A= getInputs: function(form, typeName, name) {=0A= form =3D $(form);=0A= var inputs =3D form.getElementsByTagName('input');=0A= =0A= if (!typeName && !name)=0A= return inputs;=0A= =0A= var matchingInputs =3D new Array();=0A= for (var i =3D 0; i < inputs.length; i++) {=0A= var input =3D inputs[i];=0A= if ((typeName && input.type !=3D typeName) ||=0A= (name && input.name !=3D name))=0A= continue;=0A= matchingInputs.push(input);=0A= }=0A= =0A= return matchingInputs;=0A= },=0A= =0A= disable: function(form) {=0A= var elements =3D Form.getElements(form);=0A= for (var i =3D 0; i < elements.length; i++) {=0A= var element =3D elements[i];=0A= element.blur();=0A= element.disabled =3D 'true';=0A= }=0A= },=0A= =0A= enable: function(form) {=0A= var elements =3D Form.getElements(form);=0A= for (var i =3D 0; i < elements.length; i++) {=0A= var element =3D elements[i];=0A= element.disabled =3D '';=0A= }=0A= },=0A= =0A= findFirstElement: function(form) {=0A= return Form.getElements(form).find(function(element) {=0A= return element.type !=3D 'hidden' && !element.disabled &&=0A= ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase());=0A= });=0A= },=0A= =0A= focusFirstElement: function(form) {=0A= Field.activate(Form.findFirstElement(form));=0A= },=0A= =0A= reset: function(form) {=0A= $(form).reset();=0A= }=0A= }=0A= =0A= Form.Element =3D {=0A= serialize: function(element) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= var parameter =3D Form.Element.Serializers[method](element);=0A= =0A= if (parameter) {=0A= var key =3D encodeURIComponent(parameter[0]);=0A= if (key.length =3D=3D 0) return;=0A= =0A= if (parameter[1].constructor !=3D Array)=0A= parameter[1] =3D [parameter[1]];=0A= =0A= return parameter[1].map(function(value) {=0A= return key + '=3D' + encodeURIComponent(value);=0A= }).join('&');=0A= }=0A= },=0A= =0A= getValue: function(element) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= var parameter =3D Form.Element.Serializers[method](element);=0A= =0A= if (parameter)=0A= return parameter[1];=0A= }=0A= }=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element) {=0A= switch (element.type.toLowerCase()) {=0A= case 'submit':=0A= case 'hidden':=0A= case 'password':=0A= case 'text':=0A= return Form.Element.Serializers.textarea(element);=0A= case 'checkbox':=0A= case 'radio':=0A= return Form.Element.Serializers.inputSelector(element);=0A= }=0A= return false;=0A= },=0A= =0A= inputSelector: function(element) {=0A= if (element.checked)=0A= return [element.name, element.value];=0A= },=0A= =0A= textarea: function(element) {=0A= return [element.name, element.value];=0A= },=0A= =0A= select: function(element) {=0A= return Form.Element.Serializers[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=0A= },=0A= =0A= selectOne: function(element) {=0A= var value =3D '', opt, index =3D element.selectedIndex;=0A= if (index >=3D 0) {=0A= opt =3D element.options[index];=0A= value =3D opt.value;=0A= if (!value && !('value' in opt))=0A= value =3D opt.text;=0A= }=0A= return [element.name, value];=0A= },=0A= =0A= selectMany: function(element) {=0A= var value =3D new Array();=0A= for (var i =3D 0; i < element.length; i++) {=0A= var opt =3D element.options[i];=0A= if (opt.selected) {=0A= var optValue =3D opt.value;=0A= if (!optValue && !('value' in opt))=0A= optValue =3D opt.text;=0A= value.push(optValue);=0A= }=0A= }=0A= return [element.name, value];=0A= }=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var $F =3D Form.Element.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.TimedObserver =3D function() {}=0A= Abstract.TimedObserver.prototype =3D {=0A= initialize: function(element, frequency, callback) {=0A= this.frequency =3D frequency;=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);=0A= },=0A= =0A= onTimerEvent: 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= =0A= Form.Element.Observer =3D Class.create();=0A= Form.Element.Observer.prototype =3D Object.extend(new = Abstract.TimedObserver(), {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.Observer =3D Class.create();=0A= Form.Observer.prototype =3D Object.extend(new Abstract.TimedObserver(), {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.EventObserver =3D function() {}=0A= Abstract.EventObserver.prototype =3D {=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= var elements =3D Form.getElements(this.element);=0A= for (var i =3D 0; i < elements.length; i++)=0A= this.registerCallback(elements[i]);=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= case 'password':=0A= case 'text':=0A= case 'textarea':=0A= case 'select-one':=0A= case 'select-multiple':=0A= Event.observe(element, 'change', = this.onElementEvent.bind(this));=0A= break;=0A= }=0A= }=0A= }=0A= }=0A= =0A= Form.Element.EventObserver =3D Class.create();=0A= Form.Element.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.EventObserver =3D Class.create();=0A= Form.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= if (!window.Event) {=0A= var Event =3D new Object();=0A= }=0A= =0A= Object.extend(Event, {=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= =0A= element: function(event) {=0A= return event.target || event.srcElement;=0A= },=0A= =0A= isLeftClick: function(event) {=0A= return (((event.which) && (event.which =3D=3D 1)) ||=0A= ((event.button) && (event.button =3D=3D 1)));=0A= },=0A= =0A= pointerX: function(event) {=0A= return event.pageX || (event.clientX +=0A= (document.documentElement.scrollLeft || document.body.scrollLeft));=0A= },=0A= =0A= pointerY: function(event) {=0A= return event.pageY || (event.clientY +=0A= (document.documentElement.scrollTop || document.body.scrollTop));=0A= },=0A= =0A= stop: function(event) {=0A= if (event.preventDefault) {=0A= event.preventDefault();=0A= event.stopPropagation();=0A= } else {=0A= event.returnValue =3D false;=0A= event.cancelBubble =3D true;=0A= }=0A= },=0A= =0A= // find the first node with the given tagName, starting from the=0A= // node the event was triggered on; traverses the DOM upwards=0A= findElement: function(event, tagName) {=0A= var element =3D Event.element(event);=0A= while (element.parentNode && (!element.tagName ||=0A= (element.tagName.toUpperCase() !=3D tagName.toUpperCase())))=0A= element =3D element.parentNode;=0A= return element;=0A= },=0A= =0A= observers: false,=0A= =0A= _observeAndCache: function(element, name, observer, useCapture) {=0A= if (!this.observers) this.observers =3D [];=0A= if (element.addEventListener) {=0A= this.observers.push([element, name, observer, useCapture]);=0A= element.addEventListener(name, observer, useCapture);=0A= } else if (element.attachEvent) {=0A= this.observers.push([element, name, observer, useCapture]);=0A= element.attachEvent('on' + name, observer);=0A= }=0A= },=0A= =0A= unloadCache: function() {=0A= if (!Event.observers) return;=0A= for (var i =3D 0; i < Event.observers.length; i++) {=0A= Event.stopObserving.apply(this, Event.observers[i]);=0A= Event.observers[i][0] =3D null;=0A= }=0A= Event.observers =3D false;=0A= },=0A= =0A= observe: function(element, name, observer, useCapture) {=0A= var element =3D $(element);=0A= useCapture =3D useCapture || false;=0A= =0A= if (name =3D=3D 'keypress' &&=0A= (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A= || element.attachEvent))=0A= name =3D 'keydown';=0A= =0A= this._observeAndCache(element, name, observer, useCapture);=0A= },=0A= =0A= stopObserving: function(element, name, observer, useCapture) {=0A= var element =3D $(element);=0A= useCapture =3D useCapture || false;=0A= =0A= if (name =3D=3D 'keypress' &&=0A= (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A= || element.detachEvent))=0A= name =3D 'keydown';=0A= =0A= if (element.removeEventListener) {=0A= element.removeEventListener(name, observer, useCapture);=0A= } else if (element.detachEvent) {=0A= element.detachEvent('on' + name, observer);=0A= }=0A= }=0A= });=0A= =0A= /* prevent memory leaks in IE */=0A= Event.observe(window, 'unload', Event.unloadCache, false);=0A= var Position =3D {=0A= // set to true if needed, warning: firefox performance problems=0A= // NOT neeeded for page scrolling, only if draggable contained in=0A= // scrollable elements=0A= includeScrollOffsets: false,=0A= =0A= // must be called before calling withinIncludingScrolloffset, every = time the=0A= // page is scrolled=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= realOffset: function(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 [valueL, valueT];=0A= },=0A= =0A= cumulativeOffset: function(element) {=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= } while (element);=0A= return [valueL, valueT];=0A= },=0A= =0A= positionedOffset: function(element) {=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= p =3D Element.getStyle(element, 'position');=0A= if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A= }=0A= } while (element);=0A= return [valueL, valueT];=0A= },=0A= =0A= offsetParent: function(element) {=0A= if (element.offsetParent) return element.offsetParent;=0A= if (element =3D=3D document.body) return element;=0A= =0A= while ((element =3D element.parentNode) && element !=3D = document.body)=0A= if (Element.getStyle(element, 'position') !=3D 'static')=0A= return element;=0A= =0A= return document.body;=0A= },=0A= =0A= // caches x/y coordinate pair to use with overlap=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 this.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 this.realOffset(element);=0A= =0A= this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A= this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A= this.offset =3D this.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= // within must be called directly before=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= clone: function(source, target) {=0A= source =3D $(source);=0A= target =3D $(target);=0A= target.style.position =3D 'absolute';=0A= var offsets =3D this.cumulativeOffset(source);=0A= target.style.top =3D offsets[1] + 'px';=0A= target.style.left =3D offsets[0] + 'px';=0A= target.style.width =3D source.offsetWidth + 'px';=0A= target.style.height =3D source.offsetHeight + 'px';=0A= },=0A= =0A= page: function(forElement) {=0A= var valueT =3D 0, valueL =3D 0;=0A= =0A= var element =3D forElement;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= =0A= // Safari fix=0A= if (element.offsetParent=3D=3Ddocument.body)=0A= if (Element.getStyle(element,'position')=3D=3D'absolute') break;=0A= =0A= } while (element =3D element.offsetParent);=0A= =0A= element =3D forElement;=0A= do {=0A= valueT -=3D element.scrollTop || 0;=0A= valueL -=3D element.scrollLeft || 0;=0A= } while (element =3D element.parentNode);=0A= =0A= return [valueL, valueT];=0A= },=0A= =0A= clone: function(source, target) {=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= // find page position of source=0A= source =3D $(source);=0A= var p =3D Position.page(source);=0A= =0A= // find coordinate system to use=0A= target =3D $(target);=0A= var delta =3D [0, 0];=0A= var parent =3D null;=0A= // delta [0,0] will do fine with position: fixed elements,=0A= // position:absolute needs offsetParent deltas=0A= if (Element.getStyle(target,'position') =3D=3D 'absolute') {=0A= parent =3D Position.offsetParent(target);=0A= delta =3D Position.page(parent);=0A= }=0A= =0A= // correct by body offsets (fixes Safari)=0A= if (parent =3D=3D document.body) {=0A= delta[0] -=3D document.body.offsetLeft;=0A= delta[1] -=3D document.body.offsetTop;=0A= }=0A= =0A= // set position=0A= if(options.setLeft) target.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px';=0A= if(options.setTop) target.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px';=0A= if(options.setWidth) target.style.width =3D source.offsetWidth + = 'px';=0A= if(options.setHeight) target.style.height =3D source.offsetHeight + = 'px';=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (element.style.position =3D=3D 'absolute') return;=0A= Position.prepare();=0A= =0A= var offsets =3D Position.positionedOffset(element);=0A= var top =3D offsets[1];=0A= var left =3D offsets[0];=0A= var width =3D element.clientWidth;=0A= var height =3D element.clientHeight;=0A= =0A= element._originalLeft =3D left - parseFloat(element.style.left || = 0);=0A= element._originalTop =3D top - parseFloat(element.style.top || = 0);=0A= element._originalWidth =3D element.style.width;=0A= element._originalHeight =3D element.style.height;=0A= =0A= element.style.position =3D 'absolute';=0A= element.style.top =3D top + 'px';;=0A= element.style.left =3D left + 'px';;=0A= element.style.width =3D width + 'px';;=0A= element.style.height =3D height + 'px';;=0A= },=0A= =0A= relativize: function(element) {=0A= element =3D $(element);=0A= if (element.style.position =3D=3D 'relative') return;=0A= Position.prepare();=0A= =0A= element.style.position =3D 'relative';=0A= var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0);=0A= var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0);=0A= =0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.height =3D element._originalHeight;=0A= element.style.width =3D element._originalWidth;=0A= }=0A= }=0A= =0A= // Safari returns margins on body which is incorrect if the child is = absolutely=0A= // positioned. For performance reasons, redefine = Position.cumulativeOffset for=0A= // KHTML/WebKit only.=0A= if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {=0A= Position.cumulativeOffset =3D function(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 [valueL, valueT];=0A= }=0A= } ------=_NextPart_000_01D8_01CB7126.76FC8E30 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://aurum.comune.pescara.it/js/scriptaculous.js?load=effects // Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, = http://mir.aculo.us)=0A= // =0A= // Permission is hereby granted, free of charge, to any person obtaining=0A= // a copy of this software and associated documentation files (the=0A= // "Software"), to deal in the Software without restriction, including=0A= // without limitation the rights to use, copy, modify, merge, publish,=0A= // distribute, sublicense, and/or sell copies of the Software, and to=0A= // permit persons to whom the Software is furnished to do so, subject to=0A= // the following conditions:=0A= // =0A= // The above copyright notice and this permission notice shall be=0A= // included in all copies or substantial portions of the Software.=0A= //=0A= // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,=0A= // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF=0A= // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND=0A= // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE=0A= // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION=0A= // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION=0A= // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.=0A= =0A= var Scriptaculous =3D {=0A= Version: '1.5.1',=0A= require: function(libraryName) {=0A= // inserting via DOM fails in Safari 2.0, so brute force approach=0A= document.write('');=0A= },=0A= load: function() {=0A= if((typeof Prototype=3D=3D'undefined') ||=0A= parseFloat(Prototype.Version.split(".")[0] + "." +=0A= Prototype.Version.split(".")[1]) < 1.4)=0A= throw("script.aculo.us requires the Prototype JavaScript framework = >=3D 1.4.0");=0A= =0A= $A(document.getElementsByTagName("script")).findAll( function(s) {=0A= return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))=0A= }).each( function(s) {=0A= var path =3D s.src.replace(/scriptaculous\.js(\?.*)?$/,'');=0A= var includes =3D s.src.match(/\?.*load=3D([a-z,]*)/);=0A= (includes ? includes[1] : = 'builder,effects,dragdrop,controls,slider').split(',').each(=0A= function(include) { Scriptaculous.require(path+include+'.js') });=0A= });=0A= }=0A= }=0A= =0A= Scriptaculous.load(); ------=_NextPart_000_01D8_01CB7126.76FC8E30 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://aurum.comune.pescara.it/js/lightbox.js // = -------------------------------------------------------------------------= ----------=0A= //=0A= // Lightbox v2.03.3=0A= // by Lokesh Dhakar - http://www.huddletogether.com=0A= // 5/21/06=0A= //=0A= // For more information on this script, visit:=0A= // http://huddletogether.com/projects/lightbox2/=0A= //=0A= // Licensed under the Creative Commons Attribution 2.5 License - = http://creativecommons.org/licenses/by/2.5/=0A= // =0A= // Credit also due to those who have helped, inspired, and made their = code available to the public.=0A= // Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), = Thomas Fuchs(mir.aculo.us), and others.=0A= //=0A= //=0A= // = -------------------------------------------------------------------------= ----------=0A= /*=0A= =0A= Table of Contents=0A= -----------------=0A= Configuration=0A= Global Variables=0A= =0A= Extending Built-in Objects =0A= - Object.extend(Element)=0A= - Array.prototype.removeDuplicates()=0A= - Array.prototype.empty()=0A= =0A= Lightbox Class Declaration=0A= - initialize()=0A= - updateImageList()=0A= - start()=0A= - changeImage()=0A= - resizeImageContainer()=0A= - showImage()=0A= - updateDetails()=0A= - updateNav()=0A= - enableKeyboardNav()=0A= - disableKeyboardNav()=0A= - keyboardAction()=0A= - preloadNeighborImages()=0A= - end()=0A= =0A= Miscellaneous Functions=0A= - getPageScroll()=0A= - getPageSize()=0A= - getKey()=0A= - listenKey()=0A= - showSelectBoxes()=0A= - hideSelectBoxes()=0A= - showFlash()=0A= - hideFlash()=0A= - pause()=0A= - initLightbox()=0A= =0A= Function Calls=0A= - addLoadEvent(initLightbox)=0A= =0A= */=0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= //=0A= // Configuration=0A= //=0A= var fileLoadingImage =3D "images/loading.gif"; =0A= var fileBottomNavCloseImage =3D "images/closelabel.gif";=0A= =0A= var overlayOpacity =3D 0.8; // controls transparency of shadow overlay=0A= =0A= var animate =3D true; // toggles resizing animations=0A= var resizeSpeed =3D 7; // controls the speed of the image resizing = animations (1=3Dslowest and 10=3Dfastest)=0A= =0A= var borderSize =3D 10; //if you adjust the padding in the CSS, you will = need to update this variable=0A= =0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= //=0A= // Global Variables=0A= //=0A= var imageArray =3D new Array;=0A= var activeImage;=0A= =0A= if(animate =3D=3D true){=0A= overlayDuration =3D 0.2; // shadow fade in/out duration=0A= if(resizeSpeed > 10){ resizeSpeed =3D 10;}=0A= if(resizeSpeed < 1){ resizeSpeed =3D 1;}=0A= resizeDuration =3D (11 - resizeSpeed) * 0.15;=0A= } else { =0A= overlayDuration =3D 0;=0A= resizeDuration =3D 0;=0A= }=0A= =0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= //=0A= // Additional methods for Element added by SU, Couloir=0A= // - further additions by Lokesh Dhakar (huddletogether.com)=0A= //=0A= Object.extend(Element, {=0A= getWidth: function(element) {=0A= element =3D $(element);=0A= return element.offsetWidth; =0A= },=0A= setWidth: function(element,w) {=0A= element =3D $(element);=0A= element.style.width =3D w +"px";=0A= },=0A= setHeight: function(element,h) {=0A= element =3D $(element);=0A= element.style.height =3D h +"px";=0A= },=0A= setTop: function(element,t) {=0A= element =3D $(element);=0A= element.style.top =3D t +"px";=0A= },=0A= setLeft: function(element,l) {=0A= element =3D $(element);=0A= element.style.left =3D l +"px";=0A= },=0A= setSrc: function(element,src) {=0A= element =3D $(element);=0A= element.src =3D src; =0A= },=0A= setHref: function(element,href) {=0A= element =3D $(element);=0A= element.href =3D href; =0A= },=0A= setInnerHTML: function(element,content) {=0A= element =3D $(element);=0A= element.innerHTML =3D content;=0A= }=0A= });=0A= =0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= //=0A= // Extending built-in Array object=0A= // - array.removeDuplicates()=0A= // - array.empty()=0A= //=0A= Array.prototype.removeDuplicates =3D function () {=0A= for(i =3D 0; i < this.length; i++){=0A= for(j =3D this.length-1; j>i; j--){ =0A= if(this[i][0] =3D=3D this[j][0]){=0A= this.splice(j,1);=0A= }=0A= }=0A= }=0A= }=0A= =0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= Array.prototype.empty =3D function () {=0A= for(i =3D 0; i <=3D this.length; i++){=0A= this.shift();=0A= }=0A= }=0A= =0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= //=0A= // Lightbox Class Declaration=0A= // - initialize()=0A= // - start()=0A= // - changeImage()=0A= // - resizeImageContainer()=0A= // - showImage()=0A= // - updateDetails()=0A= // - updateNav()=0A= // - enableKeyboardNav()=0A= // - disableKeyboardNav()=0A= // - keyboardNavAction()=0A= // - preloadNeighborImages()=0A= // - end()=0A= //=0A= // Structuring of code inspired by Scott Upton (http://www.uptonic.com/)=0A= //=0A= var Lightbox =3D Class.create();=0A= =0A= Lightbox.prototype =3D {=0A= =0A= // initialize()=0A= // Constructor runs on completion of the DOM loading. Calls = updateImageList and then=0A= // the function inserts html at the bottom of the page which is used to = display the shadow =0A= // overlay and the image container.=0A= //=0A= initialize: function() { =0A= =0A= this.updateImageList();=0A= =0A= // Code inserts html at the bottom of the page that looks similar to = this:=0A= //=0A= //
=0A= //
=0A= //
=0A= //
=0A= // =0A= //
=0A= // =0A= // =0A= //
=0A= //
=0A= // =0A= // =0A= // =0A= //
=0A= //
=0A= //
=0A= //
=0A= //
=0A= //
=0A= // =0A= // =0A= //
=0A= //
=0A= // =0A= // =0A= // =0A= //
=0A= //
=0A= //
=0A= //
=0A= =0A= =0A= var objBody =3D document.getElementsByTagName("body").item(0);=0A= =0A= var objOverlay =3D document.createElement("div");=0A= objOverlay.setAttribute('id','overlay');=0A= objOverlay.style.display =3D 'none';=0A= objOverlay.onclick =3D function() { myLightbox.end(); }=0A= objBody.appendChild(objOverlay);=0A= =0A= var objLightbox =3D document.createElement("div");=0A= objLightbox.setAttribute('id','lightbox');=0A= objLightbox.style.display =3D 'none';=0A= objLightbox.onclick =3D function(e) { // close Lightbox is user clicks = shadow overlay=0A= if (!e) var e =3D window.event;=0A= var clickObj =3D Event.element(e).id;=0A= if ( clickObj =3D=3D 'lightbox') {=0A= myLightbox.end();=0A= }=0A= };=0A= objBody.appendChild(objLightbox);=0A= =0A= var objOuterImageContainer =3D document.createElement("div");=0A= objOuterImageContainer.setAttribute('id','outerImageContainer');=0A= objLightbox.appendChild(objOuterImageContainer);=0A= =0A= // When Lightbox starts it will resize itself from 250 by 250 to the = current image dimension.=0A= // If animations are turned off, it will be hidden as to prevent a = flicker of a=0A= // white 250 by 250 box.=0A= if(animate){=0A= Element.setWidth('outerImageContainer', 250);=0A= Element.setHeight('outerImageContainer', 250); =0A= } else {=0A= Element.setWidth('outerImageContainer', 1);=0A= Element.setHeight('outerImageContainer', 1); =0A= }=0A= =0A= var objImageContainer =3D document.createElement("div");=0A= objImageContainer.setAttribute('id','imageContainer');=0A= objOuterImageContainer.appendChild(objImageContainer);=0A= =0A= var objLightboxImage =3D document.createElement("img");=0A= objLightboxImage.setAttribute('id','lightboxImage');=0A= objImageContainer.appendChild(objLightboxImage);=0A= =0A= var objHoverNav =3D document.createElement("div");=0A= objHoverNav.setAttribute('id','hoverNav');=0A= objImageContainer.appendChild(objHoverNav);=0A= =0A= var objPrevLink =3D document.createElement("a");=0A= objPrevLink.setAttribute('id','prevLink');=0A= objPrevLink.setAttribute('href','#');=0A= objHoverNav.appendChild(objPrevLink);=0A= =0A= var objNextLink =3D document.createElement("a");=0A= objNextLink.setAttribute('id','nextLink');=0A= objNextLink.setAttribute('href','#');=0A= objHoverNav.appendChild(objNextLink);=0A= =0A= var objLoading =3D document.createElement("div");=0A= objLoading.setAttribute('id','loading');=0A= objImageContainer.appendChild(objLoading);=0A= =0A= var objLoadingLink =3D document.createElement("a");=0A= objLoadingLink.setAttribute('id','loadingLink');=0A= objLoadingLink.setAttribute('href','#');=0A= objLoadingLink.onclick =3D function() { myLightbox.end(); return = false; }=0A= objLoading.appendChild(objLoadingLink);=0A= =0A= var objLoadingImage =3D document.createElement("img");=0A= objLoadingImage.setAttribute('src', fileLoadingImage);=0A= objLoadingLink.appendChild(objLoadingImage);=0A= =0A= var objImageDataContainer =3D document.createElement("div");=0A= objImageDataContainer.setAttribute('id','imageDataContainer');=0A= objLightbox.appendChild(objImageDataContainer);=0A= =0A= var objImageData =3D document.createElement("div");=0A= objImageData.setAttribute('id','imageData');=0A= objImageDataContainer.appendChild(objImageData);=0A= =0A= var objImageDetails =3D document.createElement("div");=0A= objImageDetails.setAttribute('id','imageDetails');=0A= objImageData.appendChild(objImageDetails);=0A= =0A= var objCaption =3D document.createElement("span");=0A= objCaption.setAttribute('id','caption');=0A= objImageDetails.appendChild(objCaption);=0A= =0A= var objNumberDisplay =3D document.createElement("span");=0A= objNumberDisplay.setAttribute('id','numberDisplay');=0A= objImageDetails.appendChild(objNumberDisplay);=0A= =0A= var objBottomNav =3D document.createElement("div");=0A= objBottomNav.setAttribute('id','bottomNav');=0A= objImageData.appendChild(objBottomNav);=0A= =0A= var objBottomNavCloseLink =3D document.createElement("a");=0A= objBottomNavCloseLink.setAttribute('id','bottomNavClose');=0A= objBottomNavCloseLink.setAttribute('href','#');=0A= objBottomNavCloseLink.onclick =3D function() { myLightbox.end(); = return false; }=0A= objBottomNav.appendChild(objBottomNavCloseLink);=0A= =0A= var objBottomNavCloseImage =3D document.createElement("img");=0A= objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage);=0A= objBottomNavCloseLink.appendChild(objBottomNavCloseImage);=0A= },=0A= =0A= =0A= //=0A= // updateImageList()=0A= // Loops through anchor tags looking for 'lightbox' references and = applies onclick=0A= // events to appropriate links. You can rerun after dynamically adding = images w/ajax.=0A= //=0A= updateImageList: function() { =0A= if (!document.getElementsByTagName){ return; }=0A= var anchors =3D document.getElementsByTagName('a');=0A= var areas =3D document.getElementsByTagName('area');=0A= =0A= // loop through all anchor tags=0A= for (var i=3D0; i 1){=0A= Element.show('numberDisplay');=0A= Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeImage + = 1) + " of " + imageArray.length);=0A= }=0A= =0A= new Effect.Parallel(=0A= [ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: = resizeDuration, from: 0.0, to: 1.0 }), =0A= new Effect.Appear('imageDataContainer', { sync: true, duration: = resizeDuration }) ], =0A= { duration: resizeDuration, afterFinish: function() {=0A= // update overlay size and update nav=0A= var arrayPageSize =3D getPageSize();=0A= Element.setHeight('overlay', arrayPageSize[1]);=0A= myLightbox.updateNav();=0A= }=0A= } =0A= );=0A= },=0A= =0A= //=0A= // updateNav()=0A= // Display appropriate previous and next hover navigation.=0A= //=0A= updateNav: function() {=0A= =0A= Element.show('hoverNav'); =0A= =0A= // if not first image in set, display prev image button=0A= if(activeImage !=3D 0){=0A= Element.show('prevLink');=0A= document.getElementById('prevLink').onclick =3D function() {=0A= myLightbox.changeImage(activeImage - 1); return false;=0A= }=0A= }=0A= =0A= // if not last image in set, display next image button=0A= if(activeImage !=3D (imageArray.length - 1)){=0A= Element.show('nextLink');=0A= document.getElementById('nextLink').onclick =3D function() {=0A= myLightbox.changeImage(activeImage + 1); return false;=0A= }=0A= }=0A= =0A= this.enableKeyboardNav();=0A= },=0A= =0A= //=0A= // enableKeyboardNav()=0A= //=0A= enableKeyboardNav: function() {=0A= document.onkeydown =3D this.keyboardAction; =0A= },=0A= =0A= //=0A= // disableKeyboardNav()=0A= //=0A= disableKeyboardNav: function() {=0A= document.onkeydown =3D '';=0A= },=0A= =0A= //=0A= // keyboardAction()=0A= //=0A= keyboardAction: function(e) {=0A= if (e =3D=3D null) { // ie=0A= keycode =3D event.keyCode;=0A= escapeKey =3D 27;=0A= } else { // mozilla=0A= keycode =3D e.keyCode;=0A= escapeKey =3D e.DOM_VK_ESCAPE;=0A= }=0A= =0A= key =3D String.fromCharCode(keycode).toLowerCase();=0A= =0A= if((key =3D=3D 'x') || (key =3D=3D 'o') || (key =3D=3D 'c') || = (keycode =3D=3D escapeKey)){ // close lightbox=0A= myLightbox.end();=0A= } else if((key =3D=3D 'p') || (keycode =3D=3D 37)){ // display = previous image=0A= if(activeImage !=3D 0){=0A= myLightbox.disableKeyboardNav();=0A= myLightbox.changeImage(activeImage - 1);=0A= }=0A= } else if((key =3D=3D 'n') || (keycode =3D=3D 39)){ // display next = image=0A= if(activeImage !=3D (imageArray.length - 1)){=0A= myLightbox.disableKeyboardNav();=0A= myLightbox.changeImage(activeImage + 1);=0A= }=0A= }=0A= =0A= },=0A= =0A= //=0A= // preloadNeighborImages()=0A= // Preload previous and next images.=0A= //=0A= preloadNeighborImages: function(){=0A= =0A= if((imageArray.length - 1) > activeImage){=0A= preloadNextImage =3D new Image();=0A= preloadNextImage.src =3D imageArray[activeImage + 1][0];=0A= }=0A= if(activeImage > 0){=0A= preloadPrevImage =3D new Image();=0A= preloadPrevImage.src =3D imageArray[activeImage - 1][0];=0A= }=0A= =0A= },=0A= =0A= //=0A= // end()=0A= //=0A= end: function() {=0A= this.disableKeyboardNav();=0A= Element.hide('lightbox');=0A= new Effect.Fade('overlay', { duration: overlayDuration});=0A= showSelectBoxes();=0A= showFlash();=0A= }=0A= }=0A= =0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= //=0A= // getPageScroll()=0A= // Returns array with x,y page scroll values.=0A= // Core code from - quirksmode.com=0A= //=0A= function getPageScroll(){=0A= =0A= var xScroll, yScroll;=0A= =0A= if (self.pageYOffset) {=0A= yScroll =3D self.pageYOffset;=0A= xScroll =3D self.pageXOffset;=0A= } else if (document.documentElement && = document.documentElement.scrollTop){ // Explorer 6 Strict=0A= yScroll =3D document.documentElement.scrollTop;=0A= xScroll =3D document.documentElement.scrollLeft;=0A= } else if (document.body) {// all other Explorers=0A= yScroll =3D document.body.scrollTop;=0A= xScroll =3D document.body.scrollLeft; =0A= }=0A= =0A= arrayPageScroll =3D new Array(xScroll,yScroll) =0A= return arrayPageScroll;=0A= }=0A= =0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= //=0A= // getPageSize()=0A= // Returns array with page width, height and window width, height=0A= // Core code from - quirksmode.com=0A= // Edit for Firefox by pHaez=0A= //=0A= function getPageSize(){=0A= =0A= var xScroll, yScroll;=0A= =0A= if (window.innerHeight && window.scrollMaxY) { =0A= xScroll =3D window.innerWidth + window.scrollMaxX;=0A= yScroll =3D window.innerHeight + window.scrollMaxY;=0A= } else if (document.body.scrollHeight > document.body.offsetHeight){ // = all but Explorer Mac=0A= xScroll =3D document.body.scrollWidth;=0A= yScroll =3D document.body.scrollHeight;=0A= } else { // Explorer Mac...would also work in Explorer 6 Strict, = Mozilla and Safari=0A= xScroll =3D document.body.offsetWidth;=0A= yScroll =3D document.body.offsetHeight;=0A= }=0A= =0A= var windowWidth, windowHeight;=0A= =0A= // console.log(self.innerWidth);=0A= // console.log(document.documentElement.clientWidth);=0A= =0A= if (self.innerHeight) { // all except Explorer=0A= if(document.documentElement.clientWidth){=0A= windowWidth =3D document.documentElement.clientWidth; =0A= } else {=0A= windowWidth =3D self.innerWidth;=0A= }=0A= windowHeight =3D self.innerHeight;=0A= } else if (document.documentElement && = document.documentElement.clientHeight) { // Explorer 6 Strict Mode=0A= windowWidth =3D document.documentElement.clientWidth;=0A= windowHeight =3D document.documentElement.clientHeight;=0A= } else if (document.body) { // other Explorers=0A= windowWidth =3D document.body.clientWidth;=0A= windowHeight =3D document.body.clientHeight;=0A= } =0A= =0A= // for small pages with total height less then height of the viewport=0A= if(yScroll < windowHeight){=0A= pageHeight =3D windowHeight;=0A= } else { =0A= pageHeight =3D yScroll;=0A= }=0A= =0A= // console.log("xScroll " + xScroll)=0A= // console.log("windowWidth " + windowWidth)=0A= =0A= // for small pages with total width less then width of the viewport=0A= if(xScroll < windowWidth){ =0A= pageWidth =3D xScroll; =0A= } else {=0A= pageWidth =3D windowWidth;=0A= }=0A= // console.log("pageWidth " + pageWidth)=0A= =0A= arrayPageSize =3D new = Array(pageWidth,pageHeight,windowWidth,windowHeight) =0A= return arrayPageSize;=0A= }=0A= =0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= //=0A= // getKey(key)=0A= // Gets keycode. If 'x' is pressed then it hides the lightbox.=0A= //=0A= function getKey(e){=0A= if (e =3D=3D null) { // ie=0A= keycode =3D event.keyCode;=0A= } else { // mozilla=0A= keycode =3D e.which;=0A= }=0A= key =3D String.fromCharCode(keycode).toLowerCase();=0A= =0A= if(key =3D=3D 'x'){=0A= }=0A= }=0A= =0A= // = -------------------------------------------------------------------------= ----------=0A= =0A= //=0A= // listenKey()=0A= //=0A= function listenKey () { document.onkeypress =3D getKey; }=0A= =0A= // ---------------------------------------------------=0A= =0A= function showSelectBoxes(){=0A= var selects =3D document.getElementsByTagName("select");=0A= for (i =3D 0; i !=3D selects.length; i++) {=0A= selects[i].style.visibility =3D "visible";=0A= }=0A= }=0A= =0A= // ---------------------------------------------------=0A= =0A= function hideSelectBoxes(){=0A= var selects =3D document.getElementsByTagName("select");=0A= for (i =3D 0; i !=3D selects.length; i++) {=0A= selects[i].style.visibility =3D "hidden";=0A= }=0A= }=0A= =0A= // ---------------------------------------------------=0A= =0A= function showFlash(){=0A= var flashObjects =3D document.getElementsByTagName("object");=0A= for (i =3D 0; i < flashObjects.length; i++) {=0A= flashObjects[i].style.visibility =3D "visible";=0A= }=0A= =0A= var flashEmbeds =3D document.getElementsByTagName("embed");=0A= for (i =3D 0; i < flashEmbeds.length; i++) {=0A= flashEmbeds[i].style.visibility =3D "visible";=0A= }=0A= }=0A= =0A= // ---------------------------------------------------=0A= =0A= function hideFlash(){=0A= var flashObjects =3D document.getElementsByTagName("object");=0A= for (i =3D 0; i < flashObjects.length; i++) {=0A= flashObjects[i].style.visibility =3D "hidden";=0A= }=0A= =0A= var flashEmbeds =3D document.getElementsByTagName("embed");=0A= for (i =3D 0; i < flashEmbeds.length; i++) {=0A= flashEmbeds[i].style.visibility =3D "hidden";=0A= }=0A= =0A= }=0A= =0A= =0A= // ---------------------------------------------------=0A= =0A= //=0A= // pause(numberMillis)=0A= // Pauses code execution for specified time. Uses busy code, not good.=0A= // Help from Ran Bar-On [ran2103@gmail.com]=0A= //=0A= =0A= function pause(ms){=0A= var date =3D new Date();=0A= curDate =3D null;=0A= do{var curDate =3D new Date();}=0A= while( curDate - date < ms);=0A= }=0A= /*=0A= function pause(numberMillis) {=0A= var curently =3D new Date().getTime() + sender;=0A= while (new Date().getTime(); =0A= }=0A= */=0A= // ---------------------------------------------------=0A= =0A= =0A= =0A= function initLightbox() { myLightbox =3D new Lightbox(); }=0A= Event.observe(window, 'load', initLightbox, false); ------=_NextPart_000_01D8_01CB7126.76FC8E30--