From: Subject: =?Windows-1252?Q?ACIES_-_Asociaci=F3n_de_Consultores_Independientes_de_Es?= =?Windows-1252?Q?tructuras_de_Edificaci=F3n?= Date: Fri, 19 Dec 2008 21:40:45 +0100 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C96222.73319850" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C96222.73319850 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/?q=estructura/98 =EF=BB=BF ACIES - = Asociaci=C3=B3n de Consultores Independientes de Estructuras de = Edificaci=C3=B3n =0A=
Asociaci=C3=B3n de Consultores Independientes = de Estructuras=20 de Edificaci=C3=B3n
-=20 N_2000:
GALILEO = Y LAS REGLAS=20 DE PROPORCI=C3=93N
-=20 N_1:
El = potencial=20 creativo de la estructura
-=20 N_02:
LA CAJA = M=C3=81GICA
Articulos=20 de n=C3=BAmeros anteriores:
 
Ponencias disponibles Jornada ACIES = =E2=80=9CEl Prefabricado=20 en la Edificaci=C3=B3n
Jornada Monogr=C3=A1fica de ACIES = =E2=80=9CEl Prefabricado en=20 la Edificaci=C3=B3n =E2=80=9C ha tenido un gran =C3=A9xito, con = ...
+info
CURSO DE = FORMACI=C3=93N=20 ESTRUCTURAS DE ACERO EN EDIFICACI=C3=93N APLICACI=C3=93N = PR=C3=81CTICA DEL C=C3=93DIGO T=C3=89CNICO=20 DE LA EDIFICACI=C3=93N (CTE).(III EDICI
El pr=C3=B3ximo = d=C3=ADa 11 de Noviembre=20 APTA junto con el Instituto Eduardo Torroja organizan el curso de=20 formaci=C3=B3n ...
+info



Enviado por admin el = Vie, 10/17/2008=20 - 12:16.
ACIEStructuras > = GALILEO Y LAS = REGLAS DE=20 PROPORCI=C3=93N

Art=C3=ADculo destacado del =C3=BAltimo n=C3=BAmero

GALILEO Y = LAS REGLAS=20 DE PROPORCI=C3=93N
Ricardo=20 Aroca es Dr Arquitecto y Catedr=C3=A1tico de Estructuras de = la=20 Universidad Polit=C3=A9cnica de Madrid. Ha sido decano del = Colegio de=20 Arquitectos de Madrid y en la actualidad dirige el = Departamento de=20 Estructuras de la ETS de Arquitectura de = Madrid.
El=20 entendimiento geometr=C3=ADco de las estructuras=20
=20 3D""=20 =20 3D""=20 =20 3D""=20=20

El juego de fuerzas a los que est=C3=A1 sometida cualquier = construcci=C3=B3n=20 plantea
problemas que pueden clasificarse en tres tipos:
-=20 estabilidad
- resistencia
- rigidez
El procedimiento de = prueba y=20 error conduce, con mayor o menor n=C3=BAmero
de fracasos a = producir=20 construcciones que acaben comport=C3=A1ndose de manera
adecuada = en=20 circunstancias normales, y una vez validado un prototipo por=20 la
experiencia =C3=A9ste puede repetirse conduciendo a unos = resultados=20 an=C3=A1logos.
El siguiente paso es inmediato, en la base del = proceso de=20 raciocinio
humano, est=C3=A1 el impulso de generalizar y = abstraer, lo que=20 permite pasar del
objeto al tipo, y a=C3=BAn dentro de = =C3=A9ste, el diferenciar=20 distintos elementos o
caracter=C3=ADsticas que permitan, de = forma limitada,=20 una combinatoria de formas
que puede articularse un cierto = protocolo de=20 predicci=C3=B3n que permita al menos
acortar los costosos = procesos de prueba=20 y error inherentes a un razonamiento
basado en objetos=20 individuales.
En nuestra tradici=C3=B3n cultural la l=C3=ADnea = de razonamiento=20 cristaliz=C3=B3 pronto en
los sistemas de reglas de = proporci=C3=B3n.
"Si una=20 estructura funciona, otra que guarde las mismas = proporciones
funcionar=C3=A1=20 igualmente".
Esta regla, aplicada al objeto completo permite = prescindir=20 del tama=C3=B1o, y
por lo tanto, generalizar a gran n=C3=BAmero = de objetos lo=20 aprendido en uno, y
aplicada a las partes, puede admitir, con = mayor=20 dificultad, unas ciertas
variaciones tipol=C3=B3gicas a base de = la=20 combinaci=C3=B3n de elementos o a su
repetici=C3=B3n con mayor = o menor=20 profusi=C3=B3n.
La idea se revel=C3=B3 tan fruct=C3=ADfera que = ha sido empleada como=20 =C3=BAnico
instrumento de predicci=C3=B3n del comportamiento = estructural hasta=20 bien entrado el
siglo XIX cuando la aparici=C3=B3n de nuevos = materiales, y=20 de nuevas necesidades
tipol=C3=B3gicas, hizo que la "industria" = volviera los=20 ojos hacia nuevos m=C3=A9todos de
predicci=C3=B3n cuya base se = remonta a 1638 con=20 la publicaci=C3=B3n por Galileo de su
obra.
"Consideraciones = y=20 demostraciones matem=C3=A1ticas sobre dos = nuevas
ciencias".
En la que se=20 ponen en crisis los fundamentos de las reglas = de
proporci=C3=B3n y se=20 introduce el paradigma de la resistencia como eje = fundamental
del=20 entendimiento del problema estructural.
Con Galileo se inicia = una nueva=20 manera de pensar mucho m=C3=A1s
abstracta. Aparecen y se = refinan=20 posteriormente las nociones de fuerza,
momento (empleado por = Galileo en=20 una acepci=C3=B3n distinta de la actual), tensi=C3=B3n,
etc., y = la l=C3=ADnea de=20 razonamiento por =C3=A9l iniciada, permite prescindir = incluso
(aunque ello=20 no fue evidente hasta mucho m=C3=A1s tarde) del "tipo=20 geom=C3=A9trico"
imprescindible para la aplicaci=C3=B3n de = reglas, que por=20 repetici=C3=B3n hab=C3=ADa sido un
ingrediente imprescindible = de los distintos=20 estilos arquitect=C3=B3nicos.
Con Galileo el problema = estructural entra en=20 el campo de la curiosidad
cient=C3=ADfica y una sucesi=C3=B3n = de hombres de=20 ciencia sin la menor relaci=C3=B3n con la
industria de la = construcci=C3=B3n en=20 los dos siglos siguientes, elabora sobre el
problema, hasta que = en el=20 siglo XIX, la manera "cient=C3=ADfica" de abordar el
problema = conecta con la=20 industria y permite hacer frente al reto de usar los
nuevos = materiales,=20 generar formas que no hab=C3=ADan sido utilizadas antes = y
construirlas con=20 cierta seguridad, prescindiendo de procesos de prueba y = error,
o al=20 menos acort=C3=A1ndolos radicalmente; la nueva forma de ver los = casos=20 entierra
en poco tiempo el antiguo sistema de reglas de = proporci=C3=B3n=20 conden=C3=A1ndolo al
olvido de forma injusta.
Galileo = empieza=20 pregunt=C3=A1ndose la causa de la resistencia de los = s=C3=B3lidos
que atribuye al=20 "horror al vac=C3=ADo", aunque aclara que no es lo mismo el = vac=C3=ADo
que dejan=20 los s=C3=B3lidos al romperse, que el de los l=C3=ADquidos que solo = da para
elevar=20 el agua unos 10 metros mediante una bomba aspirante.
Centrado = en la=20 resistencia, observa que el =C3=A1rea de los cortes y por = tanto
su=20 resistencia crece con el cuadrado de la raz=C3=B3n de semejanza, = mientras que=20 la
masa, causa de las fuerzas, lo hace con el cubo de la misma=20 raz=C3=B3n
- aqu=C3=AD cabe hacer el inciso de que en la = =C3=A9poca era imposible=20 referirse de
manera inteligible a dimensiones o valores = concretos, ya=20 que no exist=C3=ADa un
sistema de medidas con un =C3=A1mbito = mayor que la zona de=20 influencia de una
ciudad (de ah=C3=AD la necesidad del sistema = m=C3=A9trico que=20 no se impone hasta dos

siglos m=C3=A1s tarde) por lo que parad=C3=B3jicamente Galileo = al iniciar el=20 cambio del
paradigma geom=C3=A9trico al num=C3=A9rico, emplea = un lenguaje de=20 geometr=C3=ADa y
proporciones, el =C3=BAnico universal = disponible en el=20 momento.
En su formulaci=C3=B3n, un hueso tres veces mas largo = deb=C3=ADa tener=20 un
di=C3=A1metro nueve veces mayor "a no ser que estuviera = hecho de un=20 material m=C3=A1s
resistente", se entiende que "para mantener = la tensi=C3=B3n",=20 aunque no manejaba
ese concepto.
Teniendo en cuenta que los = huesos=20 forman la parte comprimida de un
sistema complejo, el = c=C3=A1lculo de=20 Galileo es incorrecto, basta un di=C3=A1metro
27 =3D 3 3 = =E2=89=85 5 veces mayor para=20 mantener la tensi=C3=B3n, lo que no
desvirt=C3=BAa el = argumento.

El error procede de haber calculado con anterioridad la = proporci=C3=B3n=20 de
di=C3=A1metros de dos cilindros en voladizo sometidos a su = peso propio,=20 en cuyo
caso la relaci=C3=B3n de di=C3=A1metros es en efecto el = cuadrado de la=20 raz=C3=B3n de
semejanza
La expresi=C3=B3n rigurosa de la = observaci=C3=B3n de=20 Galileo es:
"En una estructura, las tensiones debidas al peso = propio=20 crecen
linealmente con el tama=C3=B1o siempre que se mantengan = invariables,=20 material,
esquema y proporci=C3=B3n".
Con esta = formulaci=C3=B3n, resulta mucho=20 m=C3=A1s clara su siguiente afirmaci=C3=B3n:
"De lo que se ha = demostrado hasta el=20 momento, como pod=C3=A9is ver, se
infiere la imposibilidad de = poder, no solo=20 en el arte sino en la misma naturaleza,
aumentar los mecanismos = hasta=20 dimensiones inmensas, de modo que ser=C3=ADa
imposible fabricar = naves,=20 palacios o templos enormes, de tal forma que sus
remos, patios, = vigas,=20 cerrojos y en suma todas sus partes, = pudiesen
sostenerse".......=20 "ser=C3=ADa" igualmente imposible construir estructuras =C3=B3seas = de
hombres,=20 caballos u otros animales que pudiesen mantenerse y realizar=20 sus
propios menesteres, a no ser que se utilizara un material = m=C3=A1s duro=20 y resistente
que el normal, en caso de que no se les agrandaran = tales=20 huesos de modo tan
desproporcionado que la figura y aspecto del = animal=20 en cuesti=C3=B3n llegase a ser
algo monstruoso" = .....
Mientras que el=20 argumento de resistencia es correcto, el de
dimensionado no lo = es, al=20 menos referido a los edificios de su =C3=A9poca, en que el
peso = propio era=20 de lejos el factor dominante en las fuerzas virtuales sobre=20 una
estructura.
Basta considerar el equilibrio en la clave = de una=20 c=C3=BApula esf=C3=A9rica de
Radio (R), y espesor (t) y = construida con un=20 material de peso espec=C3=ADfico (=CF=81) ,
la tensi=C3=B3n = solo depende del tama=C3=B1o=20 =E2=80=9CR=E2=80=9D de la c=C3=BApula y no var=C3=ADa con el = grueso
=E2=80=9Ct=E2=80=9D.
Puede efectivamente=20 calcularse el tama=C3=B1o m=C3=A1ximo de la c=C3=BApula
R =3D 2 = =CF=81 =CF=83
=CF=81
=CF=83
es la=20 altura de un prisma que sometido a su propio peso tiene en
su = base una=20 tensi=C3=B3n (=CF=83) .(Ver figura)
Para una f=C3=A1brica, el = valor de
=CF=81
=CF=83
se=20 mueve entre 50 y 100 metros, el
valor mas conservador da un = radio de=20 100 metros y un di=C3=A1metro de 200 metros.
Este sencillo = c=C3=A1lculo,=20 reivindica por una parte las afirmaciones de Galileo
- las = reglas de=20 proporci=C3=B3n no aseguran la condici=C3=B3n de resistencia- y = por otra
parte=20 permiten comprender que la observaci=C3=B3n era irrelevante, en=20 t=C3=A9rminos
pr=C3=A1cticos, las mayores c=C3=BApulas, andaban = por el 20% del tama=C3=B1o=20 m=C3=A1ximo.
La estabilidad de una construcci=C3=B3n en su = acepci=C3=B3n m=C3=A1s simple=20 significa
que su geometr=C3=ADa y distribuci=C3=B3n de masas = hace posible el=20 equilibrio de fuerzas.
El equilibrio puede justificarse de = forma=20 gr=C3=A1fica, y el gr=C3=A1fico es
independiente del = tama=C3=B1o siempre que se guarde=20 la proporci=C3=B3n de las masas y
por tanto de las = fuerzas.
Las reglas de=20 proporci=C3=B3n son pues un instrumento adecuado para
verificar = la=20 estabilidad, una vez que se ha desarrollado un tipo viable (lo que = ha
sucedido muy pocas veces a lo largo de la historia).
La = rigidez,=20 cambio de forma de la estructura, no depende del = tama=C3=B1o
sino de la=20 proporci=C3=B3n, y la estabilidad en su segunda acepci=C3=B3n = (limitaci=C3=B3n de=20 la
amplificaci=C3=B3n de las imperfecciones) depende de la = rigidez y es por=20 tanto,
tambi=C3=A9n una cuesti=C3=B3n de proporci=C3=B3n.
En = consecuencia la=20 utilizaci=C3=B3n de reglas de proporci=C3=B3n puede aplicarse = a
asegurar la=20 estabilidad y la rigidez, no as=C3=AD la resistencia, a no ser que = se=20 matice
con consideraciones adicionales sobre el = tama=C3=B1o.
De hecho las=20 estructuras de f=C3=A1brica no tienen problema de rigidez, ni=20 de
resistencia, dado su tama=C3=B1o, muy alejado de los = m=C3=A1ximos posibles,=20 solo era
necesario asegurar la estabilidad para lo que las = reglas de=20 proporci=C3=B3n eran un
instrumento perfectamente v=C3=A1lido, = lo que explica su=20 persistencia en la industria
hasta que los nuevos materiales = hicieron=20 posibles nuevos tipos para los que ya
no se desarrollaron = reglas de=20 proporci=C3=B3n, aunque hubieran sido = perfectamente
v=C3=A1lidas, si la comunidad=20 de dise=C3=B1adores hubiera tomado por ese camino en
lugar de l = de analizar=20 cada estructura como un objeto individual y no como
miembro de = una=20 familia.
Hay una doble explicaci=C3=B3n de lo sucedido:
El = cambio de=20 actores, los arquitectos acostumbrados a pensar = en
t=C3=A9rminos geom=C3=A9tricos=20 no participan en el cambio, o lo hacen como sujetos
pasivos, y = los=20 nuevos actores son ingenieros, con una formaci=C3=B3n = num=C3=A9rica.
El paradigma=20 num=C3=A9rico mucho m=C3=A1s potente te=C3=B3ricamente tropezaba = en
la pr=C3=A1ctica con el=20 dif=C3=ADcil manejo del aparato matem=C3=A1tico, cuyas sutilezas = y
posibles=20 atajos centran el esfuerzo de la =E2=80=9CComunidad = estructural=E2=80=9D hasta que ya
a=20 mediados del siglo pasado empieza a ser evidente que los = ordenadores=20 permit=C3=ADan resolver el problema (aunque pasar=C3=ADan = bastantes a=C3=B1os hasta que=20 lo
hicieran de forma eficaz).
Resuelto el problema = pr=C3=A1ctico del=20 an=C3=A1lisis no est=C3=A1 de m=C3=A1s recordar que
un enfoque = del entendimiento de=20 las estructuras m=C3=A1s ligado a la geometr=C3=ADa, y
por = qu=C3=A9 no a reglas de=20 proporci=C3=B3n, facilita la toma de decisiones de = dise=C3=B1o.

------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.acies-ed.com/files/med/RIMG0001.JPG /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg SlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0a Hx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAZABL AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A 9/qB7jbfxW2zPmRPJuz02lRjH/Av0pLgXJIME8MagfN5kRb+TCuT0W8ur02eoWM8LWzW82IPIZjE PMQHb8/I+XIXsOnYUAdpRVCI308YkivbRkPQi2b/AOLp/l6j/wA/Vr/4DN/8XQBcoqp5d/z/AKVb e3+jt/8AF0FL/tdW3/gO3/xdAFuiqmy//wCfq2/8B2/+LoKX/a5tv/Adv/i6ALdFVdl9kf6Tb4wM /uG/H+OrVACVSXnXZBgYS2X/AMeZv/iau1kvdw2niC6NxMkatawbdx6nfLn+lAFya3kR2ntNqynl 424WXjv6Hpz+eajbU0+z71iczCRY2gbAZWY4Ge2O+RkHtmnjVLEgEXcWD/tVzN/q9i+qPcT6zYxW cMqiKc3UQEZ2jIPIOMhshj3GMYBAB0/210GZrK5jUdWAD/opJ/SpoZ4rlN8MiSKDglTnB9D6Gs6y 8QaddAIb+zaToGimVkk91OfY5HUfTBK3l3pOTO+pW1vLGP8AXCdVKgc85OCPY8d6ANWisfTdVmn1 W60+7MCTwAFUTOZFwP3g9juAx1BB5PBrXoAWimo6SIHRwynoQcg0tAC1mSXC22q3buCf9HgCqv3m YvKABVjUL4WFv5phkmOSAiFQeAT1YgDgHqaqxwNN4muJ2wYoLeNUH/TQl8n8FIx/vmgCytobjEl7 hz2hBzGv4fxH3P4AUl6gZ7OEqDC8pR028MvlvwfbpVyqOoyLFNYSyMFRLgliT/0zcfzIoAyrrRLK I7Jy1vGMeVdRttKkc4Y9j6MME9M564+rXGtm1+x6iqvaiNpBdbVRZ4wCD5sZyQwJTCr1zng/KvXG 2OoKTdx/uCPlgP8ANvf0Hb69MnXmltdFu4pg0xiieW2kPJcBTuQn+9t3AZ6g/WgDRE9tqNsRYXMU t1akY+blHx91x1GRwQecGnxzHVY0aMPHasoZieGbPO32x0P4j1rNvdNWa4QLAZLKE8yRgieEgYxE w+bbyc45HIGc4VNHt54Jrq5jMV66t5JlL7WkT/Wggj5CcyNxhevXigDogAoAAwBwAKWq0V9FJIIn DQzHpFKNrH1x2b8CasUARXNpb3kPlXMKSx5ztcZH+eo/E1QhsrS51LUJZrWGRxKibnjDHiNT3+ta lUbD/j91Tp/x8r/6JjoAf/ZOnf8APjbD6RKKzdWbR9Kax+0afA4luQiERr+6JBBc56AA4J7bq3aa 8ccn30VvqM0AVZNI0+VSrWcOCMcLj+VVNV0jTm0e8WSzhZPIckMuRwOta9VNUXdpF6uCcwOMD/dN AGfYaWUuplntnjhDMIgpQR7M/LgL8wOPXP8ASiy09rbVpxZOYLQXDPNEijDsY48Ek8g9emc5/Gtu qlmc3Wocni4HX/rlHQBZlhinjMc0aSIequuQfwpwAUADgDgUUUAFUNP/AOP7Vef+Xpe//TGKrctx BBnzpo48Izne4Hyr1PPYZGT71T03P27Vyen2tcf9+YqANCilooASqerANo18pOAbeQZ/4Cau1R1l S+h6go6m2kA/75NAF2qViQbzU/a5XP8A36jq9VKx/wCPzUv+vkf+io6ALlFLRQBlaz4fs9cMX2tp QI0kQCNsZDgA59RgdOlT6ftM+oMoxm5OfqEQf0pxnvgxAsUIB4Pnjn9Kr2hvoBNvsV+eVnG2YdD+ FAGpSVUN1dA/8g+Q/wC7In9TSi6uO9hN/wB9p/8AFUAWqp6vzo16AcFoXUH6jFO+1z99PufwaP8A +Kqtfy3NxYzQx6fchnXAO+If+z0AalUbH/j81L/r5H/oqOnC8nP/ADDbof8AAov/AIuq9tLcxXF4 7adc7ZZQ64aLp5aL/f8AVTQBp0VVS6maRVOn3KAnBZmjwPfh81aoAKKKKACiiigAooooAKKKKACi iigD/9k= ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.acies-ed.com/files/peq/RIMG0001.JPG /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg SlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0a Hx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAMgAm AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A 9uv9RNrPFAInLyEEYK5KhlBIBPT5gPxFWlnZlBW3kIPIIK4P/j1MvHVBDvIVTKMknAGMn+lU9Q1C GyhMsNwmXz8oYEA4J3e2MfT+dAGh5r/8+8v5r/jR5r/8+8v5r/jVaK9jeISxXcMqdw7KD+Y4/SrF rdxXkbPESQrFGB6gigCRGZicxsn+9j+hopwIIyORRQBTupszwxxcyiQA8cDKtz+HXH+NPnjSK1k9 WG1nPU545NJcwxNPblo0YtJgkqDnCNj+tFzZJJbusEcEcpHyu0QYD8KAMq901BHJLA0ltEwxuiOC w/usOm09j1GfQ0W11cj7NG0I2sgRmjJG4AZyByeACOOucccVsNaWuCTbQk45ygqhDptvFbWaYbJk 3hs4ZflJwCOg7Y9KANOOSN1/dkYHGBxj2I7UU/A3bsDdjGe9FAFa4dTc2qggkTHIB6fI9Waz2S2S +FxHbuJZHBlcQtlsIVGePerf2iMn7sv/AH6b/CgB05228hxnCk4/CoWG37EPR8f+ONSXM6taTKqS lijAARN1x9KSWdTJblUmwsmT+6bgbWHpQBcopiSrJnaHGP7ylf50UAPooooAKSiigAooooA//9k= ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.acies-ed.com/files/peq/RIMG0003.JPG /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg SlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0a Hx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAMgAm AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A 98dwgyQfWmwSFoFZ+Gxznjn8hRJkyL8jMo9CMZ/+tTbtlEHzbyNwOEBzwcnGOegoAmyD0rF1jWYo Fa0hIaaRSrN2i68n8jgd6bfahMl0bKxV1mlC/vZs7UBzyM9T7f4jMMWi2VvpV20qmSUmQmYsd7nJ 9Oc57UAXoXV41kLLKJAWGAvr6njH+NFQaLBG/wBoE1uA8chj+YZBAwQR1/vUUAa08rxgCNFZjwAS Rn9PTNQRu9zbW0pJjeTJyByuVPqPp1FTlZDPkpEU6A/xY7/0pHwssSKvCqzAD2GMfrQBmrtt9ZuZ 2nQbkRQ7gDON2Rj+I9OfoO1TG90428xjvIHO05beOpGfoKpxyPeX8tmUeOMnzHDAfd3Hjj1LZq7q EX2WIXdujGSEZKg/eQDJBz7frigCjokq2sF19plWN2uXI3sOQcEfoRRVPw3OJoJ9iyLEWVl3bcEl AD75G3vRQB1lRN/x9R/7jfzWpKy9UmihuYDLqTWQ2MMqU+bJUD7yn9KAGQxRNrt27IC42jn/AICR /M/nV+9Ba2ZArNvBX5TjGQef/wBVZFlPBHetIZ3lEqkmeTADkSbR0AHQDoOgzWtLe2yqrGZCAf4T nt7UAc94et4LK1mEG7Dvn5mzwMgfoBRVXQ7t44JUmtLuMgjAMDNnjn7ue+aKAO0rlpXd5SXZmOAM k59aKKAOhsQBZR4AHH9asUUUAFFFFAH/2Q== ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.acies-ed.com/files/peq/RIMG0005.JPG /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg SlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0a Hx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAMgBD AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A 9+oozis+DX9Gurv7Jb6tYTXOceTHcoz5/wB0HNAFu5ureygae7uIoIVIBklcKoycDk8dalBDAMCC DyCO9c/4o8PXevGwNpqYsjay+YQ0AlDEFWVgCQA6lRgnPU8HNZh+H+1sxa7dAn7xksrNj+H7kY/W gDptR1ex0qBpbu4VCBlYwcu59FXqT7Cqvh/XDrkV4xtvJNtcNAcMXVivXDFRkg5BxkZHBNZkPw+0 NEk+0m9unkGGeS6dPxCxlVB9wAa3dI0qz0PSrfTbCNktoF2oGYseSSSSeSSST+NAF2iuL8bfECDw 0DY6fHHe6uy7vJLfLAv96THI9h1Pt1rkZpfi29iurrexwjaZPsxt4dgXaW5By/PA65HegD2KivMt B+Nfh680S2m1iYWeokFbiBBlVYEg4PocZ/GigDJ8e+INR8SeLm8J6TIy2dsQl1sxieRhyh9QuRwc c5z0GNJPg5anTwXv5RfDJU/wqeoAIwevf9K43w7cQ2XxPuprkCSVtYvDLx9wrIQCOfQtXvovLYwp N9oiEb/dYsADQB5RBrvi3TZm02TUZ554W8vy2hSR8jgYbbls4zzk81Yi1D4kXs0aQPLErcEzaese PxYY/wA9K9BtYdMj1S5u457eS6n5JDgsqqACBz06H8a1aAPJ/N+KkVysfn+YW6hraLaP+BKMfmas W9r8R9egBGsx2Vsep8lY2kHPAIUsO3Ix7GvTJAzxMI5AjEEK+M4P0rHvNJ1e5VgmvPGChXasCqM4 65ByPzoA4lvB3/CNul/fXVp5McglkYy4aQghjncPmJwfr+NVvE/xt0pbe403w3Dc6hqkw8m2McYI LtxkKeTj0xye2K5H4p+HPEVjGpkmlntWwGeFmJfnOMn+LAPrXsfg218I/wBkRXPhS209bcLsMlvG BICOzn72713c0AeX6H+z/b3ujW13r13LBqk4MlxFEAVQkkhfqBgH3zRXutFAHzV8V9H1Pwj42n1e 0V/sOoTC5hm5KrL/ABxt9SS30PHQ1zN3451+7WNIvJWR2CIYRvkdj0wPXJ/WvrW7s7XULWS1vLeG 4t5Bh4pkDqw9weDWLpXgXwtol79t07QrKC5Bysojyyn/AGSc7fwoA8AuvC/xU03Txcz2N5PCyDKR GOd1HXBRfmz64BrMbxH4zkUJJZ3Bkz8ytYPnd9K+sqKAPlO1l+JVzsNroGoOByrGwdB+BOB2rqtO 1P4saRC11e+GLq5tk5IWT94q+gCtvx7V9BUUAeS+Dfi3o2v209prcyRoEzsuk3M3PTAB3f8A6q5z wjrNjbfH02XhhmGkX0UiTxKPkBWMuDjthhgegbHtXTeMvgVpPiXVpNT03UZNIuZn3zKsIkjZu7Bc qVJPJwce1b3w++F2k+AVmnhme91KZdkl3KoUhc52qvO0dM8nOKAO5ooooAWiiigA7UUUUAFFFFAB RRRQAlFFFAH/2Q== ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.acies-ed.com/files/peq/RIMG0010.JPG /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg SlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0a Hx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAMgBD AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A 9+opaKAEJCgliAB1Jqq8txJau0flwuAdsknKj0OOM9s9PxpLzyUkgmePfKGKRHBIBIyScdsL19qj ngW5g3xutw6MGYAg7sc7Rnhc/wD6/WgCctODG/DxjkmLncMeh6D6E1Ik8Mj7EkUvjJXPzD6jqKzr e3ntJAZXiSEKFGwYZmwPT7xyD1Hepra7SW4/exBJTlEkOAXHp1yOQ3H+yTQBfopaKAEopaKACql/ e/YURzE0gZiMKcEcE/0x+NWqbJGs0TxOMo6lWGcZBoAz5r1ZLQysjIyy4i2MCW7Z79ieKii0+6ie W9luWknZc7GOAgHYEcD8iOvWr4soVl81Q3mBNikuxCj2GcA+/WpWbdGvbfgYz/ntmgDIfSZr+3t3 1CWRbnAysTYUHHOe2Bjgew5PWrKW01ng+VDcKuOQgVxgYH5D8amMsv2yMiLMT8b+uBgn8Og/MVbo Aw0tZJ7l5I5pzHJMd6EEeVxnoTjvjI6cdxxu0lFAC0UlFAC0UUUAJVc5kYRZ6Z3D0Gf8P51YqGOB 0up5mkDLJtCrtwVAHPOef0oALmCSYIEmaIBgW2/xD0qGS0uJ7J4JLn5miKFgv8XZuMflUF4lzJfl bcnhI92XYBQWbJwGHYH8hUWqRGHTZJ2JiaKQPkTOxZAc49eRxgfnQBJplpOsrT3EspZS6ASDkjOc 9Txzx+FalYvh8qEdBOk7eVGxcS+YxyXOWPr2/CtqgAooooAWkoooAKKKKAIpLa3mffLBE7YxuZAT ikS0to23JbxK3qqAUUUATY5zRRRQAUUUUAf/2Q== ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.acies-ed.com/files/peq/RIMG0012.JPG /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg SlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0a Hx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAMgBD AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A 9/qq8RkmZ0vZE2H50G0gcA4ORxx/OrNVP7Ss1Fwz3dqqQDMjecPkG3OW/u8c/TmgBEhn+zk/2gzB grCTYvABye3QihYLs5ddQ3IwyMxKQPQjH/16ZNqMC6etwtzbBWC8mQMpzxgEHnrx606yuUeMnzoz FgbPnXcPrt49MYoAktrjc7W8rHzk7sm0OMnlRk8VarASa2nRYYp4pVZTukWcMhfjDbuuevHt+Nbw YHOCDjrzQAUtZCX1w89wkV3aSqr7VKxOxXnocHBI9sVYt5rxplWZrYrnDCMNkcccnigC9RR+FFAB WYIozrV/EyKVntYyykfe5dTn8NorTIBGCMioBY2izGZbSASlQhcRjcVHQZ9KAKNjYwXnhmztp9zo 0EbFgxDbsA7tw5DZ5z60zw8jnSbdp2LSSWsJkJ6uxXLMfcknP0FWNIghOi2J8pObeP8AhH90VV8N Qw/2HZERqQbaE5Izz5YoAfawi0NzZnEqWsCGAyLllQgjaT35X/GtOO3jSJI9oYIoUEgdqz5rG2N5 eytDGWNsg5UcAb/8TWl5UZ6ru/3uf50AZWj28dpNfafEh+zQSgx7jnlxvYZ+rfrWtsXj5Rx046Vl 2McH9q6oiqVcSoWAYjIMaY4/A/lWl5K+r/8AfZ/xoAfRTPJX1f8A77P+NFADiAykHOD6HFM8lPWT /v43+NPOdp2kA44JFQf6U4lUOiFTtVmiyDwDkfN05/SgCro0SHR7X5pPuAf6xv8AGq3h1EbSrLG8 D7FAceY3Hyn3qXTdPvbfRRam/kEwUqsphUFG6ZC5IxnkDJ69azvC2h6lpsR+36vPPJGi25QQLHFh QNpTOTjGep6k0AaUkAOp3wHmEmzjGN59ZPetFUBUMkrhSMjnP865yWHVbTX7iXz5HjuXjEUiR79k argIy4AA3s5zknkcem/BBLFAkTT52jGQmP8AGgCjbWzDxFfzLNJtaCFWIIxuBfjGOuCv5itPy2/5 7P8Ap/hXLWF/Npct/DeSBSk7ytcMybXBfgnJGMDaMHp+FbH9rwABnvLdVJA3EAjP1DUAaPlt/wA9 pPyX/Cik2zf89I/++D/jRQA+uKvTtvtq8AyTAgd/3poooAsKB/ZMMmPn3j5u/wB+XvXT2H/IPtv+ uS/yoooAsUUUUANKKeSoOfak8qP/AJ5r+X+fU0UUAPooooA//9k= ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://www.acies-ed.com/files/peq/RIMG0013.JPG /9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg SlBFRyB2NjIpLCBxdWFsaXR5ID0gNzUK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0a Hx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAMgBD AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF BQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR BAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A 9lv5X+3NvhUwooCtLkLk8kg/kPwqnpF5FHqV9dMEW1lVI1nRTsLoW3At7bhyeM59DU+q21u2oNKx UsUUMnmonPPJyfTHb05rN8P6FpLajqQfT4JB+7dVllW4C53fd6hOnQAUAb8+vabbbfOuNgf7hZGA f6EjB/Oqmk6zcarrF1HEtq2nQxj97HKHbzD/AA5UkHAznpgkdRzWpbadZWTO1pZ28DP94xRKpb64 HNWPwoAKWiigBKWkpaAEopaKAOLaWFITJJHArcs5dhx3JYmUj8QTUXh/xJpEOo6iDMiLtiXfFHK0 ZPznG7kE4x0PcVR1exuNcmayuW1CLTrRFubuB7gl51Gdq7SvKkqeD1I7YOexstEsF0qK3lsYCpRd ysgOOpC5wMgbiBnn8c0AaFtdW97bpcWs8c8EgykkThlYexHBqWuHs/Bo0nxNNJY6nqkVtcAym0ik 2QK3IyccDjAwBztzknNdNFowWJFkvr+SQIFZ/tLDce5wDgZoA0qqalqthpFqbnULqO3izgFz94+g HUn2FQvpUrZVdUv0jIOEDISPoxUt69T3pDpmmWo8+5RZHTB866fzGGDxy3Tk9qAMLTtRm8ZTmRGu 7HTURZI41doZ5QxO2RipyqnY2F7g5JzwNBYpPDslqv2y6ubOaVLci5lMrh24DbjzycAjJHPGKhu9 Y0rw/ftFAjzXE6BzaWw3yudxAKL353ZHbFXIpL3WpYjNp8tlYxSCQi5I82VlIK4CsdoDDPJzwBjk 0AbNFLRQByekBbPxhcLJCI/tdlH5bFSuTG7bgBsUdHUnv09q6K31Kxu4BNb3cMkXzfMrgj5ThvyP B9K4e7spPtMc1ullBqFqTsbzpIyuRgghmAwQeuD2Iqi2i22u61e3R8KY1DyPLmkjvI/IYybwz7Uc Elgqgk/NhuRxyAehrrGltK8S6jaGSM4dBOuVOccjPHIIq0JYzGJA6lCMhs8Eeua4y3+G+lx2RBWG K7khaORoraMIdw542hmAwMEndwOetasegXy26RtfWbOv/LX7G2717ykc/THJ45oA2pr60tyBPcwx EsFAeQLyeg570yI2F+guITb3CnpIm1xyOxHtis2Xw2lzaLbXeoXcsYUqUAjRcEYIwF6Y4+nFVH8N S6fefbtOu7gtuDNDlAGbnnGArZ3Hjg/7QoAp6tod1ouuR+JNDsxdvHbmC4szJhnQlSWQscb/AJQe cZxjvx1lndw39lBeW774J41ljb1VhkH8jXLahf8AiG6W5sIbaIRzhkS4WCYOikkY2suzdgjkttzk +x6HRdPGk6LaWChAIIwu1Pur7L/sjoPbFAF/NFJRQB5/qeo30fiHUIkvLhY0kAVRKwAG0dBmtjwn cTXF7qTTTSSkLCAXYtgfP60UUAdTRRRQAUUUUAJS0UUAFFFFAH//2Q== ------=_NextPart_000_0000_01C96222.73319850 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Location: http://www.acies-ed.com/modules/cck/content.css .field .field-label { FONT-WEIGHT: bold } .field .field-label-inline { FONT-WEIGHT: bold } .field .field-label-inline-first { FONT-WEIGHT: bold } .field .field-label-inline { DISPLAY: inline } .field .field-label-inline-first { DISPLAY: inline } .field .field-label-inline { VISIBILITY: hidden } .node-form .number { WIDTH: auto; DISPLAY: inline } ------=_NextPart_000_0000_01C96222.73319850 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/modules/node/node.css .node-unpublished { BACKGROUND-COLOR: #fff4f4 } .preview .node { BACKGROUND-COLOR: #ffffea } #node-admin-filter UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #node-admin-buttons { FLOAT: left; MARGIN-LEFT: 0.5em; CLEAR: right } TD.revision-current { BACKGROUND: #ffc } .node-form .form-text { WIDTH: 95%; DISPLAY: block } .node-form .container-inline .form-text { WIDTH: auto; DISPLAY: inline } .node-form .standard { CLEAR: both } .node-form TEXTAREA { WIDTH: 95%; DISPLAY: block } .node-form .attachments FIELDSET { DISPLAY: block; FLOAT: none } ------=_NextPart_000_0000_01C96222.73319850 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Location: http://www.acies-ed.com/modules/simplenews/simplenews.css .simplenews-subscription-filter .form-item { LINE-HEIGHT: 1.75em; MARGIN: 0pt 1em 0pt 0pt; CLEAR: both } .simplenews-subscription-filter .form-item LABEL { WIDTH: 12em; FLOAT: left } .simplenews-subscription-filter .spacer { MARGIN-LEFT: 12em } .simplenews-subscription-filter .form-select { WIDTH: 14em } .simplenews-subscription-filter .form-text { WIDTH: 14em } .block-simplenews .issues-link { MARGIN-TOP: 1em } .block-simplenews .issues-list { MARGIN-TOP: 1em } .block-simplenews .issues-list .newsletter-created { DISPLAY: none } ------=_NextPart_000_0000_01C96222.73319850 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/modules/system/defaults.css FIELDSET { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; = MARGIN-BOTTOM: 1em; PADDING-TOP: 0.5em } FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } HR { BORDER-BOTTOM: gray 1px solid; BORDER-LEFT: gray 1px solid; HEIGHT: = 1px; BORDER-TOP: gray 1px solid; BORDER-RIGHT: gray 1px solid } IMG { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-LEFT-WIDTH: 0px } TABLE { BORDER-COLLAPSE: collapse } TH { BORDER-BOTTOM: #ccc 3px solid; TEXT-ALIGN: left; PADDING-RIGHT: 1em } .clear-block:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: = "." } .clear-block { DISPLAY: inline } * HTML .clear-block { HEIGHT: 1% } .clear-block { DISPLAY: block } ------=_NextPart_000_0000_01C96222.73319850 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/modules/system/system.css TH.active IMG { DISPLAY: inline } TR.even { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0.1em; BACKGROUND-COLOR: = #eee; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.1em } TR.odd { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0.1em; BACKGROUND-COLOR: = #eee; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.1em } TD.active { BACKGROUND-COLOR: #ddd } TBODY { =09 } TBODY TH { =09 } THEAD TH { BORDER-BOTTOM: #ccc 3px solid; TEXT-ALIGN: left; PADDING-RIGHT: 1em } .breadcrumb { PADDING-BOTTOM: 0.5em } .error { COLOR: #f00 } DIV.error { BORDER-BOTTOM: #d77 1px solid; BORDER-LEFT: #d77 1px solid; BORDER-TOP: = #d77 1px solid; BORDER-RIGHT: #d77 1px solid } DIV.error { BACKGROUND: #fcc; COLOR: #200 } TR.error { BACKGROUND: #fcc; COLOR: #200 } DIV.warning { BACKGROUND: #ffd } TR.warning { BACKGROUND: #ffd } DIV.ok { BACKGROUND: #dfd } TR.ok { BACKGROUND: #dfd } .item-list .icon { PADDING-LEFT: 0.25em; FLOAT: right; COLOR: #555; CLEAR: right } .item-list .title { FONT-WEIGHT: bold } .item-list UL { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0.75em; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } .item-list UL LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: disc; MARGIN: 0px 0px 0.25em = 1.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .form-item { MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em } TR.odd .form-item { MARGIN-TOP: 0px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 0px } TR.even .form-item { MARGIN-TOP: 0px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 0px } TR.merge-down { BORDER-BOTTOM-WIDTH: 0px !important } TR.merge-down TD { BORDER-BOTTOM-WIDTH: 0px !important } TR.merge-down TH { BORDER-BOTTOM-WIDTH: 0px !important } TR.merge-up { BORDER-TOP-WIDTH: 0px !important } TR.merge-up TD { BORDER-TOP-WIDTH: 0px !important } TR.merge-up TH { BORDER-TOP-WIDTH: 0px !important } .form-item INPUT.error { BORDER-BOTTOM: red 2px solid; BORDER-LEFT: red 2px solid; BORDER-TOP: = red 2px solid; BORDER-RIGHT: red 2px solid } .form-item TEXTAREA.error { BORDER-BOTTOM: red 2px solid; BORDER-LEFT: red 2px solid; BORDER-TOP: = red 2px solid; BORDER-RIGHT: red 2px solid } .form-item SELECT.error { BORDER-BOTTOM: red 2px solid; BORDER-LEFT: red 2px solid; BORDER-TOP: = red 2px solid; BORDER-RIGHT: red 2px solid } .form-item .description { FONT-SIZE: 0.85em } .form-item LABEL { DISPLAY: block; FONT-WEIGHT: bold } .form-item LABEL.option { DISPLAY: inline; FONT-WEIGHT: normal } .form-checkboxes { MARGIN: 1em 0px } .form-radios { MARGIN: 1em 0px } .form-checkboxes .form-item { MARGIN-TOP: 0.4em; MARGIN-BOTTOM: 0.4em } .form-radios .form-item { MARGIN-TOP: 0.4em; MARGIN-BOTTOM: 0.4em } .marker { COLOR: #f00 } .form-required { COLOR: #f00 } .more-link { TEXT-ALIGN: right } .more-help-link { TEXT-ALIGN: right; FONT-SIZE: 0.85em } .nowrap { WHITE-SPACE: nowrap } .pager { TEXT-ALIGN: center; CLEAR: both } .pager A { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; = PADDING-TOP: 0.5em } .pager STRONG.pager-current { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; = PADDING-TOP: 0.5em } .tips { PADDING-BOTTOM: 0px; MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; FONT-SIZE: = 0.9em; PADDING-TOP: 0px } DL.multiselect DD.b { WIDTH: 14em; FONT-FAMILY: inherit } DL.multiselect DD.b .form-item { WIDTH: 14em; FONT-FAMILY: inherit } DL.multiselect DD.b SELECT { WIDTH: 14em; FONT-FAMILY: inherit } DL.multiselect DD.a { WIDTH: 8em } DL.multiselect DD.a .form-item { WIDTH: 8em } DL.multiselect DT { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.75em; MARGIN: 0px 1em 0px 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } DL.multiselect DD { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.75em; MARGIN: 0px 1em 0px 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } DL.multiselect .form-item { MARGIN: 0px; HEIGHT: 1.75em } .container-inline DIV { DISPLAY: inline } .container-inline LABEL { DISPLAY: inline } UL.menu { BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; BORDER-RIGHT-STYLE: none; = LIST-STYLE-TYPE: none; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none } UL.menu LI { MARGIN: 0px 0px 0px 0.5em } LI.expanded { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: circle; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0.5em; LIST-STYLE-IMAGE: = url(../../misc/menu-expanded.png); PADDING-TOP: 0.2em } LI.collapsed { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: disc; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0.5em; LIST-STYLE-IMAGE: = url(../../misc/menu-collapsed.png); PADDING-TOP: 0.2em } LI.leaf { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0.5em; LIST-STYLE-IMAGE: = url(../../misc/menu-leaf.png); PADDING-TOP: 0.2em } LI A.active { COLOR: #3399cc } TD.menu-disabled { BACKGROUND: #ccc } UL.links { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } UL.inline.links { DISPLAY: inline } UL.links LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } .block UL { PADDING-BOTTOM: 0.25em; MARGIN: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } UL.primary { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: = normal; LIST-STYLE-TYPE: none; MARGIN: 5px; PADDING-LEFT: 1em; = PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; WHITE-SPACE: nowrap; = HEIGHT: auto; PADDING-TOP: 0px } UL.primary LI { DISPLAY: inline } UL.primary LI A { BORDER-BOTTOM: #bbb 1px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: = 0px; BACKGROUND-COLOR: #ddd; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; = HEIGHT: auto; BORDER-TOP: #bbb 1px solid; MARGIN-RIGHT: 0.5em; = BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } UL.primary LI.active A { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #bbb 1px solid; = BACKGROUND-COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb = 1px solid } UL.primary LI A:hover { BORDER-BOTTOM-COLOR: #eee; BACKGROUND-COLOR: #eee; BORDER-TOP-COLOR: = #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } UL.secondary { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 0.5em; MARGIN: 5px; = PADDING-LEFT: 1em; PADDING-RIGHT: 1em; PADDING-TOP: 0.5em } UL.secondary LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; DISPLAY: = inline; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } UL.secondary A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = TEXT-DECORATION: none; PADDING-TOP: 0px } UL.secondary A.active { BORDER-BOTTOM: #999 4px solid } #autocomplete { Z-INDEX: 100; BORDER-BOTTOM: 1px solid; POSITION: absolute; = BORDER-LEFT: 1px solid; OVERFLOW: hidden; BORDER-TOP: 1px solid; = BORDER-RIGHT: 1px solid } #autocomplete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #autocomplete LI { WHITE-SPACE: pre; BACKGROUND: #fff; COLOR: #000; CURSOR: default } #autocomplete LI.selected { BACKGROUND: #0072b9; COLOR: #fff } HTML.js INPUT.form-autocomplete { BACKGROUND-IMAGE: url(../../misc/throbber.gif); BACKGROUND-REPEAT: = no-repeat; BACKGROUND-POSITION: 100% 2px } HTML.js INPUT.throbbing { BACKGROUND-POSITION: 100% -18px } HTML.js FIELDSET.collapsed { BORDER-RIGHT-WIDTH: 0px; MARGIN-BOTTOM: 0px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 1em; BORDER-LEFT-WIDTH: 0px } HTML.js FIELDSET.collapsed * { DISPLAY: none } HTML.js FIELDSET.collapsed LEGEND { DISPLAY: block; FONT-WEIGHT: bold } HTML.js FIELDSET.collapsible LEGEND A { PADDING-LEFT: 15px; BACKGROUND: url(../../misc/menu-expanded.png) = no-repeat 5px 75% } HTML.js FIELDSET.collapsed LEGEND A { BACKGROUND-IMAGE: url(../../misc/menu-collapsed.png); = BACKGROUND-POSITION: 5px 50% } * HTML.js FIELDSET.collapsed LEGEND { DISPLAY: inline } * HTML.js FIELDSET.collapsed LEGEND * { DISPLAY: inline } * HTML.js FIELDSET.collapsed TABLE * { DISPLAY: inline } HTML.js FIELDSET.collapsible LEGEND A { DISPLAY: block } HTML.js FIELDSET.collapsible .fieldset-wrapper { OVERFLOW: auto } .resizable-textarea { WIDTH: 95% } .resizable-textarea .grippie { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND: = url(../../misc/grippie.png) #eee no-repeat center 2px; HEIGHT: 9px; = OVERFLOW: hidden; BORDER-TOP: #ddd 0px solid; CURSOR: s-resize; = BORDER-RIGHT: #ddd 1px solid } HTML.js .resizable-textarea TEXTAREA { WIDTH: 100%; DISPLAY: block; MARGIN-BOTTOM: 0px } .progress { FONT-WEIGHT: bold } .progress .bar { BORDER-BOTTOM: #00375a 1px solid; BORDER-LEFT: #00375a 1px solid; = MARGIN-TOP: 0.2em; BACKGROUND: url(../../misc/progress.gif) #fff; = HEIGHT: 1.5em; BORDER-TOP: #00375a 1px solid; BORDER-RIGHT: #00375a 1px = solid } .progress .filled { BORDER-BOTTOM: #004a73 0.5em solid; WIDTH: 0%; BACKGROUND: #0072b9; = HEIGHT: 1em } .progress .percentage { FLOAT: right } #first-time STRONG { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: = block; PADDING-TOP: 1.5em } TR.selected TD { BACKGROUND: #ffc } ------=_NextPart_000_0000_01C96222.73319850 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/modules/user/user.css #permissions TD.module { FONT-WEIGHT: bold } #permissions TD.permission { PADDING-LEFT: 1.5em } #access-rules .access-type { FLOAT: left; MARGIN-RIGHT: 1em } #access-rules .rule-type { FLOAT: left; MARGIN-RIGHT: 1em } #access-rules .access-type .form-item { MARGIN-TOP: 0px } #access-rules .rule-type .form-item { MARGIN-TOP: 0px } #access-rules .mask { CLEAR: both } #user-login-form { =09 } #user-admin-filter UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #user-admin-buttons { FLOAT: left; MARGIN-LEFT: 0.5em; CLEAR: right } .profile { MARGIN: 1em 0px; CLEAR: both } .profile .picture { MARGIN: 0px 1em 1em 0px; FLOAT: right } .profile DT { MARGIN: 1em 0px 0.2em; FONT-WEIGHT: bold } .profile DD { MARGIN: 0px } ------=_NextPart_000_0000_01C96222.73319850 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Location: http://www.acies-ed.com/modules/cck/fieldgroup.css DIV.fieldgroup { MARGIN: 0.5em 0px 1em } DIV.fieldgroup .content { PADDING-LEFT: 1em } ------=_NextPart_000_0000_01C96222.73319850 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/themes/ACIES_theme/style.css BODY { BACKGROUND-IMAGE: url(../../files/imagenes_web/fondo_body.jpg); = PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; BACKGROUND-REPEAT: no-repeat; FONT: 12px Arial, Helvetica, = sans-serif; BACKGROUND-POSITION: center top; HEIGHT: 100%; COLOR: = #808080; PADDING-TOP: 0px } HTML { HEIGHT: 100% } .ruta { MARGIN-BOTTOM: -10px } .con_sangre { PADDING-LEFT: 35px } .cabecera { POSITION: relative; WIDTH: 100%; HEIGHT: 158px; COLOR: #999 } .pos_menu { MARGIN: 0px auto; WIDTH: 860px } .menu_head { POSITION: absolute; PADDING-BOTTOM: 3px; WIDTH: 860px; BOTTOM: 0px } .barra { TEXT-ALIGN: right; WIDTH: 990px; PADDING-RIGHT: 2px; HEIGHT: 30px; = COLOR: #ff0000; VERTICAL-ALIGN: top; PADDING-TOP: 2px } .all_under_head { MARGIN: 0px auto; WIDTH: 860px } .all_under_head_barra { MARGIN: 0px auto; WIDTH: 990px } .cont_general { MARGIN: 0px auto; WIDTH: 860px } .col_izq { TEXT-ALIGN: justify; MARGIN-TOP: -10px; WIDTH: 150px; FONT: 10px/1.1 = Verdana, Arial, Helvetica, sans-serif; FLOAT: left; MARGIN-RIGHT: 30px } .upnews { BACKGROUND-IMAGE: url(../../files/imagenes_web/upnews.png); TEXT-ALIGN: = left; PADDING-BOTTOM: 0px; MIN-HEIGHT: 33px; PADDING-LEFT: 10px; WIDTH: = 130px; PADDING-RIGHT: 10px; PADDING-TOP: 30px } .betweenews { BACKGROUND-IMAGE: url(../../files/imagenes_web/betweenews.png); WIDTH: = 150px; HEIGHT: 69px } .downnews { BACKGROUND-IMAGE: url(../../files/imagenes_web/downnews.png); = TEXT-ALIGN: left; PADDING-BOTTOM: 30px; MIN-HEIGHT: 33px; PADDING-LEFT: = 10px; WIDTH: 130px; PADDING-RIGHT: 10px; BACKGROUND-POSITION: 50% = bottom; PADDING-TOP: 0px } .upnews A { COLOR: #ff0000 } .downnews A { TEXT-ALIGN: right; COLOR: #ff0000 } .main_cont { TEXT-ALIGN: justify; MARGIN-TOP: -10px; WIDTH: 680px; FLOAT: right } .main_cont2 { TEXT-ALIGN: justify; MARGIN-TOP: -10px; WIDTH: 860px; FLOAT: right } TR.odd TD { PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; = PADDING-TOP: 0.3em } TR.even TD { PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; = PADDING-TOP: 0.3em } H1 { MARGIN-BOTTOM: 0.5em } H2 { MARGIN-BOTTOM: 0.5em } H3 { MARGIN-BOTTOM: 0.5em } H4 { MARGIN-BOTTOM: 0.5em } H5 { MARGIN-BOTTOM: 0.5em } H6 { MARGIN-BOTTOM: 0.5em } H1 { BACKGROUND-IMAGE: url(../../files/imagenes_web/under_title.jpg); = PADDING-LEFT: 40px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 30px; COLOR: = #cccccc; FONT-SIZE: 1.4em; FONT-WEIGHT: bold; PADDING-TOP: 11px } H2 { BACKGROUND-IMAGE: url(../../files/imagenes_web/h2.jpg); PADDING-LEFT: = 40px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 30px; COLOR: #cccccc; = FONT-SIZE: 1.4em; FONT-WEIGHT: bold; PADDING-TOP: 11px } H3 { FONT-SIZE: 1.1em } H4 { FONT-SIZE: 1.1em } H5 { FONT-SIZE: 1.1em } H6 { FONT-SIZE: 1.1em } P { MARGIN-TOP: 0.5em; MARGIN-BOTTOM: 0.9em } A { COLOR: #666; TEXT-DECORATION: none } FIELDSET { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: = #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } PRE { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; = PADDING-BOTTOM: 0.75em; BACKGROUND-COLOR: #eee; PADDING-LEFT: 1.5em; = PADDING-RIGHT: 1.5em; FONT-SIZE: 12px; BORDER-TOP: #ddd 1px solid; = BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.75em } TABLE { FONT-SIZE: 1em } .form-item LABEL { COLOR: #222; FONT-SIZE: 1em } .item-list .title { COLOR: #222; FONT-SIZE: 1em } .links { MARGIN-BOTTOM: 0px } .comment .links { MARGIN-BOTTOM: 0px } #header { =09 } #content { =09 } #header { =09 } #logo { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; VERTICAL-ALIGN: middle; BORDER-LEFT-WIDTH: 0px } #logo IMG { PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; PADDING-LEFT: 1em; = PADDING-RIGHT: 1em; FLOAT: left; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px } #menu { =09 } #navlist { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: = #fff; MARGIN-LEFT: -10px; FONT-SIZE: 15px; PADDING-TOP: 0px } #navlist A { PADDING-LEFT: 10px; COLOR: #fff } .rojo { COLOR: #ff0000 } .menu_sup_act { BACKGROUND-IMAGE: url(../../files/imagenes_web/link.png); = PADDING-BOTTOM: 10px; BACKGROUND-REPEAT: repeat-x; BACKGROUND-POSITION: = 0px 16px; COLOR: #ff0000; FONT-SIZE: 14px } .menu_sup { PADDING-BOTTOM: 10px; COLOR: #fff; FONT-SIZE: 14px } A.menu_sup { COLOR: #fff; FONT-SIZE: 14px } A.menu_sup:active { COLOR: #fff; FONT-SIZE: 14px } A.menu_sup:visited { COLOR: #fff; FONT-SIZE: 14px } A.menu_sup:link { COLOR: #fff; FONT-SIZE: 14px } A.menu_sup:hover { BACKGROUND-IMAGE: url(../../files/imagenes_web/link.png); = BACKGROUND-REPEAT: repeat-x; BACKGROUND-POSITION: 0px 16px; COLOR: = #ff0000 } #subnavlist { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 1.2em; COLOR: = #9cf; FONT-SIZE: 0.8em; PADDING-TOP: 0.5em } #subnavlist A { COLOR: #9cf; FONT-WEIGHT: bold } UL.links LI { =09 } UL.links LI.first { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } #search .form-text { BORDER-BOTTOM: #369 1px solid; BORDER-LEFT: #369 1px solid; HEIGHT: = 1.5em; FONT-SIZE: 1.1em; VERTICAL-ALIGN: middle; BORDER-TOP: #369 1px = solid; BORDER-RIGHT: #369 1px solid } #search .form-submit { BORDER-BOTTOM: #369 1px solid; BORDER-LEFT: #369 1px solid; HEIGHT: = 1.5em; FONT-SIZE: 1.1em; VERTICAL-ALIGN: middle; BORDER-TOP: #369 1px = solid; BORDER-RIGHT: #369 1px solid } #search .form-text { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.5em; WIDTH: 8em; PADDING-RIGHT: = 0.5em; PADDING-TOP: 0px } #mission { PADDING-BOTTOM: 1.5em; BACKGROUND-COLOR: #369; PADDING-LEFT: 2em; = PADDING-RIGHT: 2em; COLOR: #fff; PADDING-TOP: 1.5em } #mission A { COLOR: #9cf; FONT-WEIGHT: bold } #mission A:visited { COLOR: #9cf; FONT-WEIGHT: bold } .site-name { PADDING-BOTTOM: 0px; MARGIN: 0.6em 0px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FONT-SIZE: 2em; PADDING-TOP: 0px } .site-name A:link { COLOR: #fff } .site-name A:visited { COLOR: #fff } .site-name A:hover { COLOR: #369; TEXT-DECORATION: none } .site-slogan { FONT-STYLE: italic; MARGIN: 0px; DISPLAY: block; COLOR: #eee; = FONT-SIZE: 1em; FONT-WEIGHT: bold } #main { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; = PADDING-TOP: 10px } #mission { LINE-HEIGHT: 130% } .node .content { LINE-HEIGHT: 130% } .comment .content { LINE-HEIGHT: 130% } #help { MARGIN-BOTTOM: 1em; FONT-SIZE: 0.9em } .breadcrumb { MARGIN-BOTTOM: 0.5em } .messages { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 0.3em; BACKGROUND-COLOR: #eee; PADDING-LEFT: 0.3em; = PADDING-RIGHT: 0.3em; MARGIN-BOTTOM: 1em; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.3em } .error { BORDER-BOTTOM-COLOR: red; BORDER-TOP-COLOR: red; BORDER-RIGHT-COLOR: = red; BORDER-LEFT-COLOR: red } #sidebar-left { PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #ddd; PADDING-LEFT: 10px; = WIDTH: 16em; PADDING-RIGHT: 10px; VERTICAL-ALIGN: top; PADDING-TOP: 10px } #sidebar-right { PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #ddd; PADDING-LEFT: 10px; = WIDTH: 16em; PADDING-RIGHT: 10px; VERTICAL-ALIGN: top; PADDING-TOP: 10px } #footer { PADDING-BOTTOM: 1em; BACKGROUND-COLOR: #eee; PADDING-LEFT: 1em; = PADDING-RIGHT: 1em; FONT-SIZE: 0.8em; PADDING-TOP: 1em } .title { COLOR: #777; FONT-SIZE: 1.3em; FONT-WEIGHT: bold } .title A { COLOR: #777; FONT-SIZE: 1.3em; FONT-WEIGHT: bold } .submitted { DISPLAY: none } .links { =09 } .links A { =09 } .block { =09 } .box { =09 } .block { =09 } .block .title { MARGIN-BOTTOM: 0.25em } .box .title { FONT-SIZE: 1.1em } .node { =09 } .sticky { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; = PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #eee; PADDING-LEFT: 0.5em; = PADDING-RIGHT: 0.5em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px = solid; PADDING-TOP: 0.5em } .node .content { MARGIN: 0px } .comment .content { MARGIN: 0px } .node .taxonomy { DISPLAY: none } .node .picture { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; FLOAT: = right; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .comment { BORDER-BOTTOM: #abc 1px solid; BORDER-LEFT: #abc 1px solid; = PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; = MARGIN-BOTTOM: 1em; BORDER-TOP: #abc 1px solid; BORDER-RIGHT: #abc 1px = solid; PADDING-TOP: 0.5em } .comment .title A { FONT-SIZE: 1.1em; FONT-WEIGHT: normal } .comment .new { TEXT-ALIGN: right; FLOAT: right; COLOR: red; FONT-SIZE: 0.8em; = FONT-WEIGHT: bold } .comment .picture { BORDER-BOTTOM: #abc 1px solid; BORDER-LEFT: #abc 1px solid; MARGIN: = 0.5em; FLOAT: right; BORDER-TOP: #abc 1px solid; BORDER-RIGHT: #abc 1px = solid } #aggregator .feed-source { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 1em; BACKGROUND-COLOR: #eee; MARGIN: 1em 0px; = PADDING-LEFT: 1em; PADDING-RIGHT: 1em; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1em } #aggregator .news-item .categories { FONT-STYLE: italic; COLOR: #999; FONT-SIZE: 0.9em } #aggregator .source { FONT-STYLE: italic; COLOR: #999; FONT-SIZE: 0.9em } #aggregator .age { FONT-STYLE: italic; COLOR: #999; FONT-SIZE: 0.9em } #aggregator .title { MARGIN-BOTTOM: 0.5em; FONT-SIZE: 1em } #aggregator H3 { MARGIN-TOP: 1em } #forum TABLE { WIDTH: 100% } #forum TD { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; = PADDING-TOP: 0.5em } #forum TD.forum { BACKGROUND-COLOR: #eee } #forum TD.posts { BACKGROUND-COLOR: #eee } #forum TD.topics { BACKGROUND-COLOR: #ddd } #forum TD.last-reply { BACKGROUND-COLOR: #ddd } #forum TD.container { BACKGROUND-COLOR: #ccc } #forum TD.container A { COLOR: #555 } #forum TD.statistics { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; HEIGHT: = 1.5em; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid } #forum TD.settings { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; HEIGHT: = 1.5em; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid } #forum TD.pager { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; HEIGHT: = 1.5em; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid } #forum TD .name { COLOR: #96c } #forum TD .links { FONT-SIZE: 0.9em; PADDING-TOP: 0.7em } #profile .profile { BORDER-BOTTOM: #abc 1px solid; BORDER-LEFT: #abc 1px solid; = PADDING-BOTTOM: 0.5em; MARGIN: 1em 0em; PADDING-LEFT: 0.5em; = PADDING-RIGHT: 0.5em; CLEAR: both; BORDER-TOP: #abc 1px solid; = BORDER-RIGHT: #abc 1px solid; PADDING-TOP: 0.5em } #profile .profile .name { PADDING-BOTTOM: 0.5em } .block-forum H3 { MARGIN-BOTTOM: 0.5em } DIV.admin-panel .description { COLOR: #999 } DIV.admin-panel .body { BACKGROUND: #f4f4f4 } DIV.admin-panel H3 { PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #69c; MARGIN: 0px; PADDING-LEFT: = 8px; PADDING-RIGHT: 8px; COLOR: #fff; PADDING-TOP: 5px } ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/AC_RunActiveContent.js //v1.7 // Flash Player Version Detection // Detect Client Browser type // Copyright 2005-2007 Adobe Systems Incorporated. All rights reserved. var isIE =3D (navigator.appVersion.indexOf("MSIE") !=3D -1) ? true : = false; var isWin =3D (navigator.appVersion.toLowerCase().indexOf("win") !=3D = -1) ? true : false; var isOpera =3D (navigator.userAgent.indexOf("Opera") !=3D -1) ? true : = false; function ControlVersion() { var version; var axo; var e; // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't = in the registry try { // version will be set for 7.X or greater players axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); version =3D axo.GetVariable("$version"); } catch (e) { } if (!version) { try { // version will be set for 6.X players only axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); =09 // installed player is some revision of 6.0 // GetVariable("$version") crashes for versions 6.0.22 through = 6.0.29, // so we have to be careful.=20 =09 // default to the first public version version =3D "WIN 6,0,21,0"; // throws if AllowScripAccess does not exist (introduced in 6.0r47) =09 axo.AllowScriptAccess =3D "always"; // safe to call for 6.0r47 or greater version =3D axo.GetVariable("$version"); } catch (e) { } } if (!version) { try { // version will be set for 4.X or 5.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version =3D axo.GetVariable("$version"); } catch (e) { } } if (!version) { try { // version will be set for 3.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version =3D "WIN 3,0,18,0"; } catch (e) { } } if (!version) { try { // version will be set for 2.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); version =3D "WIN 2,0,0,11"; } catch (e) { version =3D -1; } } =09 return version; } // JavaScript helper required to detect Flash Player PlugIn version = information function GetSwfVer(){ // NS/Opera version >=3D 3 check for Flash plugin in plugin array var flashVer =3D -1; =09 if (navigator.plugins !=3D null && navigator.plugins.length > 0) { if (navigator.plugins["Shockwave Flash 2.0"] || = navigator.plugins["Shockwave Flash"]) { var swVer2 =3D navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : = ""; var flashDescription =3D navigator.plugins["Shockwave Flash" + = swVer2].description; var descArray =3D flashDescription.split(" "); var tempArrayMajor =3D descArray[2].split("."); =09 var versionMajor =3D tempArrayMajor[0]; var versionMinor =3D tempArrayMajor[1]; var versionRevision =3D descArray[3]; if (versionRevision =3D=3D "") { versionRevision =3D descArray[4]; } if (versionRevision[0] =3D=3D "d") { versionRevision =3D versionRevision.substring(1); } else if (versionRevision[0] =3D=3D "r") { versionRevision =3D versionRevision.substring(1); if (versionRevision.indexOf("d") > 0) { versionRevision =3D versionRevision.substring(0, = versionRevision.indexOf("d")); } } var flashVer =3D versionMajor + "." + versionMinor + "." + = versionRevision; } } // MSN/WebTV 2.6 supports Flash 4 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") !=3D = -1) flashVer =3D 4; // WebTV 2.5 supports Flash 3 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") !=3D = -1) flashVer =3D 3; // older WebTV supports Flash 2 else if (navigator.userAgent.toLowerCase().indexOf("webtv") !=3D -1) = flashVer =3D 2; else if ( isIE && isWin && !isOpera ) { flashVer =3D ControlVersion(); }=09 return flashVer; } // When called with reqMajorVer, reqMinorVer, reqRevision returns true = if that version or greater is available function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) { versionStr =3D GetSwfVer(); if (versionStr =3D=3D -1 ) { return false; } else if (versionStr !=3D 0) { if(isIE && isWin && !isOpera) { // Given "WIN 2,0,0,11" tempArray =3D versionStr.split(" "); // ["WIN", "2,0,0,11"] tempString =3D tempArray[1]; // "2,0,0,11" versionArray =3D tempString.split(","); // ['2', '0', '0', '11'] } else { versionArray =3D versionStr.split("."); } var versionMajor =3D versionArray[0]; var versionMinor =3D versionArray[1]; var versionRevision =3D versionArray[2]; // is the major.revision >=3D requested major.revision AND the = minor version >=3D requested minor if (versionMajor > parseFloat(reqMajorVer)) { return true; } else if (versionMajor =3D=3D parseFloat(reqMajorVer)) { if (versionMinor > parseFloat(reqMinorVer)) return true; else if (versionMinor =3D=3D parseFloat(reqMinorVer)) { if (versionRevision >=3D parseFloat(reqRevision)) return true; } } return false; } } function AC_AddExtension(src, ext) { if (src.indexOf('?') !=3D -1) return src.replace(/\?/, ext+'?');=20 else return src + ext; } function AC_Generateobj(objAttrs, params, embedAttrs)=20 {=20 var str =3D ''; if (isIE && isWin && !isOpera) { str +=3D ''; for (var i in params) { str +=3D ' = '; } str +=3D ''; } else { str +=3D ' '; } document.write(str); } function AC_FL_RunContent(){ var ret =3D=20 AC_GetArgs ( arguments, ".swf", "movie", = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" , "application/x-shockwave-flash" ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); } function AC_SW_RunContent(){ var ret =3D=20 AC_GetArgs ( arguments, ".dcr", "src", = "clsid:166B1BCA-3F9C-11CF-8075-444553540000" , null ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); } function AC_GetArgs(args, ext, srcParamName, classid, mimeType){ var ret =3D new Object(); ret.embedAttrs =3D new Object(); ret.params =3D new Object(); ret.objAttrs =3D new Object(); for (var i=3D0; i < args.length; i=3Di+2){ var currArg =3D args[i].toLowerCase(); =20 switch (currArg){=09 case "classid": break; case "pluginspage": ret.embedAttrs[args[i]] =3D args[i+1]; break; case "src": case "movie":=09 args[i+1] =3D AC_AddExtension(args[i+1], ext); ret.embedAttrs["src"] =3D args[i+1]; ret.params[srcParamName] =3D args[i+1]; break; case "onafterupdate": case "onbeforeupdate": case "onblur": case "oncellchange": case "onclick": case "ondblclick": case "ondrag": case "ondragend": case "ondragenter": case "ondragleave": case "ondragover": case "ondrop": case "onfinish": case "onfocus": case "onhelp": case "onmousedown": case "onmouseup": case "onmouseover": case "onmousemove": case "onmouseout": case "onkeypress": case "onkeydown": case "onkeyup": case "onload": case "onlosecapture": case "onpropertychange": case "onreadystatechange": case "onrowsdelete": case "onrowenter": case "onrowexit": case "onrowsinserted": case "onstart": case "onscroll": case "onbeforeeditfocus": case "onactivate": case "onbeforedeactivate": case "ondeactivate": case "type": case "codebase": case "id": ret.objAttrs[args[i]] =3D args[i+1]; break; case "width": case "height": case "align": case "vspace":=20 case "hspace": case "class": case "title": case "accesskey": case "name": case "tabindex": ret.embedAttrs[args[i]] =3D ret.objAttrs[args[i]] =3D args[i+1]; break; default: ret.embedAttrs[args[i]] =3D ret.params[args[i]] =3D args[i+1]; } } ret.objAttrs["classid"] =3D classid; if (mimeType) ret.embedAttrs["type"] =3D mimeType; return ret; } ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/modules/shadowbox/shadowbox/doc/demo.js /**=0A= * Note: The functions contained in this file are for demonstration = purposes=0A= * only and are certainly not necessary in your own project.=0A= */=0A= function initDemos(){=0A= =0A= // setup flash gallery demo=0A= Shadowbox.setup([=0A= document.getElementById('flash1'),=0A= document.getElementById('flash2'),=0A= document.getElementById('flash3')=0A= ], {=0A= gallery: 'Flash',=0A= continuous: true,=0A= counterType: 'skip',=0A= animSequence: 'sync'=0A= });=0A= =0A= // setup image map demo=0A= = Shadowbox.setup(document.getElementById('hongkongmap').getElementsByTagNa= me('area'));=0A= =0A= };=0A= =0A= function demoMap(){=0A= =0A= Shadowbox.open({=0A= player: 'html',=0A= content: '',=0A= height: 300,=0A= width: 500,=0A= options: {=0A= onFinish: function(item){=0A= if(GBrowserIsCompatible()){=0A= var map =3D new = GMap2(document.getElementById('shadowbox_content'));=0A= map.setCenter(new GLatLng(37.4419, -122.1419), 13);=0A= =0A= // add 10 markers to the map at random locations=0A= var bounds =3D map.getBounds();=0A= var southWest =3D bounds.getSouthWest();=0A= var northEast =3D bounds.getNorthEast();=0A= var lngSpan =3D northEast.lng() - southWest.lng();=0A= var latSpan =3D northEast.lat() - southWest.lat();=0A= for(var i =3D 0; i < 10; i++){=0A= var point =3D new GLatLng(southWest.lat() + = latSpan * Math.random(),=0A= southWest.lng() + lngSpan * Math.random());=0A= map.addOverlay(new GMarker(point));=0A= }=0A= =0A= // add some simple controls=0A= map.addControl(new GSmallMapControl());=0A= map.addControl(new GMapTypeControl());=0A= }=0A= }=0A= }=0A= });=0A= =0A= };=0A= =0A= function demoMessage(){=0A= =0A= Shadowbox.open({=0A= player: 'html',=0A= content: '
You\'re using Shadowbox!
',=0A= height: 100,=0A= width: 200=0A= });=0A= =0A= };=0A= =0A= function demoGallery(){=0A= =0A= var img =3D {=0A= player: 'img',=0A= content: 'gallery/aston_martin/vanquish.jpg'=0A= };=0A= =0A= var video =3D {=0A= player: 'iframe',=0A= content: = 'http://www.youtube.com/v/y8Kyi0WNg40&autoplay=3D1',=0A= height: 340,=0A= width: 405,=0A= title: 'Dramatic Look'=0A= };=0A= =0A= Shadowbox.open([img, video], {=0A= continuous: true=0A= });=0A= =0A= }; ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/modules/shadowbox/shadowbox/src/adapter/shadowbox-base.js /**=0A= * A base library for Shadowbox used as a standalone (without another = base=0A= * library/adapter combination).=0A= *=0A= * This file is part of Shadowbox.=0A= *=0A= * Shadowbox is an online media viewer application that supports all of = the=0A= * web's most popular media publishing formats. Shadowbox is written = entirely=0A= * in JavaScript and CSS and is highly customizable. Using Shadowbox, = website=0A= * authors can showcase a wide assortment of media in all major browsers = without=0A= * navigating users away from the linking page.=0A= *=0A= * Shadowbox is released under version 3.0 of the Creative Commons = Attribution-=0A= * Noncommercial-Share Alike license. This means that it is absolutely = free=0A= * for personal, noncommercial use provided that you 1) make attribution = to the=0A= * author and 2) release any derivative work under the same or a similar=0A= * license.=0A= *=0A= * If you wish to use Shadowbox for commercial purposes, licensing = information=0A= * can be found at http://mjijackson.com/shadowbox/.=0A= *=0A= * @author Michael J. I. Jackson =0A= * @copyright 2007-2008 Michael J. I. Jackson=0A= * @license http://creativecommons.org/licenses/by-nc-sa/3.0/=0A= * @version SVN: $Id: shadowbox-base.js 103 2008-06-27 06:19:21Z = mjijackson $=0A= */=0A= =0A= // create the Shadowbox object first=0A= var Shadowbox =3D {};=0A= =0A= Shadowbox.lib =3D function(){=0A= =0A= // local style camelizing for speed=0A= var styleCache =3D {};=0A= var camelRe =3D /(-[a-z])/gi;=0A= var camelFn =3D function(m, a){=0A= return a.charAt(1).toUpperCase();=0A= };=0A= var toCamel =3D function(style){=0A= var camel;=0A= if(!(camel =3D styleCache[style])){=0A= camel =3D styleCache[style] =3D style.replace(camelRe, = camelFn);=0A= }=0A= return camel;=0A= };=0A= =0A= var view =3D document.defaultView;=0A= var alphaRe =3D /alpha\([^\)]*\)/gi;=0A= =0A= /**=0A= * Sets the opacity of the given element to the specified level.=0A= *=0A= * @param {HTMLElement} el The element=0A= * @param {Number} opacity The opacity to use=0A= * @return void=0A= * @private=0A= * @static=0A= */=0A= var setOpacity =3D function(el, opacity){=0A= var s =3D el.style;=0A= if(window.ActiveXObject){ // IE=0A= s.zoom =3D 1; // give "layout"=0A= s.filter =3D (s.filter || '').replace(alphaRe, '') +=0A= (opacity =3D=3D 1 ? '' : ' alpha(opacity=3D' + (opacity = * 100) + ')');=0A= }else{=0A= s.opacity =3D opacity;=0A= }=0A= };=0A= =0A= return {=0A= =0A= adapter: 'standalone',=0A= =0A= /**=0A= * Gets the value of the style on the given element. This = function=0A= * adapted from Ext.Element.getStyle().=0A= *=0A= * @param {HTMLElement} el The DOM element=0A= * @param {String} style The name of the style (e.g. = margin-top)=0A= * @return {mixed} The value of the given style=0A= * @public=0A= * @static=0A= */=0A= getStyle: function(){=0A= return view && view.getComputedStyle=0A= ? function(el, style){=0A= var v, cs, camel;=0A= if(style =3D=3D 'float') style =3D 'cssFloat';=0A= if(v =3D el.style[style]) return v;=0A= if(cs =3D view.getComputedStyle(el, '')){=0A= return cs[toCamel(style)];=0A= }=0A= return null;=0A= }=0A= : function(el, style){=0A= var v, cs, camel;=0A= if(style =3D=3D 'opacity'){=0A= if(typeof el.style.filter =3D=3D 'string'){=0A= var m =3D = el.style.filter.match(/alpha\(opacity=3D(.+)\)/i);=0A= if(m){=0A= var fv =3D parseFloat(m[1]);=0A= if(!isNaN(fv)) return (fv ? fv / 100 : = 0);=0A= }=0A= }=0A= return 1;=0A= }else if(style =3D=3D 'float'){=0A= style =3D 'styleFloat';=0A= }=0A= var camel =3D toCamel(style);=0A= if(v =3D el.style[camel]) return v;=0A= if(cs =3D el.currentStyle) return cs[camel];=0A= return null;=0A= };=0A= }(),=0A= =0A= /**=0A= * Sets the style on the given element to the given value. May = be an=0A= * object to specify multiple values. This function adapted from=0A= * Ext.Element.setStyle().=0A= *=0A= * @param {HTMLElement} el The DOM element=0A= * @param {String/Object} style The name of the style to set = if a=0A= * string, or an object of name = =3D>=0A= * value pairs=0A= * @param {String} value The value to set the given = style to=0A= * @return void=0A= * @public=0A= * @static=0A= */=0A= setStyle: function(el, style, value){=0A= if(typeof style =3D=3D 'string'){=0A= var camel =3D toCamel(style);=0A= if(camel =3D=3D 'opacity'){=0A= setOpacity(el, value);=0A= }else{=0A= el.style[camel] =3D value;=0A= }=0A= }else{=0A= for(var s in style){=0A= this.setStyle(el, s, style[s]);=0A= }=0A= }=0A= },=0A= =0A= /**=0A= * Gets a reference to the given element.=0A= *=0A= * @param {String/HTMLElement} el The element to fetch=0A= * @return {HTMLElement} A reference to the = element=0A= * @public=0A= * @static=0A= */=0A= get: function(el){=0A= return typeof el =3D=3D 'string' ? = document.getElementById(el) : el;=0A= },=0A= =0A= /**=0A= * Removes an element from the DOM.=0A= *=0A= * @param {HTMLElement} el The element to remove=0A= * @return void=0A= * @public=0A= * @static=0A= */=0A= remove: function(el){=0A= el.parentNode.removeChild(el);=0A= },=0A= =0A= /**=0A= * Gets the target of the given event. The event object passed = will be=0A= * the same object that is passed to listeners registered with=0A= * addEvent().=0A= *=0A= * @param {mixed} e The event object=0A= * @return {HTMLElement} The event's target = element=0A= * @public=0A= * @static=0A= */=0A= getTarget: function(e){=0A= var t =3D e.target ? e.target : e.srcElement;=0A= return t.nodeType =3D=3D 3 ? t.parentNode : t;=0A= },=0A= =0A= /**=0A= * Gets the page X/Y coordinates of the mouse event in an [x, y] = array.=0A= * The page coordinates should be relative to the document, and = not the=0A= * viewport. The event object provided here will be the same = object that=0A= * is passed to listeners registered with addEvent().=0A= *=0A= * @param {mixed} e The event object=0A= * @return {Array} The page X/Y coordinates=0A= * @public=0A= * @static=0A= */=0A= getPageXY: function(e){=0A= var x =3D e.pageX || (e.clientX +=0A= (document.documentElement.scrollLeft || = document.body.scrollLeft));=0A= var y =3D e.pageY || (e.clientY +=0A= (document.documentElement.scrollTop || = document.body.scrollTop));=0A= return [x, y];=0A= },=0A= =0A= /**=0A= * Prevents the event's default behavior. The event object here = will=0A= * be the same object that is passed to listeners registered with=0A= * addEvent().=0A= *=0A= * @param {mixed} e The event object=0A= * @return void=0A= * @public=0A= * @static=0A= */=0A= preventDefault: function(e){=0A= if(e.preventDefault){=0A= e.preventDefault();=0A= }else{=0A= e.returnValue =3D false;=0A= }=0A= },=0A= =0A= /**=0A= * Gets the key code of the given event object (keydown). The = event=0A= * object here will be the same object that is passed to = listeners=0A= * registered with addEvent().=0A= *=0A= * @param {mixed} e The event object=0A= * @return {Number} The key code of the event=0A= * @public=0A= * @static=0A= */=0A= keyCode: function(e){=0A= return e.which ? e.which : e.keyCode;=0A= },=0A= =0A= /**=0A= * Adds an event listener to the given element. It is expected = that this=0A= * function will be passed the event as its first argument.=0A= *=0A= * @param {HTMLElement} el The DOM element to = listen to=0A= * @param {String} name The name of the event to = register=0A= * (i.e. 'click', 'scroll', = etc.)=0A= * @param {Function} handler The event handler = function=0A= * @return void=0A= * @public=0A= * @static=0A= */=0A= addEvent: function(el, name, handler){=0A= if(el.addEventListener){=0A= el.addEventListener(name, handler, false);=0A= }else if(el.attachEvent){=0A= el.attachEvent('on' + name, handler);=0A= }=0A= },=0A= =0A= /**=0A= * Removes an event listener from the given element.=0A= *=0A= * @param {HTMLElement} el The DOM element to stop = listening to=0A= * @param {String} name The name of the event to = stop=0A= * listening for (i.e. = 'click')=0A= * @param {Function} handler The event handler = function=0A= * @return void=0A= * @public=0A= * @static=0A= */=0A= removeEvent: function(el, name, handler){=0A= if(el.removeEventListener){=0A= el.removeEventListener(name, handler, false);=0A= }else if(el.detachEvent){=0A= el.detachEvent('on' + name, handler);=0A= }=0A= },=0A= =0A= /**=0A= * Appends an HTML fragment to the given element.=0A= *=0A= * @param {HTMLElement} el The element to append to=0A= * @param {String} html The HTML fragment to use=0A= * @return void=0A= * @public=0A= * @static=0A= */=0A= append: function(el, html){=0A= if(el.insertAdjacentHTML){=0A= el.insertAdjacentHTML('BeforeEnd', html);=0A= }else if(el.lastChild){=0A= var range =3D el.ownerDocument.createRange();=0A= range.setStartAfter(el.lastChild);=0A= var frag =3D range.createContextualFragment(html);=0A= el.appendChild(frag);=0A= }else{=0A= el.innerHTML =3D html;=0A= }=0A= }=0A= =0A= };=0A= =0A= }();=0A= ------=_NextPart_000_0000_01C96222.73319850 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.acies-ed.com/modules/shadowbox/shadowbox/src/shadowbox.js /**=0A= * The Shadowbox class.=0A= *=0A= * This file is part of Shadowbox.=0A= *=0A= * Shadowbox is an online media viewer application that supports all of = the=0A= * web's most popular media publishing formats. Shadowbox is written = entirely=0A= * in JavaScript and CSS and is highly customizable. Using Shadowbox, = website=0A= * authors can showcase a wide assortment of media in all major browsers = without=0A= * navigating users away from the linking page.=0A= *=0A= * Shadowbox is released under version 3.0 of the Creative Commons = Attribution-=0A= * Noncommercial-Share Alike license. This means that it is absolutely = free=0A= * for personal, noncommercial use provided that you 1) make attribution = to the=0A= * author and 2) release any derivative work under the same or a similar=0A= * license.=0A= *=0A= * If you wish to use Shadowbox for commercial purposes, licensing = information=0A= * can be found at http://mjijackson.com/shadowbox/.=0A= *=0A= * @author Michael J. I. Jackson =0A= * @copyright 2007-2008 Michael J. I. Jackson=0A= * @license http://creativecommons.org/licenses/by-nc-sa/3.0/=0A= * @version SVN: $Id: shadowbox.js 108 2008-07-11 04:19:01Z = mjijackson $=0A= */=0A= =0A= if(typeof Shadowbox =3D=3D 'undefined'){=0A= throw 'Unable to load Shadowbox, no base library adapter found';=0A= }=0A= =0A= /**=0A= * The Shadowbox class. Used to display different media on a web page = using a=0A= * Lightbox-like effect.=0A= *=0A= * Useful resources:=0A= *=0A= * - http://www.alistapart.com/articles/byebyeembed=0A= * - http://www.w3.org/TR/html401/struct/objects.html=0A= * - http://www.dyn-web.com/dhtml/iframes/=0A= * - http://www.apple.com/quicktime/player/specs.html=0A= * - http://www.apple.com/quicktime/tutorials/embed2.html=0A= * - = http://www.howtocreate.co.uk/wrongWithIE/?chapter=3Dnavigator.plugins=0A= * - http://msdn.microsoft.com/en-us/library/ms532969.aspx=0A= * - http://support.microsoft.com/kb/316992=0A= *=0A= * @class Shadowbox=0A= * @author Michael J. I. Jackson =0A= * @singleton=0A= */=0A= (function(){=0A= =0A= /**=0A= * The current version of Shadowbox.=0A= *=0A= * @var String=0A= * @private=0A= */=0A= var version =3D '2.0';=0A= =0A= /**=0A= * Contains the default options for Shadowbox.=0A= *=0A= * @var Object=0A= * @private=0A= */=0A= var options =3D {=0A= =0A= /**=0A= * Enable all animations besides fades.=0A= *=0A= * @var Boolean=0A= */=0A= animate: true,=0A= =0A= /**=0A= * Enable fade animations.=0A= *=0A= * @var Boolean=0A= */=0A= animateFade: true,=0A= =0A= /**=0A= * Specifies the sequence of the height and width animations. = May be=0A= * 'wh' (width then height), 'hw' (height then width), or 'sync' = (both=0A= * at the same time). Of course this will only work if animate = is true.=0A= *=0A= * @var String=0A= */=0A= animSequence: 'wh',=0A= =0A= /**=0A= * The path to flvplayer.swf.=0A= *=0A= * @var String=0A= */=0A= flvPlayer: 'flvplayer.swf',=0A= =0A= /**=0A= * Listen to the overlay for clicks. If the user clicks the = overlay,=0A= * it will trigger Shadowbox.close().=0A= *=0A= * @var Boolean=0A= */=0A= modal: false,=0A= =0A= /**=0A= * The color to use for the modal overlay (in hex).=0A= *=0A= * @var String=0A= */=0A= overlayColor: '#000',=0A= =0A= /**=0A= * The opacity to use for the modal overlay.=0A= *=0A= * @var Number=0A= */=0A= overlayOpacity: 0.8,=0A= =0A= /**=0A= * The default background color to use for Flash movies (in hex).=0A= *=0A= * @var String=0A= */=0A= flashBgColor: '#000000',=0A= =0A= /**=0A= * Automatically play movies.=0A= *=0A= * @var Boolean=0A= */=0A= autoplayMovies: true,=0A= =0A= /**=0A= * Enable movie controllers on movie players.=0A= *=0A= * @var Boolean=0A= */=0A= showMovieControls: true,=0A= =0A= /**=0A= * A delay (in seconds) to use for slideshows. If set to = anything other=0A= * than 0, this value determines an interval at which Shadowbox = will=0A= * automatically proceed to the next piece in the gallery.=0A= *=0A= * @var Number=0A= */=0A= slideshowDelay: 0,=0A= =0A= /**=0A= * The duration of the resizing animations (in seconds).=0A= *=0A= * @var Number=0A= */=0A= resizeDuration: 0.55,=0A= =0A= /**=0A= * The duration of the fading animations (in seconds).=0A= *=0A= * @var Number=0A= */=0A= fadeDuration: 0.35,=0A= =0A= /**=0A= * Show the navigation controls.=0A= *=0A= * @var Boolean=0A= */=0A= displayNav: true,=0A= =0A= /**=0A= * Enable continuous galleries. When this is true, users will be = able=0A= * to skip to the first gallery image from the last using next = and vice=0A= * versa.=0A= *=0A= * @var Boolean=0A= */=0A= continuous: false,=0A= =0A= /**=0A= * Display the gallery counter.=0A= *=0A= * @var Boolean=0A= */=0A= displayCounter: true,=0A= =0A= /**=0A= * This option may be either 'default' or 'skip'. The default = counter is=0A= * a simple '1 of 5' message. The skip counter displays a link = for each=0A= * piece in the gallery that enables a user to skip directly to = any=0A= * piece.=0A= *=0A= * @var String=0A= */=0A= counterType: 'default',=0A= =0A= /**=0A= * Limits the number of counter links that will be displayed in = a "skip"=0A= * style counter. If the actual number of gallery elements is = greater=0A= * than this value, the counter will be restrained to the = elements=0A= * immediately preceeding and following the current element.=0A= *=0A= * @var Number=0A= */=0A= counterLimit: 10,=0A= =0A= /**=0A= * The amount of padding to maintain around the viewport edge (in=0A= * pixels). This only applies when the image is very large and = takes up=0A= * the entire viewport.=0A= *=0A= * @var Number=0A= */=0A= viewportPadding: 20,=0A= =0A= /**=0A= * How to handle content that is too large to display in its = entirety=0A= * (and is resizable). A value of 'resize' will resize the = content while=0A= * preserving aspect ratio and display it at the smaller = resolution. If=0A= * the content is an image, a value of 'drag' will display the = image at=0A= * its original resolution but it will be draggable within = Shadowbox. A=0A= * value of 'none' will display the content at its original = resolution=0A= * but it may be cropped.=0A= *=0A= * @var String=0A= */=0A= handleOversize: 'resize',=0A= =0A= /**=0A= * An exception handling function that will be called whenever=0A= * Shadowbox should throw an exception. Will be passed the error=0A= * message as its first argument.=0A= *=0A= * @var Function=0A= */=0A= handleException: null,=0A= =0A= /**=0A= * The mode to use when handling unsupported media. May be either=0A= * 'remove' or 'link'. If it is 'remove', the unsupported = gallery item=0A= * will merely be removed from the gallery. If it is the only = item in=0A= * the gallery, the link will simply be followed. If it is = 'link', a=0A= * link will be provided to the appropriate plugin page in place = of the=0A= * gallery element.=0A= *=0A= * @var String=0A= */=0A= handleUnsupported: 'link',=0A= =0A= /**=0A= * The initial height of Shadowbox (in pixels).=0A= *=0A= * @var Number=0A= */=0A= initialHeight: 160,=0A= =0A= /**=0A= * The initial width of Shadowbox (in pixels).=0A= *=0A= * @var Number=0A= */=0A= initialWidth: 320,=0A= =0A= /**=0A= * Enable keyboard control.=0A= *=0A= * @var Boolean=0A= */=0A= enableKeys: true,=0A= =0A= /**=0A= * A hook function to be fired when Shadowbox opens. The single = argument=0A= * will be the current gallery element.=0A= *=0A= * @var Function=0A= */=0A= onOpen: null,=0A= =0A= /**=0A= * A hook function to be fired when Shadowbox finishes loading = its=0A= * content. The single argument will be the current gallery = element on=0A= * display.=0A= *=0A= * @var Function=0A= */=0A= onFinish: null,=0A= =0A= /**=0A= * A hook function to be fired when Shadowbox changes from one = gallery=0A= * element to the next. The single argument will be the current = gallery=0A= * element that is about to be displayed.=0A= *=0A= * @var Function=0A= */=0A= onChange: null,=0A= =0A= /**=0A= * A hook function that will be fired when Shadowbox closes. The = single=0A= * argument will be the gallery element most recently displayed.=0A= *=0A= * @var Function=0A= */=0A= onClose: null,=0A= =0A= /**=0A= * Skips calling Shadowbox.setup() in init(). This means that it = must=0A= * be called later manually.=0A= *=0A= * @var Boolean=0A= */=0A= skipSetup: false,=0A= =0A= /**=0A= * An object containing names of plugins and links to their = respective=0A= * download pages.=0A= *=0A= * @var Object=0A= */=0A= errors: {=0A= =0A= fla: {=0A= name: 'Flash',=0A= url: 'http://www.adobe.com/products/flashplayer/'=0A= },=0A= =0A= qt: {=0A= name: 'QuickTime',=0A= url: 'http://www.apple.com/quicktime/download/'=0A= },=0A= =0A= wmp: {=0A= name: 'Windows Media Player',=0A= url: 'http://www.microsoft.com/windows/windowsmedia/'=0A= },=0A= =0A= f4m: {=0A= name: 'Flip4Mac',=0A= url: 'http://www.flip4mac.com/wmv_download.htm'=0A= }=0A= =0A= },=0A= =0A= /**=0A= * A map of players to the file extensions they support. Each = member of=0A= * this object is the name of a player (with one exception), = whose value=0A= * is an array of file extensions that player will "play". The = one=0A= * exception to this rule is the "qtwmp" member, which contains = extensions=0A= * that may be played using either QuickTime or Windows Media = Player.=0A= *=0A= * - img: Image file extensions=0A= * - swf: Flash SWF file extensions=0A= * - flv: Flash video file extensions (will be played by JW FLV = player)=0A= * - qt: Movie file extensions supported by QuickTime=0A= * - wmp: Movie file extensions supported by Windows Media Player=0A= * - qtwmp: Movie file extensions supported by both QuickTime = and Windows Media Player=0A= * - iframe: File extensions that will be display in an iframe=0A= *=0A= * IMPORTANT: If this object is to be modified, it must be = copied in its=0A= * entirety and tweaked because it is not merged recursively = with the=0A= * default. Also, any modifications must be passed into = Shadowbox.init=0A= * for speed reasons.=0A= *=0A= * @var Object ext=0A= */=0A= ext: {=0A= img: ['png', 'jpg', 'jpeg', 'gif', 'bmp'],=0A= swf: ['swf'],=0A= flv: ['flv'],=0A= qt: ['dv', 'mov', 'moov', 'movie', 'mp4'],=0A= wmp: ['asf', 'wm', 'wmv'],=0A= qtwmp: ['avi', 'mpg', 'mpeg'],=0A= iframe: ['asp', 'aspx', 'cgi', 'cfm', 'htm', 'html', = 'pl', 'php',=0A= 'php3', 'php4', 'php5', 'phtml', 'rb', 'rhtml', = 'shtml',=0A= 'txt', 'vbs']=0A= }=0A= =0A= };=0A= =0A= // shorthand=0A= var SB =3D Shadowbox;=0A= var SL =3D SB.lib;=0A= =0A= /**=0A= * Stores the default set of options in case a custom set of options = is used=0A= * on a link-by-link basis so we can restore them later.=0A= *=0A= * @var Object=0A= * @private=0A= */=0A= var default_options;=0A= =0A= /**=0A= * An object containing some regular expressions we'll need later. = Compiled=0A= * up front for speed.=0A= *=0A= * @var Object=0A= * @private=0A= */=0A= var RE =3D {=0A= domain: /:\/\/(.*?)[:\/]/, // domain prefix=0A= inline: /#(.+)$/, // inline element id=0A= rel: /^(light|shadow)box/i, // rel attribute format=0A= gallery: /^(light|shadow)box\[(.*?)\]/i, // rel attribute = format for gallery link=0A= unsupported: /^unsupported-(\w+)/, // unsupported media type=0A= param: /\s*([a-z_]*?)\s*=3D\s*(.+)\s*/, // rel string = parameter=0A= empty: = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i = // elements that don't have children=0A= };=0A= =0A= /**=0A= * A cache of options for links that have been set up for use with=0A= * Shadowbox.=0A= *=0A= * @var Array=0A= * @private=0A= */=0A= var cache =3D [];=0A= =0A= /**=0A= * An array containing the gallery objects currently being viewed. = In the=0A= * case of non-gallery items, this will only hold one object.=0A= *=0A= * @var Array=0A= * @private=0A= */=0A= var gallery;=0A= =0A= /**=0A= * The array index of the current gallery that is currently being = viewed.=0A= *=0A= * @var Number=0A= * @private=0A= */=0A= var current;=0A= =0A= /**=0A= * The current content object.=0A= *=0A= * @var Object=0A= * @private=0A= */=0A= var content;=0A= =0A= /**=0A= * The id to use for content objects.=0A= *=0A= * @var String=0A= * @private=0A= */=0A= var content_id =3D 'shadowbox_content';=0A= =0A= /**=0A= * Holds the current dimensions of Shadowbox as calculated by=0A= * setDimensions(). Contains the following properties:=0A= *=0A= * - height: The total height of #shadowbox=0A= * - width: The total width of #shadowbox=0A= * - inner_h: The height of #shadowbox_body=0A= * - inner_w: The width of #shadowbox_body=0A= * - top: The top to use for #shadowbox=0A= * - resize_h: The height to use for resizable content=0A= * - resize_w: The width to use for resizable content=0A= * - drag: True if dragging should be enabled (oversized image)=0A= *=0A= * @var Object=0A= * @private=0A= */=0A= var dims;=0A= =0A= /**=0A= * Keeps track of whether or not Shadowbox has been initialized. We = never=0A= * want to initialize twice.=0A= *=0A= * @var Boolean=0A= * @private=0A= */=0A= var initialized =3D false;=0A= =0A= /**=0A= * Keeps track of whether or not Shadowbox is activated.=0A= *=0A= * @var Boolean=0A= * @private=0A= */=0A= var activated =3D false;=0A= =0A= /**=0A= * The timeout id for the slideshow transition function.=0A= *=0A= * @var Number=0A= * @private=0A= */=0A= var slide_timer;=0A= =0A= /**=0A= * Keeps track of the time at which the current slideshow frame was=0A= * displayed.=0A= *=0A= * @var Number=0A= * @private=0A= */=0A= var slide_start;=0A= =0A= /**=0A= * The delay on which the next slide will display.=0A= *=0A= * @var Number=0A= * @private=0A= */=0A= var slide_delay =3D 0;=0A= =0A= /**=0A= * These parameters for simple browser detection. Adapted from = Ext.js.=0A= *=0A= * @var Object=0A= * @private=0A= */=0A= var ua =3D navigator.userAgent.toLowerCase();=0A= var client =3D {=0A= isStrict: document.compatMode =3D=3D 'CSS1Compat',=0A= isOpera: ua.indexOf('opera') > -1,=0A= isIE: ua.indexOf('msie') > -1,=0A= isIE7: ua.indexOf('msie 7') > -1,=0A= isSafari: /webkit|khtml/.test(ua),=0A= isWindows: ua.indexOf('windows') !=3D -1 || ua.indexOf('win32') = !=3D -1,=0A= isMac: ua.indexOf('macintosh') !=3D -1 || ua.indexOf('mac = os x') !=3D -1,=0A= isLinux: ua.indexOf('linux') !=3D -1=0A= };=0A= client.isBorderBox =3D client.isIE && !client.isStrict;=0A= client.isSafari3 =3D client.isSafari && !!(document.evaluate);=0A= client.isGecko =3D ua.indexOf('gecko') !=3D -1 && !client.isSafari;=0A= =0A= /**=0A= * You're not sill using IE6 are you?=0A= *=0A= * @var Boolean=0A= * @private=0A= */=0A= var ltIE7 =3D client.isIE && !client.isIE7;=0A= =0A= /**=0A= * Contains plugin support information. Each property of this object = is a=0A= * boolean indicating whether that plugin is supported.=0A= *=0A= * - fla: Flash player=0A= * - qt: QuickTime player=0A= * - wmp: Windows Media player=0A= * - f4m: Flip4Mac plugin=0A= *=0A= * @var Object=0A= * @private=0A= */=0A= var plugins;=0A= =0A= // detect plugin support=0A= if(navigator.plugins && navigator.plugins.length){=0A= var detectPlugin =3D function(plugin_name){=0A= var detected =3D false;=0A= for (var i =3D 0, len =3D navigator.plugins.length; i < len; = ++i){=0A= if(navigator.plugins[i].name.indexOf(plugin_name) > -1){=0A= detected =3D true;=0A= break;=0A= }=0A= }=0A= return detected;=0A= };=0A= var f4m =3D detectPlugin('Flip4Mac');=0A= plugins =3D {=0A= fla: detectPlugin('Shockwave Flash'),=0A= qt: detectPlugin('QuickTime'),=0A= wmp: !f4m && detectPlugin('Windows Media'), // if it's = Flip4Mac, it's not really WMP=0A= f4m: f4m=0A= };=0A= }else{=0A= var detectPlugin =3D function(plugin_name){=0A= var detected =3D false;=0A= try{=0A= var axo =3D new ActiveXObject(plugin_name);=0A= if(axo) detected =3D true;=0A= }catch(e){}=0A= return detected;=0A= };=0A= plugins =3D {=0A= fla: detectPlugin('ShockwaveFlash.ShockwaveFlash'),=0A= qt: detectPlugin('QuickTime.QuickTime'),=0A= wmp: detectPlugin('wmplayer.ocx'),=0A= f4m: false=0A= };=0A= }=0A= =0A= /**=0A= * Applies all properties of e to o.=0A= *=0A= * @param Object o The original object=0A= * @param Object e The extension object=0A= * @return Object The original object with all = properties=0A= * of the extension object applied=0A= * @private=0A= */=0A= var apply =3D function(o, e){=0A= for(var p in e) o[p] =3D e[p];=0A= return o;=0A= };=0A= =0A= /**=0A= * Determines if the given object is an anchor/area element.=0A= *=0A= * @param mixed el The object to check=0A= * @return Boolean True if the object is a link element=0A= * @private=0A= */=0A= var isLink =3D function(el){=0A= return el && typeof el.tagName =3D=3D 'string' && = (el.tagName.toUpperCase() =3D=3D 'A' || el.tagName.toUpperCase() =3D=3D = 'AREA');=0A= };=0A= =0A= /**=0A= * Gets the height of the viewport in pixels. Note: This function = includes=0A= * scrollbars in Safari 3.=0A= *=0A= * @return Number The height of the viewport=0A= * @public=0A= * @static=0A= */=0A= SL.getViewportHeight =3D function(){=0A= var h =3D window.innerHeight; // Safari=0A= var mode =3D document.compatMode;=0A= if((mode || client.isIE) && !client.isOpera){=0A= h =3D client.isStrict ? = document.documentElement.clientHeight : document.body.clientHeight;=0A= }=0A= return h;=0A= };=0A= =0A= /**=0A= * Gets the width of the viewport in pixels. Note: This function = includes=0A= * scrollbars in Safari 3.=0A= *=0A= * @return Number The width of the viewport=0A= * @public=0A= * @static=0A= */=0A= SL.getViewportWidth =3D function(){=0A= var w =3D window.innerWidth; // Safari=0A= var mode =3D document.compatMode;=0A= if(mode || client.isIE){=0A= w =3D client.isStrict ? document.documentElement.clientWidth = : document.body.clientWidth;=0A= }=0A= return w;=0A= };=0A= =0A= /**=0A= * Creates an HTML string from an object representing HTML elements. = Based=0A= * on Ext.DomHelper's createHtml.=0A= *=0A= * @param Object obj The HTML definition object=0A= * @return String An HTML string=0A= * @public=0A= * @static=0A= */=0A= SL.createHTML =3D function(obj){=0A= var html =3D '<' + obj.tag;=0A= for(var attr in obj){=0A= if(attr =3D=3D 'tag' || attr =3D=3D 'html' || attr =3D=3D = 'children') continue;=0A= if(attr =3D=3D 'cls'){=0A= html +=3D ' class=3D"' + obj['cls'] + '"';=0A= }else{=0A= html +=3D ' ' + attr + '=3D"' + obj[attr] + '"';=0A= }=0A= }=0A= if(RE.empty.test(obj.tag)){=0A= html +=3D '/>';=0A= }else{=0A= html +=3D '>';=0A= var cn =3D obj.children;=0A= if(cn){=0A= for(var i =3D 0, len =3D cn.length; i < len; ++i){=0A= html +=3D this.createHTML(cn[i]);=0A= }=0A= }=0A= if(obj.html) html +=3D obj.html;=0A= html +=3D '';=0A= }=0A= return html;=0A= };=0A= =0A= /**=0A= * Easing function used for animations. Based on a cubic polynomial.=0A= *=0A= * @param Number x The state of the animation (% = complete)=0A= * @return Number The adjusted easing value=0A= * @private=0A= * @static=0A= */=0A= var ease =3D function(x){=0A= return 1 + Math.pow(x - 1, 3);=0A= };=0A= =0A= /**=0A= * Animates any numeric (not color) style of the given element from = its=0A= * current state to the given value. Defaults to using pixel-based=0A= * measurements.=0A= *=0A= * @param HTMLElement el The DOM element to animate=0A= * @param String p The property to animate (in = camelCase)=0A= * @param mixed to The value to animate to=0A= * @param Number d The duration of the animation (in=0A= * seconds)=0A= * @param Function cb A callback function to call when = the=0A= * animation completes=0A= * @return void=0A= * @private=0A= * @static=0A= */=0A= var animate =3D function(el, p, to, d, cb){=0A= var from =3D parseFloat(SL.getStyle(el, p));=0A= if(isNaN(from)) from =3D 0;=0A= =0A= if(from =3D=3D to){=0A= if(typeof cb =3D=3D 'function') cb();=0A= return; // nothing to animate=0A= }=0A= =0A= var delta =3D to - from;=0A= var op =3D p =3D=3D 'opacity';=0A= var unit =3D op ? '' : 'px'; // default unit is px=0A= var fn =3D function(ease){=0A= SL.setStyle(el, p, from + ease * delta + unit);=0A= };=0A= =0A= // cancel the animation here if set in the options=0A= if(!options.animate && !op || op && !options.animateFade){=0A= fn(1);=0A= if(typeof cb =3D=3D 'function') cb();=0A= return;=0A= }=0A= =0A= d *=3D 1000; // convert to milliseconds=0A= var begin =3D new Date().getTime();=0A= var end =3D begin + d;=0A= =0A= var timer =3D setInterval(function(){=0A= var time =3D new Date().getTime();=0A= if(time >=3D end){ // end of animation=0A= clearInterval(timer);=0A= fn(1);=0A= if(typeof cb =3D=3D 'function') cb();=0A= }else{=0A= fn(ease((time - begin) / d));=0A= }=0A= }, 10); // 10 ms interval is minimum on WebKit=0A= };=0A= =0A= /**=0A= * A utility function used by the fade functions to clear the opacity=0A= * style setting of the given element. Required in some cases for IE.=0A= *=0A= * @param HTMLElement el The DOM element=0A= * @return void=0A= * @private=0A= */=0A= var clearOpacity =3D function(el){=0A= var s =3D el.style;=0A= if(client.isIE){=0A= if(typeof s.filter =3D=3D 'string' && = (/alpha/i).test(s.filter)){=0A= // careful not to overwrite other filters!=0A= s.filter =3D s.filter.replace(/[\w\.]*alpha\(.*?\);?/i, = '');=0A= }=0A= }else{=0A= s.opacity =3D '';=0A= s['-moz-opacity'] =3D '';=0A= s['-khtml-opacity'] =3D '';=0A= }=0A= };=0A= =0A= /**=0A= * Gets the computed height of the given element, including padding = and=0A= * borders.=0A= *=0A= * @param HTMLElement el The element=0A= * @return Number The computed height of the element=0A= * @private=0A= */=0A= var getComputedHeight =3D function(el){=0A= var h =3D Math.max(el.offsetHeight, el.clientHeight);=0A= if(!h){=0A= h =3D parseInt(SL.getStyle(el, 'height'), 10) || 0;=0A= if(!client.isBorderBox){=0A= h +=3D parseInt(SL.getStyle(el, 'padding-top'), 10)=0A= + parseInt(SL.getStyle(el, 'padding-bottom'), 10)=0A= + parseInt(SL.getStyle(el, 'border-top-width'), 10)=0A= + parseInt(SL.getStyle(el, 'border-bottom-width'), = 10);=0A= }=0A= }=0A= return h;=0A= };=0A= =0A= /**=0A= * Determines the player needed to display the file at the given = URL. If=0A= * the file type is not supported, the return value will be = 'unsupported'.=0A= * If the file type is not supported but the correct player can be=0A= * determined, the return value will be 'unsupported-*' where * will = be the=0A= * player abbreviation (e.g. 'qt' =3D QuickTime).=0A= *=0A= * @param String url The url of the file=0A= * @return String The name of the player to use=0A= * @private=0A= */=0A= var getPlayer =3D function(url){=0A= var m =3D url.match(RE.domain);=0A= var d =3D m && document.domain =3D=3D m[1]; // same domain=0A= if(url.indexOf('#') > -1 && d) return 'inline';=0A= var q =3D url.indexOf('?');=0A= if(q > -1) url =3D url.substring(0, q); // strip query string = for player detection purposes=0A= if(RE.img.test(url)) return 'img';=0A= if(RE.swf.test(url)) return plugins.fla ? 'swf' : = 'unsupported-swf';=0A= if(RE.flv.test(url)) return plugins.fla ? 'flv' : = 'unsupported-flv';=0A= if(RE.qt.test(url)) return plugins.qt ? 'qt' : 'unsupported-qt';=0A= if(RE.wmp.test(url)){=0A= if(plugins.wmp) return 'wmp';=0A= if(plugins.f4m) return 'qt';=0A= if(client.isMac) return plugins.qt ? 'unsupported-f4m' : = 'unsupported-qtf4m';=0A= return 'unsupported-wmp';=0A= }else if(RE.qtwmp.test(url)){=0A= if(plugins.qt) return 'qt';=0A= if(plugins.wmp) return 'wmp';=0A= return client.isMac ? 'unsupported-qt' : 'unsupported-qtwmp';=0A= }else if(!d || RE.iframe.test(url)){=0A= return 'iframe';=0A= }=0A= return 'unsupported'; // same domain, not supported=0A= };=0A= =0A= /**=0A= * Handles all clicks on links that have been set up to work with = Shadowbox=0A= * and cancels the default event behavior when appropriate.=0A= *=0A= * @param {Event} ev The click event object=0A= * @return void=0A= * @private=0A= */=0A= var handleClick =3D function(ev){=0A= // get anchor/area element=0A= var link;=0A= if(isLink(this)){=0A= link =3D this; // jQuery, Prototype, YUI=0A= }else{=0A= link =3D SL.getTarget(ev); // Ext, standalone=0A= while(!isLink(link) && link.parentNode){=0A= link =3D link.parentNode;=0A= }=0A= }=0A= =0A= //SL.preventDefault(ev); // good for debugging=0A= =0A= if(link){=0A= SB.open(link);=0A= if(gallery.length) SL.preventDefault(ev); // stop event=0A= }=0A= };=0A= =0A= /**=0A= * Toggles the display of the nav control with the given id on and = off.=0A= *=0A= * @param String id The id of the navigation control=0A= * @param Boolean on True to toggle on, false to toggle = off=0A= * @return void=0A= * @private=0A= */=0A= var toggleNav =3D function(id, on){=0A= var el =3D SL.get('shadowbox_nav_' + id);=0A= if(el) el.style.display =3D on ? '' : 'none';=0A= };=0A= =0A= /**=0A= * Builds the content for the title and information bars.=0A= *=0A= * @param Function cb A callback function to execute after = the=0A= * bars are built=0A= * @return void=0A= * @private=0A= */=0A= var buildBars =3D function(cb){=0A= var obj =3D gallery[current];=0A= var title_i =3D SL.get('shadowbox_title_inner');=0A= =0A= // build the title=0A= title_i.innerHTML =3D obj.title || '';=0A= =0A= // build the nav=0A= var nav =3D SL.get('shadowbox_nav');=0A= if(nav){=0A= var c, n, pl, pa, p;=0A= =0A= // need to build the nav?=0A= if(options.displayNav){=0A= c =3D true;=0A= // next & previous links=0A= var len =3D gallery.length;=0A= if(len > 1){=0A= if(options.continuous){=0A= n =3D p =3D true; // show both=0A= }else{=0A= n =3D (len - 1) > current; // not last in = gallery, show next=0A= p =3D current > 0; // not first in gallery, show = previous=0A= }=0A= }=0A= // in a slideshow?=0A= if(options.slideshowDelay > 0 && hasNext()){=0A= pa =3D slide_timer !=3D 'paused';=0A= pl =3D !pa;=0A= }=0A= }else{=0A= c =3D n =3D pl =3D pa =3D p =3D false;=0A= }=0A= =0A= toggleNav('close', c);=0A= toggleNav('next', n);=0A= toggleNav('play', pl);=0A= toggleNav('pause', pa);=0A= toggleNav('previous', p);=0A= }=0A= =0A= // build the counter=0A= var counter =3D SL.get('shadowbox_counter');=0A= if(counter){=0A= var co =3D '';=0A= =0A= // need to build the counter?=0A= if(options.displayCounter && gallery.length > 1){=0A= if(options.counterType =3D=3D 'skip'){=0A= // limit the counter?=0A= var i =3D 0, len =3D gallery.length, end =3D len;=0A= var limit =3D parseInt(options.counterLimit);=0A= if(limit < len){ // support large galleries=0A= var h =3D Math.round(limit / 2);=0A= i =3D current - h;=0A= if(i < 0) i +=3D len;=0A= end =3D current + (limit - h);=0A= if(end > len) end -=3D len;=0A= }=0A= while(i !=3D end){=0A= if(i =3D=3D len) i =3D 0;=0A= co +=3D '' + (++i) + '';=0A= }=0A= }else{ // default=0A= co =3D (current + 1) + ' ' + SB.LANG.of + ' ' + len;=0A= }=0A= }=0A= =0A= counter.innerHTML =3D co;=0A= }=0A= =0A= cb();=0A= };=0A= =0A= /**=0A= * Hides the title and info bars.=0A= *=0A= * @param Boolean anim True to animate the transition=0A= * @param Function cb A callback function to execute after = the=0A= * animation completes=0A= * @return void=0A= * @private=0A= */=0A= var hideBars =3D function(anim, cb){=0A= var obj =3D gallery[current];=0A= var title =3D SL.get('shadowbox_title');=0A= var info =3D SL.get('shadowbox_info');=0A= var title_i =3D SL.get('shadowbox_title_inner');=0A= var info_i =3D SL.get('shadowbox_info_inner');=0A= =0A= // build bars after they are hidden=0A= var fn =3D function(){=0A= buildBars(cb);=0A= };=0A= =0A= var title_h =3D getComputedHeight(title);=0A= var info_h =3D getComputedHeight(info) * -1;=0A= if(anim){=0A= // animate the transition=0A= animate(title_i, 'margin-top', title_h, 0.35);=0A= animate(info_i, 'margin-top', info_h, 0.35, fn);=0A= }else{=0A= SL.setStyle(title_i, 'margin-top', title_h + 'px');=0A= SL.setStyle(info_i, 'margin-top', info_h + 'px');=0A= fn();=0A= }=0A= };=0A= =0A= /**=0A= * Shows the title and info bars.=0A= *=0A= * @param Function cb A callback function to execute after = the=0A= * animation completes=0A= * @return void=0A= * @private=0A= */=0A= var showBars =3D function(cb){=0A= var title_i =3D SL.get('shadowbox_title_inner');=0A= var info_i =3D SL.get('shadowbox_info_inner');=0A= var t =3D title_i.innerHTML !=3D ''; // is there a title to = display?=0A= =0A= if(t) animate(title_i, 'margin-top', 0, 0.35);=0A= animate(info_i, 'margin-top', 0, 0.35, cb);=0A= };=0A= =0A= /**=0A= * Loads the Shadowbox with the current piece.=0A= *=0A= * @return void=0A= * @private=0A= */=0A= var loadContent =3D function(){=0A= var obj =3D gallery[current];=0A= if(!obj) return; // invalid=0A= =0A= var changing =3D false;=0A= if(content){=0A= content.remove(); // remove old content first=0A= changing =3D true; // changing from some previous content=0A= }=0A= =0A= // determine player, inline is really just HTML=0A= var p =3D obj.player =3D=3D 'inline' ? 'html' : obj.player;=0A= =0A= // make sure player is loaded=0A= if(typeof SB[p] !=3D 'function'){=0A= SB.raise('Unknown player ' + obj.player);=0A= }=0A= content =3D new SB[p](content_id, obj); // instantiate new = content object=0A= =0A= listenKeys(false); // disable the keyboard temporarily=0A= toggleLoading(true);=0A= =0A= hideBars(changing, function(){ // if changing, animate the bars = transition=0A= if(!content) return;=0A= =0A= // if opening, clear #shadowbox display=0A= if(!changing){=0A= SL.get('shadowbox').style.display =3D '';=0A= }=0A= =0A= var fn =3D function(){=0A= resizeContent(function(){=0A= if(!content) return;=0A= =0A= =0A= showBars(function(){=0A= if(!content) return;=0A= =0A= // append content just before hiding the loading = layer=0A= SL.get('shadowbox_body_inner').innerHTML =3D = SL.createHTML(content.markup(dims));=0A= =0A= toggleLoading(false, function(){=0A= if(!content) return;=0A= =0A= if(typeof content.onLoad =3D=3D 'function'){=0A= content.onLoad(); // call onLoad = callback if present=0A= }=0A= if(options.onFinish && typeof = options.onFinish =3D=3D 'function'){=0A= options.onFinish(gallery[current]); // = fire onFinish handler=0A= }=0A= if(slide_timer !=3D 'paused'){=0A= SB.play(); // kick off next slide=0A= }=0A= listenKeys(true); // re-enable the keyboard=0A= });=0A= });=0A= });=0A= };=0A= =0A= if(typeof content.ready !=3D 'undefined'){ // does the = object have a ready property?=0A= var id =3D setInterval(function(){ // if so, wait for = the object to be ready=0A= if(content){=0A= if(content.ready){=0A= clearInterval(id); // clean up=0A= id =3D null;=0A= fn();=0A= }=0A= }else{ // content has been removed=0A= clearInterval(id);=0A= id =3D null;=0A= }=0A= }, 100);=0A= }else{=0A= fn();=0A= }=0A= });=0A= =0A= // preload neighboring gallery images=0A= if(gallery.length > 1){=0A= var next =3D gallery[current + 1] || gallery[0];=0A= if(next.player =3D=3D 'img'){=0A= var a =3D new Image();=0A= a.src =3D next.content;=0A= }=0A= var prev =3D gallery[current - 1] || gallery[gallery.length = - 1];=0A= if(prev.player =3D=3D 'img'){=0A= var b =3D new Image();=0A= b.src =3D prev.content;=0A= }=0A= }=0A= };=0A= =0A= /**=0A= * Calculates the dimensions for Shadowbox, taking into account the = borders=0A= * and surrounding elements of the shadowbox_body. If the = height/width=0A= * combination is too large for Shadowbox and handleOversize option = is set=0A= * to 'resize', the resized dimensions will be returned (preserving = the=0A= * original aspect ratio). Otherwise, the originally calculated = dimensions=0A= * will be used. Stores all dimensions in the private dims variable.=0A= *=0A= * @param Number height The content player height=0A= * @param Number width The content player width=0A= * @param Boolean resizable True if the content is able to be=0A= * resized. Defaults to false.=0A= * @return void=0A= * @private=0A= */=0A= var setDimensions =3D function(height, width, resizable){=0A= resizable =3D resizable || false;=0A= =0A= var sb =3D SL.get('shadowbox_body');=0A= var h =3D height =3D parseInt(height);=0A= var w =3D width =3D parseInt(width);=0A= var view_h =3D SL.getViewportHeight();=0A= var view_w =3D SL.getViewportWidth();=0A= =0A= // calculate the max width=0A= var border_w =3D parseInt(SL.getStyle(sb, 'border-left-width'), = 10)=0A= + parseInt(SL.getStyle(sb, 'border-right-width'), 10);=0A= var extra_w =3D border_w + 2 * options.viewportPadding;=0A= if(w + extra_w >=3D view_w){=0A= w =3D view_w - extra_w;=0A= }=0A= =0A= // calculate the max height=0A= var border_h =3D parseInt(SL.getStyle(sb, 'border-top-width'), = 10)=0A= + parseInt(SL.getStyle(sb, 'border-bottom-width'), 10);=0A= var bar_h =3D getComputedHeight(SL.get('shadowbox_title'))=0A= + getComputedHeight(SL.get('shadowbox_info'));=0A= var extra_h =3D border_h + 2 * options.viewportPadding + bar_h;=0A= if(h + extra_h >=3D view_h){=0A= h =3D view_h - extra_h;=0A= }=0A= =0A= // handle oversized content=0A= var drag =3D false;=0A= var resize_h =3D height;=0A= var resize_w =3D width;=0A= var handle =3D options.handleOversize;=0A= if(resizable && (handle =3D=3D 'resize' || handle =3D=3D = 'drag')){=0A= var change_h =3D (height - h) / height;=0A= var change_w =3D (width - w) / width;=0A= if(handle =3D=3D 'resize'){=0A= if(change_h > change_w){=0A= w =3D Math.round((width / height) * h);=0A= }else if(change_w > change_h){=0A= h =3D Math.round((height / width) * w);=0A= }=0A= // adjust resized height or width accordingly=0A= resize_w =3D w;=0A= resize_h =3D h;=0A= }else{=0A= // drag on oversized images only=0A= var link =3D gallery[current];=0A= if(link) drag =3D link.player =3D=3D 'img' && (change_h = > 0 || change_w > 0);=0A= }=0A= }=0A= =0A= // update dims=0A= dims =3D {=0A= height: h + border_h + bar_h,=0A= width: w + border_w,=0A= inner_h: h,=0A= inner_w: w,=0A= top: (view_h - (h + extra_h)) / 2 + = options.viewportPadding,=0A= resize_h: resize_h,=0A= resize_w: resize_w,=0A= drag: drag=0A= };=0A= };=0A= =0A= /**=0A= * Resizes Shadowbox to the given height and width. If the callback=0A= * parameter is given, the transition will be animated and the = callback=0A= * function will be called when the animation completes. Note: The = private=0A= * content variable must be updated before calling this function.=0A= *=0A= * @param Function cb A callback function to execute after = the=0A= * content has been resized=0A= * @return void=0A= * @private=0A= */=0A= var resizeContent =3D function(cb){=0A= if(!content) return; // no content=0A= =0A= // set new dimensions=0A= setDimensions(content.height, content.width, content.resizable);=0A= =0A= if(cb){=0A= switch(options.animSequence){=0A= case 'hw':=0A= adjustHeight(dims.inner_h, dims.top, true, = function(){=0A= adjustWidth(dims.width, true, cb);=0A= });=0A= break;=0A= case 'wh':=0A= adjustWidth(dims.width, true, function(){=0A= adjustHeight(dims.inner_h, dims.top, true, cb);=0A= });=0A= break;=0A= case 'sync':=0A= default:=0A= adjustWidth(dims.width, true);=0A= adjustHeight(dims.inner_h, dims.top, true, cb);=0A= }=0A= }else{ // window resize=0A= adjustWidth(dims.width, false);=0A= adjustHeight(dims.inner_h, dims.top, false);=0A= var c =3D SL.get(content_id);=0A= if(c){=0A= // resize resizable content when in resize mode=0A= if(content.resizable && options.handleOversize =3D=3D = 'resize'){=0A= c.height =3D dims.resize_h;=0A= c.width =3D dims.resize_w;=0A= }=0A= // fix draggable positioning if enlarging viewport=0A= if(gallery[current].player =3D=3D 'img' && = options.handleOversize =3D=3D 'drag'){=0A= var top =3D parseInt(SL.getStyle(c, 'top'));=0A= if(top + content.height < dims.inner_h){=0A= SL.setStyle(c, 'top', dims.inner_h - = content.height + 'px');=0A= }=0A= var left =3D parseInt(SL.getStyle(c, 'left'));=0A= if(left + content.width < dims.inner_w){=0A= SL.setStyle(c, 'left', dims.inner_w - = content.width + 'px');=0A= }=0A= }=0A= }=0A= }=0A= };=0A= =0A= /**=0A= * Adjusts the height of #shadowbox_body and centers #shadowbox = vertically=0A= * in the viewport.=0A= *=0A= * @param Number height The height to use for = #shadowbox_body=0A= * @param Number top The top to use for #shadowbox=0A= * @param Boolean anim True to animate the transition=0A= * @param Function cb A callback to use when the = animation=0A= * completes=0A= * @return void=0A= * @private=0A= */=0A= var adjustHeight =3D function(height, top, anim, cb){=0A= height =3D parseInt(height);=0A= =0A= // adjust the height=0A= var sb =3D SL.get('shadowbox_body');=0A= if(anim){=0A= animate(sb, 'height', height, options.resizeDuration);=0A= }else{=0A= SL.setStyle(sb, 'height', height + 'px');=0A= }=0A= =0A= // adjust the top=0A= var s =3D SL.get('shadowbox');=0A= if(anim){=0A= animate(s, 'top', top, options.resizeDuration, cb);=0A= }else{=0A= SL.setStyle(s, 'top', top + 'px');=0A= if(typeof cb =3D=3D 'function') cb();=0A= }=0A= };=0A= =0A= /**=0A= * Adjusts the width of #shadowbox.=0A= *=0A= * @param Number width The width to use for #shadowbox=0A= * @param Boolean anim True to animate the transition=0A= * @param Function cb A callback to use when the = animation=0A= * completes=0A= * @return void=0A= * @private=0A= */=0A= var adjustWidth =3D function(width, anim, cb){=0A= width =3D parseInt(width);=0A= =0A= // adjust the width=0A= var s =3D SL.get('shadowbox');=0A= if(anim){=0A= animate(s, 'width', width, options.resizeDuration, cb);=0A= }else{=0A= SL.setStyle(s, 'width', width + 'px');=0A= if(typeof cb =3D=3D 'function') cb();=0A= }=0A= };=0A= =0A= /**=0A= * Sets up a listener on the document for keystrokes.=0A= *=0A= * @param Boolean on True to enable the listener, false = to turn=0A= * it off=0A= * @return void=0A= * @private=0A= */=0A= var listenKeys =3D function(on){=0A= if(!options.enableKeys) return;=0A= SL[(on ? 'add' : 'remove') + 'Event'](document, 'keydown', = handleKey);=0A= };=0A= =0A= /**=0A= * A listener function that is fired when a key is pressed.=0A= *=0A= * @param mixed e The event object=0A= * @return void=0A= * @private=0A= */=0A= var handleKey =3D function(e){=0A= var code =3D SL.keyCode(e);=0A= =0A= // attempt to prevent default key action=0A= SL.preventDefault(e);=0A= =0A= if(code =3D=3D 81 || code =3D=3D 88 || code =3D=3D 27){ // q, x, = or esc=0A= SB.close();=0A= }else if(code =3D=3D 37){ // left arrow=0A= SB.previous();=0A= }else if(code =3D=3D 39){ // right arrow=0A= SB.next();=0A= }else if(code =3D=3D 32){ // space bar=0A= SB[(typeof slide_timer =3D=3D 'number' ? 'pause' : = 'play')]();=0A= }=0A= };=0A= =0A= /**=0A= * Toggles the visibility of the "loading" layer.=0A= *=0A= * @param Boolean on True to toggle on, false to toggle = off=0A= * @param Function cb The callback function to call when = toggling=0A= * completes=0A= * @return void=0A= * @private=0A= */=0A= var toggleLoading =3D function(on, cb){=0A= var loading =3D SL.get('shadowbox_loading');=0A= if(on){=0A= loading.style.display =3D '';=0A= if(typeof cb =3D=3D 'function') cb();=0A= }else{=0A= var p =3D gallery[current].player;=0A= var anim =3D (p =3D=3D 'img' || p =3D=3D 'html'); // fade on = images & html=0A= var fn =3D function(){=0A= loading.style.display =3D 'none';=0A= clearOpacity(loading);=0A= if(typeof cb =3D=3D 'function') cb();=0A= };=0A= if(anim){=0A= animate(loading, 'opacity', 0, options.fadeDuration, fn);=0A= }else{=0A= fn();=0A= }=0A= }=0A= };=0A= =0A= /**=0A= * Sets the top of the container element. This is only necessary in = IE6=0A= * where the container uses absolute positioning instead of fixed.=0A= *=0A= * @return void=0A= * @private=0A= */=0A= var fixTop =3D function(){=0A= SL.get('shadowbox_container').style.top =3D = document.documentElement.scrollTop + 'px';=0A= };=0A= =0A= /**=0A= * Sets the height of the overlay element to the full viewport = height. This=0A= * is only necessary in IE6 where the container uses absolute = positioning=0A= * instead of fixed, thus restricting the size of the overlay = element.=0A= *=0A= * @return void=0A= * @private=0A= */=0A= var fixHeight =3D function(){=0A= SL.get('shadowbox_overlay').style.height =3D = SL.getViewportHeight() + 'px';=0A= };=0A= =0A= /**=0A= * Determines if there is a next piece to display in the current = gallery.=0A= *=0A= * @return bool True if there is another piece, false = otherwise=0A= * @private=0A= */=0A= var hasNext =3D function(){=0A= return gallery.length > 1 && (current !=3D gallery.length - 1 || = options.continuous);=0A= };=0A= =0A= /**=0A= * Toggles the visibility of #shadowbox_container and sets its size = (if on=0A= * IE6). Also toggles the visibility of elements ( elements, while Firefox has trouble with=0A= * s.=0A= *=0A= * @param Function cb A callback to call after toggling = on, absent=0A= * when toggling off=0A= * @return void=0A= * @private=0A= */=0A= var toggleVisible =3D function(cb){=0A= var els, v =3D (cb) ? 'hidden' : 'visible';=0A= var hide =3D ['select', 'object', 'embed']; // tags to hide=0A= for(var i =3D 0; i < hide.length; ++i){=0A= els =3D document.getElementsByTagName(hide[i]);=0A= for(var j =3D 0, len =3D els.length; j < len; ++j){=0A= els[j].style.visibility =3D v;=0A= }=0A= }=0A= =0A= // resize & show container=0A= var so =3D SL.get('shadowbox_overlay');=0A= var sc =3D SL.get('shadowbox_container');=0A= var sb =3D SL.get('shadowbox');=0A= if(cb){=0A= // set overlay color/opacity=0A= SL.setStyle(so, {=0A= backgroundColor: options.overlayColor,=0A= opacity: 0=0A= });=0A= if(!options.modal) SL.addEvent(so, 'click', SB.close);=0A= if(ltIE7){=0A= // fix container top & overlay height before showing=0A= fixTop();=0A= fixHeight();=0A= SL.addEvent(window, 'scroll', fixTop);=0A= }=0A= =0A= // fade in animation=0A= sb.style.display =3D 'none'; // will be cleared in = loadContent()=0A= sc.style.visibility =3D 'visible';=0A= animate(so, 'opacity', parseFloat(options.overlayOpacity), = options.fadeDuration, cb);=0A= }else{=0A= SL.removeEvent(so, 'click', SB.close);=0A= if(ltIE7) SL.removeEvent(window, 'scroll', fixTop);=0A= =0A= // fade out effect=0A= sb.style.display =3D 'none';=0A= animate(so, 'opacity', 0, options.fadeDuration, function(){=0A= sc.style.visibility =3D 'hidden';=0A= sb.style.display =3D '';=0A= clearOpacity(so);=0A= });=0A= }=0A= };=0A= =0A= /**=0A= * Initializes the Shadowbox environment. Loads the skin (if = necessary),=0A= * compiles the player matching regular expressions, and sets up the=0A= * window resize listener.=0A= *=0A= * @param Object opts (optional) The default options to use=0A= * @return void=0A= * @public=0A= * @static=0A= */=0A= Shadowbox.init =3D function(opts){=0A= // don't initialize twice=0A= if(initialized) return;=0A= =0A= // make sure language is loaded=0A= if(typeof SB.LANG =3D=3D 'undefined'){=0A= SB.raise('No Shadowbox language loaded');=0A= return;=0A= }=0A= // make sure skin is loaded=0A= if(typeof SB.SKIN =3D=3D 'undefined'){=0A= SB.raise('No Shadowbox skin loaded');=0A= return;=0A= }=0A= =0A= // apply custom options=0A= apply(options, opts || {});=0A= =0A= // add markup=0A= var markup =3D SB.SKIN.markup.replace(/\{(\w+)\}/g, function(m, = p){=0A= return SB.LANG[p];=0A= });=0A= var bd =3D document.body || document.documentElement;=0A= SL.append(bd, markup);=0A= =0A= // several fixes for IE6=0A= if(ltIE7){=0A= // give the container absolute positioning=0A= SL.setStyle(SL.get('shadowbox_container'), 'position', = 'absolute');=0A= // give shadowbox_body "layout"...whatever that is=0A= SL.get('shadowbox_body').style.zoom =3D 1;=0A= // use AlphaImageLoader for transparent PNG support=0A= var png =3D SB.SKIN.png_fix;=0A= if(png && png.constructor =3D=3D Array){=0A= for(var i =3D 0; i < png.length; ++i){=0A= var el =3D SL.get(png[i]);=0A= if(el){=0A= var match =3D SL.getStyle(el, = 'background-image').match(/url\("(.*\.png)"\)/);=0A= if(match){=0A= SL.setStyle(el, {=0A= backgroundImage: 'none',=0A= filter: = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtrue,src=3D= ' + match[1] + ',sizingMethod=3Dscale);'=0A= });=0A= }=0A= }=0A= }=0A= }=0A= }=0A= =0A= // compile file type regular expressions here for speed=0A= for(var e in options.ext){=0A= RE[e] =3D new RegExp('\.(' + options.ext[e].join('|') + = ')\s*$', 'i');=0A= }=0A= =0A= // set up window resize event handler=0A= var id;=0A= SL.addEvent(window, 'resize', function(){=0A= // use 50 ms event buffering to prevent jerky window resizing=0A= if(id){=0A= clearTimeout(id);=0A= id =3D null;=0A= }=0A= id =3D setTimeout(function(){=0A= if(ltIE7) fixHeight();=0A= resizeContent();=0A= }, 50);=0A= });=0A= =0A= if(!options.skipSetup) SB.setup();=0A= initialized =3D true;=0A= };=0A= =0A= /**=0A= * Dynamically loads the specified skin for use with Shadowbox. If = the skin=0A= * is included already in the page via the appropriate