diff --git a/ubiquity-slideshow-le/TODO b/ubiquity-slideshow-le/TODO new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ubiquity-slideshow-le/VERSAO b/ubiquity-slideshow-le/VERSAO new file mode 100644 index 0000000000000000000000000000000000000000..4e379d2bfeab6461d0455bf5bbb8792845d9bbea --- /dev/null +++ b/ubiquity-slideshow-le/VERSAO @@ -0,0 +1 @@ +0.0.2 diff --git a/ubiquity-slideshow-le/gerar.sh b/ubiquity-slideshow-le/gerar.sh new file mode 100755 index 0000000000000000000000000000000000000000..adf7235568c89ba0f7ffcd08345250c0bdc279d3 --- /dev/null +++ b/ubiquity-slideshow-le/gerar.sh @@ -0,0 +1,62 @@ +#!/bin/bash +# gerar.sh +# Copyright (c) 2006 by Bruno Ribas <ribas@ufpr.br> + +DIRTMP=$(mktemp -d) +VERSAO=$(cat VERSAO) + +#arrumar versao +#$1 tipo de incremento +MAJOR=$(echo $VERSAO| cut -d'.' -f1) +MINOR=$(echo $VERSAO| cut -d'.' -f2) +REVISION=$(echo $VERSAO| cut -d'.' -f3) + +case $1 in + Minor) + ((MINOR++)) + REVISION=0 + ;; + Major) + ((MAJOR++)) + MINOR=0 + REVISION=0 + ;; + help) + echo "Uso: $0 Major|Minor|Revision" + echo ' Major - Altera versao Major' + echo ' Minor - Altera versao Minor' + exit + ;; + *) + ((REVISION++)) + ;; +esac + +VERSAO="${MAJOR}.${MINOR}.${REVISION}" +echo "$VERSAO" > VERSAO + + +#Compila a documentacao do pacote no diretorio doc/ +#cd doc/ +#hevea -text *.tex +#hevea -text *.tex +#cd ../ + +cp -r pacote $DIRTMP + +#Copia a documentacao compilada para dentro do pacote. +#cp doc/*.txt $DIRTMP/pacote/usr/share/doc/prd-* + +cd $DIRTMP +find . -name ".svn" -exec rm -rf {} \; &>/dev/null +sed -i -e "s/Version:/Version: $VERSAO/" pacote/DEBIAN/control + +fakeroot dpkg -b pacote . + +cd - + +cp $DIRTMP/*deb . +rm -rf $DIRTMP + + +# vim:tabstop=4:shiftwidth=4:encoding=iso-8859-1 diff --git a/ubiquity-slideshow-le/pacote/DEBIAN/control b/ubiquity-slideshow-le/pacote/DEBIAN/control new file mode 100644 index 0000000000000000000000000000000000000000..f27450a4a6d17a4652cbcfc4a7abfa3e3537ab3d --- /dev/null +++ b/ubiquity-slideshow-le/pacote/DEBIAN/control @@ -0,0 +1,9 @@ +Package: ubiquity-slideshow-le +Version: +Architecture: all +Conflicts: ubiquity-slideshow, ubiquity-slideshow-kubuntu +Priority: important +Section: x11 +Source: ubiquity-slideshow-ubuntu +Maintainer: LE Maintainer <le-maintainer@c3sl.ufpr.br> +Description: Ubiquity slideshow for LE diff --git a/ubiquity-slideshow-le/pacote/usr/share/doc/AUTHORS b/ubiquity-slideshow-le/pacote/usr/share/doc/AUTHORS new file mode 100644 index 0000000000000000000000000000000000000000..c0f5b6aeb030b27d1f124066c031abca3806bd07 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/doc/AUTHORS @@ -0,0 +1,33 @@ +# Linux Educacional 4.0 + +C3SL - Centro de Computacao Cientifica e Software Livre + +Adriano da Luz +Bruno Cesar Ribas +Carlos Carvalho +Cleide Luzia Bonfim Possamai +Daniel Weingaertner +Danilo Kiyoshi Simizu Yorinori +Diego Giovane Pasqualin +Eduardo Cunha de Almeida +Erik Alexandre Pucci +Fabiano Silva +Felipe Cys Laskoski +Guilherme Zasyeki Machado +Jorge Augusto Meira +Josiney de Souza +Juliana Bueno +Klismann Smoger Mottin +Laura Sánchez García +Luis Carlos Erpen de Bona +Marcela Saragioto +Marcos Castilho +Marcos Sunye +Pedro Eugenio Rocha +Renan Franca De Miranda +Ricardo Tavares De Oliveira +Rubens Massayuki Suguimoto +Thiago Henrique Dos Santos Picharski +Tiago Rodrigo Kepe +Victor Tarabola Cortiano +Vinicius Kwiecien Ruoso diff --git a/ubiquity-slideshow-le/pacote/usr/share/doc/COPYING b/ubiquity-slideshow-le/pacote/usr/share/doc/COPYING new file mode 100644 index 0000000000000000000000000000000000000000..94a9ed024d3859793618152ea559a168bbcbb5e2 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/doc/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/directory.js b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/directory.js new file mode 100644 index 0000000000000000000000000000000000000000..b64eb392f45bee77f9d17b97d82b7918d8123c8b --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/directory.js @@ -0,0 +1,447 @@ +directory = new Object() +directory['am'] = new Object() +directory['am']['accessibility.html'] = true +directory['am']['installing-software.html'] = true +directory['am']['welcome.html'] = true +directory['ar'] = new Object() +directory['ast'] = new Object() +directory['ast']['accessibility.html'] = true +directory['ast']['games.html'] = true +directory['ast']['get-help.html'] = true +directory['ast']['get-involved.html'] = true +directory['ast']['graphics.html'] = true +directory['ast']['installing-software.html'] = true +directory['ast']['internet.html'] = true +directory['ast']['multimedia.html'] = true +directory['ast']['office.html'] = true +directory['ast']['pim.html'] = true +directory['ast']['welcome.html'] = true +directory['be'] = new Object() +directory['be']['accessibility.html'] = true +directory['be']['installing-software.html'] = true +directory['be']['welcome.html'] = true +directory['bg'] = new Object() +directory['bg']['accessibility.html'] = true +directory['bg']['games.html'] = true +directory['bg']['get-help.html'] = true +directory['bg']['get-involved.html'] = true +directory['bg']['graphics.html'] = true +directory['bg']['installing-software.html'] = true +directory['bg']['internet.html'] = true +directory['bg']['multimedia.html'] = true +directory['bg']['office.html'] = true +directory['bg']['pim.html'] = true +directory['bg']['welcome.html'] = true +directory['bn'] = new Object() +directory['bn']['installing-software.html'] = true +directory['ca'] = new Object() +directory['ca']['accessibility.html'] = true +directory['ca']['games.html'] = true +directory['ca']['get-help.html'] = true +directory['ca']['get-involved.html'] = true +directory['ca']['graphics.html'] = true +directory['ca']['installing-software.html'] = true +directory['ca']['internet.html'] = true +directory['ca']['multimedia.html'] = true +directory['ca']['office.html'] = true +directory['ca']['pim.html'] = true +directory['ca']['welcome.html'] = true +directory['cs'] = new Object() +directory['cs']['accessibility.html'] = true +directory['cs']['games.html'] = true +directory['cs']['get-help.html'] = true +directory['cs']['get-involved.html'] = true +directory['cs']['graphics.html'] = true +directory['cs']['installing-software.html'] = true +directory['cs']['internet.html'] = true +directory['cs']['multimedia.html'] = true +directory['cs']['office.html'] = true +directory['cs']['pim.html'] = true +directory['cs']['welcome.html'] = true +directory['cy'] = new Object() +directory['cy']['accessibility.html'] = true +directory['cy']['get-help.html'] = true +directory['da'] = new Object() +directory['da']['graphics.html'] = true +directory['da']['installing-software.html'] = true +directory['da']['office.html'] = true +directory['da']['welcome.html'] = true +directory['de'] = new Object() +directory['de']['accessibility.html'] = true +directory['de']['games.html'] = true +directory['de']['get-help.html'] = true +directory['de']['get-involved.html'] = true +directory['de']['graphics.html'] = true +directory['de']['installing-software.html'] = true +directory['de']['internet.html'] = true +directory['de']['multimedia.html'] = true +directory['de']['office.html'] = true +directory['de']['pim.html'] = true +directory['de']['welcome.html'] = true +directory['el'] = new Object() +directory['en_AU'] = new Object() +directory['en_AU']['accessibility.html'] = true +directory['en_AU']['installing-software.html'] = true +directory['en_AU']['welcome.html'] = true +directory['en_CA'] = new Object() +directory['en_CA']['accessibility.html'] = true +directory['en_CA']['installing-software.html'] = true +directory['en_CA']['welcome.html'] = true +directory['en_GB'] = new Object() +directory['en_GB']['accessibility.html'] = true +directory['en_GB']['games.html'] = true +directory['en_GB']['get-help.html'] = true +directory['en_GB']['get-involved.html'] = true +directory['en_GB']['graphics.html'] = true +directory['en_GB']['installing-software.html'] = true +directory['en_GB']['internet.html'] = true +directory['en_GB']['multimedia.html'] = true +directory['en_GB']['office.html'] = true +directory['en_GB']['pim.html'] = true +directory['en_GB']['welcome.html'] = true +directory['eo'] = new Object() +directory['eo']['accessibility.html'] = true +directory['eo']['installing-software.html'] = true +directory['eo']['welcome.html'] = true +directory['es'] = new Object() +directory['es']['accessibility.html'] = true +directory['es']['games.html'] = true +directory['es']['get-help.html'] = true +directory['es']['get-involved.html'] = true +directory['es']['graphics.html'] = true +directory['es']['installing-software.html'] = true +directory['es']['internet.html'] = true +directory['es']['multimedia.html'] = true +directory['es']['office.html'] = true +directory['es']['pim.html'] = true +directory['es']['welcome.html'] = true +directory['et'] = new Object() +directory['et']['accessibility.html'] = true +directory['et']['games.html'] = true +directory['et']['get-help.html'] = true +directory['et']['get-involved.html'] = true +directory['et']['graphics.html'] = true +directory['et']['installing-software.html'] = true +directory['et']['internet.html'] = true +directory['et']['multimedia.html'] = true +directory['et']['office.html'] = true +directory['et']['pim.html'] = true +directory['et']['welcome.html'] = true +directory['eu'] = new Object() +directory['fi'] = new Object() +directory['fi']['accessibility.html'] = true +directory['fi']['games.html'] = true +directory['fi']['get-help.html'] = true +directory['fi']['get-involved.html'] = true +directory['fi']['graphics.html'] = true +directory['fi']['installing-software.html'] = true +directory['fi']['internet.html'] = true +directory['fi']['multimedia.html'] = true +directory['fi']['office.html'] = true +directory['fi']['pim.html'] = true +directory['fi']['welcome.html'] = true +directory['fr'] = new Object() +directory['fr']['accessibility.html'] = true +directory['fr']['games.html'] = true +directory['fr']['get-help.html'] = true +directory['fr']['get-involved.html'] = true +directory['fr']['graphics.html'] = true +directory['fr']['installing-software.html'] = true +directory['fr']['internet.html'] = true +directory['fr']['multimedia.html'] = true +directory['fr']['office.html'] = true +directory['fr']['pim.html'] = true +directory['fr']['welcome.html'] = true +directory['gl'] = new Object() +directory['gl']['accessibility.html'] = true +directory['gl']['games.html'] = true +directory['gl']['get-help.html'] = true +directory['gl']['get-involved.html'] = true +directory['gl']['graphics.html'] = true +directory['gl']['installing-software.html'] = true +directory['gl']['internet.html'] = true +directory['gl']['multimedia.html'] = true +directory['gl']['office.html'] = true +directory['gl']['pim.html'] = true +directory['gl']['welcome.html'] = true +directory['he'] = new Object() +directory['he']['accessibility.html'] = true +directory['he']['games.html'] = true +directory['he']['get-help.html'] = true +directory['he']['get-involved.html'] = true +directory['he']['graphics.html'] = true +directory['he']['installing-software.html'] = true +directory['he']['internet.html'] = true +directory['he']['multimedia.html'] = true +directory['he']['office.html'] = true +directory['he']['pim.html'] = true +directory['he']['welcome.html'] = true +directory['hi'] = new Object() +directory['hi']['accessibility.html'] = true +directory['hi']['games.html'] = true +directory['hi']['get-help.html'] = true +directory['hi']['get-involved.html'] = true +directory['hi']['graphics.html'] = true +directory['hi']['installing-software.html'] = true +directory['hi']['internet.html'] = true +directory['hi']['multimedia.html'] = true +directory['hi']['office.html'] = true +directory['hi']['pim.html'] = true +directory['hi']['welcome.html'] = true +directory['hr'] = new Object() +directory['hr']['accessibility.html'] = true +directory['hr']['games.html'] = true +directory['hr']['get-help.html'] = true +directory['hr']['get-involved.html'] = true +directory['hr']['graphics.html'] = true +directory['hr']['installing-software.html'] = true +directory['hr']['internet.html'] = true +directory['hr']['multimedia.html'] = true +directory['hr']['office.html'] = true +directory['hr']['pim.html'] = true +directory['hr']['welcome.html'] = true +directory['hu'] = new Object() +directory['hu']['accessibility.html'] = true +directory['hu']['games.html'] = true +directory['hu']['get-help.html'] = true +directory['hu']['get-involved.html'] = true +directory['hu']['graphics.html'] = true +directory['hu']['installing-software.html'] = true +directory['hu']['internet.html'] = true +directory['hu']['multimedia.html'] = true +directory['hu']['office.html'] = true +directory['hu']['pim.html'] = true +directory['hu']['welcome.html'] = true +directory['id'] = new Object() +directory['is'] = new Object() +directory['is']['accessibility.html'] = true +directory['is']['games.html'] = true +directory['is']['installing-software.html'] = true +directory['it'] = new Object() +directory['it']['accessibility.html'] = true +directory['it']['games.html'] = true +directory['it']['get-help.html'] = true +directory['it']['get-involved.html'] = true +directory['it']['graphics.html'] = true +directory['it']['installing-software.html'] = true +directory['it']['internet.html'] = true +directory['it']['multimedia.html'] = true +directory['it']['office.html'] = true +directory['it']['pim.html'] = true +directory['it']['welcome.html'] = true +directory['ja'] = new Object() +directory['ja']['accessibility.html'] = true +directory['ja']['games.html'] = true +directory['ja']['get-help.html'] = true +directory['ja']['get-involved.html'] = true +directory['ja']['graphics.html'] = true +directory['ja']['installing-software.html'] = true +directory['ja']['internet.html'] = true +directory['ja']['multimedia.html'] = true +directory['ja']['office.html'] = true +directory['ja']['pim.html'] = true +directory['ja']['welcome.html'] = true +directory['ko'] = new Object() +directory['ko']['accessibility.html'] = true +directory['ko']['games.html'] = true +directory['ko']['get-help.html'] = true +directory['ko']['get-involved.html'] = true +directory['ko']['graphics.html'] = true +directory['ko']['installing-software.html'] = true +directory['ko']['internet.html'] = true +directory['ko']['multimedia.html'] = true +directory['ko']['office.html'] = true +directory['ko']['pim.html'] = true +directory['ko']['welcome.html'] = true +directory['lv'] = new Object() +directory['nb'] = new Object() +directory['nb']['accessibility.html'] = true +directory['nb']['get-help.html'] = true +directory['nb']['installing-software.html'] = true +directory['nb']['internet.html'] = true +directory['nb']['multimedia.html'] = true +directory['nb']['welcome.html'] = true +directory['ne'] = new Object() +directory['ne']['accessibility.html'] = true +directory['nl'] = new Object() +directory['nl']['accessibility.html'] = true +directory['nl']['games.html'] = true +directory['nl']['get-help.html'] = true +directory['nl']['get-involved.html'] = true +directory['nl']['graphics.html'] = true +directory['nl']['installing-software.html'] = true +directory['nl']['internet.html'] = true +directory['nl']['multimedia.html'] = true +directory['nl']['office.html'] = true +directory['nl']['pim.html'] = true +directory['nl']['welcome.html'] = true +directory['ny'] = new Object() +directory['oc'] = new Object() +directory['oc']['accessibility.html'] = true +directory['oc']['games.html'] = true +directory['oc']['get-help.html'] = true +directory['oc']['get-involved.html'] = true +directory['oc']['graphics.html'] = true +directory['oc']['installing-software.html'] = true +directory['oc']['internet.html'] = true +directory['oc']['multimedia.html'] = true +directory['oc']['office.html'] = true +directory['oc']['pim.html'] = true +directory['oc']['welcome.html'] = true +directory['pl'] = new Object() +directory['pl']['accessibility.html'] = true +directory['pl']['installing-software.html'] = true +directory['pl']['welcome.html'] = true +directory['pt'] = new Object() +directory['pt']['accessibility.html'] = true +directory['pt']['games.html'] = true +directory['pt']['get-help.html'] = true +directory['pt']['get-involved.html'] = true +directory['pt']['graphics.html'] = true +directory['pt']['installing-software.html'] = true +directory['pt']['internet.html'] = true +directory['pt']['multimedia.html'] = true +directory['pt']['office.html'] = true +directory['pt']['pim.html'] = true +directory['pt']['welcome.html'] = true +directory['pt_BR'] = new Object() +directory['pt_BR']['accessibility.html'] = true +directory['pt_BR']['games.html'] = true +directory['pt_BR']['get-help.html'] = true +directory['pt_BR']['get-involved.html'] = true +directory['pt_BR']['graphics.html'] = true +directory['pt_BR']['installing-software.html'] = true +directory['pt_BR']['internet.html'] = true +directory['pt_BR']['multimedia.html'] = true +directory['pt_BR']['office.html'] = true +directory['pt_BR']['pim.html'] = true +directory['pt_BR']['welcome.html'] = true +directory['ro'] = new Object() +directory['ro']['accessibility.html'] = true +directory['ro']['games.html'] = true +directory['ro']['get-help.html'] = true +directory['ro']['get-involved.html'] = true +directory['ro']['graphics.html'] = true +directory['ro']['installing-software.html'] = true +directory['ro']['internet.html'] = true +directory['ro']['multimedia.html'] = true +directory['ro']['office.html'] = true +directory['ro']['pim.html'] = true +directory['ro']['welcome.html'] = true +directory['ru'] = new Object() +directory['ru']['accessibility.html'] = true +directory['ru']['games.html'] = true +directory['ru']['get-help.html'] = true +directory['ru']['get-involved.html'] = true +directory['ru']['graphics.html'] = true +directory['ru']['installing-software.html'] = true +directory['ru']['internet.html'] = true +directory['ru']['multimedia.html'] = true +directory['ru']['office.html'] = true +directory['ru']['pim.html'] = true +directory['ru']['welcome.html'] = true +directory['si'] = new Object() +directory['si']['installing-software.html'] = true +directory['sk'] = new Object() +directory['sk']['accessibility.html'] = true +directory['sk']['games.html'] = true +directory['sk']['get-help.html'] = true +directory['sk']['get-involved.html'] = true +directory['sk']['graphics.html'] = true +directory['sk']['installing-software.html'] = true +directory['sk']['internet.html'] = true +directory['sk']['multimedia.html'] = true +directory['sk']['office.html'] = true +directory['sk']['pim.html'] = true +directory['sk']['welcome.html'] = true +directory['sl'] = new Object() +directory['sl']['accessibility.html'] = true +directory['sl']['get-help.html'] = true +directory['sl']['get-involved.html'] = true +directory['sl']['graphics.html'] = true +directory['sl']['installing-software.html'] = true +directory['sl']['multimedia.html'] = true +directory['sl']['office.html'] = true +directory['sl']['welcome.html'] = true +directory['sq'] = new Object() +directory['sq']['accessibility.html'] = true +directory['sq']['games.html'] = true +directory['sq']['get-help.html'] = true +directory['sq']['get-involved.html'] = true +directory['sq']['graphics.html'] = true +directory['sq']['installing-software.html'] = true +directory['sq']['internet.html'] = true +directory['sq']['multimedia.html'] = true +directory['sq']['office.html'] = true +directory['sq']['welcome.html'] = true +directory['sr'] = new Object() +directory['sr']['accessibility.html'] = true +directory['sr']['installing-software.html'] = true +directory['sr']['welcome.html'] = true +directory['sv'] = new Object() +directory['sv']['accessibility.html'] = true +directory['sv']['games.html'] = true +directory['sv']['get-help.html'] = true +directory['sv']['get-involved.html'] = true +directory['sv']['graphics.html'] = true +directory['sv']['installing-software.html'] = true +directory['sv']['internet.html'] = true +directory['sv']['multimedia.html'] = true +directory['sv']['office.html'] = true +directory['sv']['pim.html'] = true +directory['sv']['welcome.html'] = true +directory['th'] = new Object() +directory['th']['accessibility.html'] = true +directory['th']['installing-software.html'] = true +directory['th']['welcome.html'] = true +directory['tr'] = new Object() +directory['tr']['accessibility.html'] = true +directory['tr']['games.html'] = true +directory['tr']['get-help.html'] = true +directory['tr']['get-involved.html'] = true +directory['tr']['graphics.html'] = true +directory['tr']['installing-software.html'] = true +directory['tr']['internet.html'] = true +directory['tr']['multimedia.html'] = true +directory['tr']['office.html'] = true +directory['tr']['pim.html'] = true +directory['tr']['welcome.html'] = true +directory['ug'] = new Object() +directory['ug']['games.html'] = true +directory['uk'] = new Object() +directory['uk']['accessibility.html'] = true +directory['uk']['games.html'] = true +directory['uk']['get-help.html'] = true +directory['uk']['get-involved.html'] = true +directory['uk']['graphics.html'] = true +directory['uk']['installing-software.html'] = true +directory['uk']['internet.html'] = true +directory['uk']['multimedia.html'] = true +directory['uk']['office.html'] = true +directory['uk']['pim.html'] = true +directory['uk']['welcome.html'] = true +directory['vi'] = new Object() +directory['zh_CN'] = new Object() +directory['zh_CN']['accessibility.html'] = true +directory['zh_CN']['games.html'] = true +directory['zh_CN']['get-help.html'] = true +directory['zh_CN']['get-involved.html'] = true +directory['zh_CN']['graphics.html'] = true +directory['zh_CN']['installing-software.html'] = true +directory['zh_CN']['internet.html'] = true +directory['zh_CN']['multimedia.html'] = true +directory['zh_CN']['office.html'] = true +directory['zh_CN']['pim.html'] = true +directory['zh_CN']['welcome.html'] = true +directory['zh_TW'] = new Object() +directory['zh_TW']['accessibility.html'] = true +directory['zh_TW']['games.html'] = true +directory['zh_TW']['get-help.html'] = true +directory['zh_TW']['get-involved.html'] = true +directory['zh_TW']['graphics.html'] = true +directory['zh_TW']['installing-software.html'] = true +directory['zh_TW']['internet.html'] = true +directory['zh_TW']['multimedia.html'] = true +directory['zh_TW']['office.html'] = true +directory['zh_TW']['pim.html'] = true +directory['zh_TW']['welcome.html'] = true diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/dm-publico.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/dm-publico.html new file mode 100644 index 0000000000000000000000000000000000000000..a76a0ced1964f98d9152766b99bc974761242178 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/dm-publico.html @@ -0,0 +1,14 @@ +<h1 class="title">Domínio Público</h1> +<div class="main"> + <div class="content"> + <ul> + <li>O portal Domínio Público é a maior biblioteca virtual do Brasil.</li> + <li>Conta com mais de 123 mil obras e oferece acesso de graça a obras + literárias, artísticas e científicas em vários formatos: textos, sons, + imagens e vídeos.</li> + <li>O conteúdo disponível neste Portal ou é já de domínio público ou + tem o seu uso e a sua divulgação autorizados.</li> + </ul> + </div> +</div> +<img class="edubar" src="icons/dm-publico.png" alt="" /> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/edubar.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/edubar.html new file mode 100644 index 0000000000000000000000000000000000000000..e6a316cdc5e227a22e9aaca57ca12cf5909ccf00 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/edubar.html @@ -0,0 +1,12 @@ +<h1 class="title">Edubar</h1> +<div class="main"> + <div class="content"> + <ul> + <li>A nova Edubar oferece acesso direto aos conteúdos educacionais do MEC, assim como aos sites dos diversos projetos do MEC que coordenam a sua elaboração.</li> + <li>Com os conteúdos localmente acessíveis (a versão LE 4.0 já incorpora estes conteúdos na instalação), você pode buscar material do seu interesse por meio da nova ferramenta de Busca.</li> + <li>No caso de algum (ou todo) o material não estar acessível localmente, a Edubar terá um ícone para <em>download</em>.</li> + <!--<li>Você também tem acesso pela Edubar, via Internet - sinalizada pelo (globinho), aos portais dos projetos de conteúdos educacionais do MEC: Domínio Público, TV Escola, Portal do Professor e Banco Internacional de Objetos Educacionais.</li>--> + </ul> + </div> +</div> +<img class="edubar" src="icons/edubar.png" alt="" /> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/help.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/help.html new file mode 100644 index 0000000000000000000000000000000000000000..a827af9f5e651be22d9de07c482b0f0b9b247832 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/help.html @@ -0,0 +1,17 @@ +<h1 class="title">Ajuda no LE</h1> + +<div class="main"> + <div class="content"> + <ul> + <li>Agora, se você precisar de ajuda adicional para usar o ambiente LE, + poderá acessá-la diretamente pelo ícone da boia na barra inferior ou + utilizando o menu LE (correspondente ao Iniciar).</li> + <li>Na parte direita da tela de ajuda você encontrará auxílio + especialmente projetado como apoio à exploração de todo o potencial do + ambiente Linux Educacional e, no menu à esquerda, você visualizará + itens do auxílio do KDE.</li> + </ul> + </div> +</div> + +<img class="icon" src="icons/help.png" alt="" /> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/LE-logo.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/LE-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ff219203e26e375b7de66929edeb91b165dec348 Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/LE-logo.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/dm-publico.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/dm-publico.png new file mode 100644 index 0000000000000000000000000000000000000000..e414745feec3252bee70ef9f22bab21dcd6459d5 Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/dm-publico.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/edubar.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/edubar.png new file mode 100644 index 0000000000000000000000000000000000000000..7214a24dc5cfb688fbc4aa570adfafc91abd6b39 Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/edubar.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/help.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/help.png new file mode 100644 index 0000000000000000000000000000000000000000..05beaf73870c7f8bc4352e091aacb71e60100e4c Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/help.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/install.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/install.png new file mode 100644 index 0000000000000000000000000000000000000000..6928f1c688df9db8cdfcfc25a2f232ce80a96267 Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/install.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/le-search.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/le-search.png new file mode 100644 index 0000000000000000000000000000000000000000..e80fbb27998533c5b654886f8792fdd9d5251894 Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/le-search.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/obj-educ.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/obj-educ.png new file mode 100644 index 0000000000000000000000000000000000000000..06746a457186837aa9f4dc583bbadc730db65a6b Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/obj-educ.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/portal-prof.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/portal-prof.png new file mode 100644 index 0000000000000000000000000000000000000000..1341786ae29bef40bfdb393c0d3ab987c889084c Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/portal-prof.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/tv-escola.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/tv-escola.png new file mode 100644 index 0000000000000000000000000000000000000000..ea707e284f7094b13dd2bddf0796b98bc8cf0a00 Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/icons/tv-escola.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/index.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/index.html new file mode 100644 index 0000000000000000000000000000000000000000..2106a9616a3a449045aec37a136c9f735a5d9fe6 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/index.html @@ -0,0 +1,48 @@ +<!DOCTYPE html> + +<html lang="en"> + +<head> + <title>ubiquity-slideshow-ubuntu</title> + + <link href="link/general.css" rel="stylesheet" type="text/css" /> + + <base target="_blank" /> + + <script type="text/javascript" src="link-core/prototype.js"></script> + <script type="text/javascript" src="link-core/effects.js"></script> + <script type="text/javascript" src="link-core/fastinit.js"></script> + <script type="text/javascript" src="link-core/crossfade.js"></script> + <script type="text/javascript" src="directory.js"></script> + <script type="text/javascript" src="link-core/slideshow.js"></script> +</head> + +<body> + +<div id="container"> + <div id="slideshow"> + <!-- Slides go here. Simply place the following snippet + in the order you wish it to appear, replacing "MY SLIDE" + with the filename of your slide. + <div><a href="MY SLIDE" class="load"></a></div> --> + <div><a href="welcome.html" class="load"></a></div> + <div><a href="help.html" class="load"></a></div> + <div><a href="edubar.html" class="load"></a></div> + <div><a href="install.html" class="load"></a></div> + <div><a href="le-search.html" class="load"></a></div> + <div><a href="dm-publico.html" class="load"></a></div> + <div><a href="tv-escola.html" class="load"></a></div> + <div><a href="portal-prof.html" class="load"></a></div> + <div><a href="obj-educ.html" class="load"></a></div> + </div> +</div> + +<div id="debug-controls"> +<input type="button" id="prev-slide" value="<"/> +<input type="text" id="current-slide" /> +<input type="button" id="next-slide" value=">"/> +</div> + +</body> + +</html> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/install.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/install.html new file mode 100644 index 0000000000000000000000000000000000000000..89ef1021ca2d87fc77643daf28cc4e1e1e372d98 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/install.html @@ -0,0 +1,13 @@ +<h1 class="title">Instalar Conteúdos Educacionais</h1> +<div class="main"> + <div class="content"> + <ul> + <li>Através da Edubar, você pode instalar o pacote completo de + conteúdos educacionais, ou se preferir, pode fazer uma instalação + parcial.</li> + <li>Uma vez instalados os conteúdos, você consegue acessá-los por meio + da ferramenta de busca.</li> + </ul> + </div> +</div> +<img class="edubar" src="icons/install.png" alt="" /> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/le-search.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/le-search.html new file mode 100644 index 0000000000000000000000000000000000000000..ba50faa357edcc254aba7bfd1826113dad340589 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/le-search.html @@ -0,0 +1,11 @@ +<h1 class="title">Buscar Conteúdos Educacionais</h1> +<div class="main"> + <div class="content"> + <ul> + <li>A partir da Edubar, você tem acesso à nova ferramenta de Busca de conteúdos educacionais.</li> + <li>Ela foi reestruturada com o objetivo de permitir consultas mais intuitivas e eficientes.</li> + </ul> + <p class="special-comment">Aproveite a busca como instrumento para enriquecer o material de apoio às suas atividades didáticas!</p> + </div> +</div> +<img class="edubar" src="icons/le-search.png" alt="" /> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/builder.js b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/builder.js new file mode 100644 index 0000000000000000000000000000000000000000..43cbb210a749815bb98ce792f6babc98deb71aac --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/builder.js @@ -0,0 +1,154 @@ +// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// For details, see the script.aculo.us web site: http://script.aculo.us/ + +// script.aculo.us builder.js v1.7.0_beta2, Mon Dec 18 23:38:56 CET 2006 + +// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// script.aculo.us is freely distributable under the terms of an MIT-style license. +// For details, see the script.aculo.us web site: http://script.aculo.us/ + +var Builder = { + NODEMAP: { + AREA: 'map', + CAPTION: 'table', + COL: 'table', + COLGROUP: 'table', + LEGEND: 'fieldset', + OPTGROUP: 'select', + OPTION: 'select', + PARAM: 'object', + TBODY: 'table', + TD: 'table', + TFOOT: 'table', + TH: 'table', + THEAD: 'table', + TR: 'table' + }, + // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken, + // due to a Firefox bug + node: function(elementName) { + elementName = elementName.toUpperCase(); + + // try innerHTML approach + var parentTag = this.NODEMAP[elementName] || 'div'; + var parentElement = document.createElement(parentTag); + try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707 + parentElement.innerHTML = "<" + elementName + "></" + elementName + ">"; + } catch(e) {} + var element = parentElement.firstChild || null; + + // see if browser added wrapping tags + if(element && (element.tagName != elementName)) + element = element.getElementsByTagName(elementName)[0]; + + // fallback to createElement approach + if(!element) element = document.createElement(elementName); + + // abort if nothing could be created + if(!element) return; + + // attributes (or text) + if(arguments[1]) + if(this._isStringOrNumber(arguments[1]) || + (arguments[1] instanceof Array)) { + this._children(element, arguments[1]); + } else { + var attrs = this._attributes(arguments[1]); + if(attrs.length) { + try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707 + parentElement.innerHTML = "<" +elementName + " " + + attrs + "></" + elementName + ">"; + } catch(e) {} + element = parentElement.firstChild || null; + // workaround firefox 1.0.X bug + if(!element) { + element = document.createElement(elementName); + for(attr in arguments[1]) + element[attr == 'class' ? 'className' : attr] = arguments[1][attr]; + } + if(element.tagName != elementName) + element = parentElement.getElementsByTagName(elementName)[0]; + } + } + + // text, or array of children + if(arguments[2]) + this._children(element, arguments[2]); + + return element; + }, + _text: function(text) { + return document.createTextNode(text); + }, + + ATTR_MAP: { + 'className': 'class', + 'htmlFor': 'for' + }, + + _attributes: function(attributes) { + var attrs = []; + for(attribute in attributes) + attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) + + '="' + attributes[attribute].toString().escapeHTML() + '"'); + return attrs.join(" "); + }, + _children: function(element, children) { + if(typeof children=='object') { // array can hold nodes and text + children.flatten().each( function(e) { + if(typeof e=='object') + element.appendChild(e) + else + if(Builder._isStringOrNumber(e)) + element.appendChild(Builder._text(e)); + }); + } else + if(Builder._isStringOrNumber(children)) + element.appendChild(Builder._text(children)); + }, + _isStringOrNumber: function(param) { + return(typeof param=='string' || typeof param=='number'); + }, + build: function(html) { + var element = this.node('div'); + $(element).update(html.strip()); + return element.down(); + }, + dump: function(scope) { + if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope + + var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " + + "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " + + "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+ + "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+ + "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+ + "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/); + + tags.each( function(tag){ + scope[tag] = function() { + return Builder.node.apply(Builder, [tag].concat($A(arguments))); + } + }); + } +} diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/crossfade.js b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/crossfade.js new file mode 100644 index 0000000000000000000000000000000000000000..ff5440cd26ed18ee21d1ed6dd45c98808325967b --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/crossfade.js @@ -0,0 +1,356 @@ +/* +* Crossfade +* Version 4.1 30/03/2007 +* +* Copyright (c) 2007 Millstream Web Software http://www.millstream.com.au +* +* Permission is hereby granted, free of charge, to any person +* obtaining a copy of this software and associated documentation +* files (the "Software"), to deal in the Software without +* restriction, including without limitation the rights to use, copy, +* modify, merge, publish, distribute, sublicense, and/or sell copies +* of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +* * +*/ + +/* +* This version of Crossfade is modified from the original as available +* from Millstream Web Software. +* +* There is an additional "loop" option, defined in Crossfade.defaults +* and applied inside Crossfade.prototype.cycle(). +* +* There is an additional (optional) "dir" parameter for the Cycle +* function of a transition, sent from Crossfade.prototype.cycle() via +* me.options.transition.cycle. +* +* Added a new transition option (Crossfade.Transition.Cover), which +* slides the previous slide off stage and the new one on stage +* horizontally. By using absolute positions, it makes some dangerous +* assumptions about the layout of the page. However, it should be +* adaptable to other needs. +* * +*/ + + +var Crossfade = Class.create(); + +Crossfade.prototype = { + loaded : false, + initialize : function(elm, options) { + var me = this, next, prev; + this.elm = $(elm); + var n, elements = this.elm.getElementsByClassName("load"); + this.filenames = []; + for (n=0; n!=elements.length; ++n) { + this.filenames.push(elements[n].href); + }; + this.counter = 0; + this.prevSlide = null; + var t_opt = {}; + for(t in Crossfade.Transition) { + var trans = Crossfade.Transition[t]; + if(trans.className && this.elm.hasClassName(trans.className)) { + t_opt = {transition:trans}; + break; + } + } + this.options = Object.extend(Object.clone(Crossfade.defaults),Object.extend(options || {},t_opt)); + this.options.interval = Math.max(2,this.options.interval); + this.elm.makePositioned(); + this.slides = this.elm.immediateDescendants(); + if(this.options.random || this.elm.hasClassName(this.options.randomClassName)){ + this.slides.sort(function(a,b){ + return me.rndm(-1,1); + }); + } + if(this.elm.id) { + next = $(this.elm.id + '-next'); + prev = $(this.elm.id + '-previous'); + if(next) { Event.observe(next, 'click', this.next.bind(this)); } + if(prev) { Event.observe(prev, 'click', this.previous.bind(this)); } + } + + this.loadSlide(this.slides[0],function() { + me.options.transition.prepare(me); + }); + this.loadSlide(this.slides[1]); + + if(this.options.autoStart) { setTimeout(this.start.bind(this),this.rndm((this.options.interval-1)*1000,(this.options.interval+1)*1000)); } + }, + start : function() { + this.ready = true; + this.cycle() + return this.timer = new PeriodicalExecuter(this.cycle.bind(this), this.options.interval); + }, + stop : function() { + this.options.transition.cancel(this); + this.timer.stop(); + }, + next : function(){ + this.options.transition.cancel(this); + this.cycle(); + }, + previous : function() { + this.options.transition.cancel(this); + this.cycle(-1); + }, + cycle : function(dir) { + if(!this.ready) { return; } + this.ready = false; + dir = (dir === -1) ? dir : 1; + var me = this, prevSlide, nextSlide, opt, fade; + prevSlide = this.slides[this.counter]; + this.counter = this.loopCount(this.counter + dir); + if(this.counter == 0){ + this.loaded = true; + } + document.getElementById("current-slide").value = this.filenames[this.counter]; + nextSlide = this.slides[this.counter]; + if(this.options.loop == false && this.counter >= this.slides.length-1) { + this.stop(); + } + this.loadSlide(nextSlide, me.options.transition.cycle(prevSlide, nextSlide, me, dir)); + if(!this.loaded) { + this.loadSlide(this.slides[this.loopCount(this.counter+1)]); + } + }, + loadSlide : function(slide, onload){ + var loaders = [], me = this, img, pnode, onloadFunction; + onload = typeof onload === 'function' ? onload : function(){}; + onloadFunction = function() { + onload(); + me.ready = true; + }; + slide = $(slide); + loaders = Selector.findChildElements(slide,[this.options.imageLoadSelector]); + if(loaders.length && loaders[0].href !== ''){ + img = document.createElement('img'); + img.className = 'loadimage'; + img.onload = onloadFunction; + img.src = loaders[0].href; + loaders[0].parentNode.replaceChild(img,loaders[0]); + } else { + loaders = []; + loaders = Selector.findChildElements(slide, [this.options.ajaxLoadSelector]); + if(loaders.length && loaders[0].href !== ''){ + new Ajax.Updater(slide, loaders[0].href, {method:'get',onComplete:onloadFunction}); + } else { + onloadFunction(); + } + } + }, + loopCount : function(c){ + if(c >= this.slides.length){ + c = 0; + } else if (c < 0) { + c = this.slides.length - 1 + } + return c; + }, + rndm : function(min, max){ + return Math.floor(Math.random() * (max - min + 1) + min); + }, + timer : null,effect : null,ready : false +}; +Crossfade.Transition = {}; +Crossfade.Transition.Switch = { + className : 'transition-switch', + cycle : function(prev, next, show) { + show.slides.without(next).each(function(s){ + $(s).hide(); + }) + $(next).show(); + }, + cancel : function(show){}, + prepare : function(show){ + show.slides.each(function(s,i){ + $(s).setStyle({display:(i === 0 ? 'block' : 'none')}); + }); + } +}; +Crossfade.Transition.Crossfade = { + className : 'transition-crossfade', + cycle : function(prev, next, show) { + var opt = show.options; + show.effect = new Effect.Parallel([new Effect.Fade(prev ,{sync:true}), + new Effect.Appear(next,{sync:true})], + {duration: opt.duration, queue : 'Crossfade', afterFinish:function(){ + show.slides.without(next).each(function(s){ + $(s).setStyle({opacity:0,display:'none'}); + }) + }} + ); + }, + cancel : function(show){ + if(show.effect) { show.effect.cancel(); } + }, + prepare : function(show){ + show.slides.each(function(s,i){ + $(s).setStyle({opacity:(i === 0 ? 1 : 0),visibility:'visible',display:(i === 0 ? 'block' : 'none')}); + }); + } +}; +Crossfade.Transition.FadeOutFadeIn = { + className : 'transition-fadeoutfadein', + cycle : function(prev, next, show) { + var opt = show.options; + show.effect = new Effect.Fade(prev ,{ + duration: opt.duration/2, + afterFinish: function(){ + show.effect = new Effect.Appear(next,{duration: opt.duration/2}); + show.slides.without(next).each(function(s){ + $(s).setStyle({opacity:0}); + }) + } + }); + }, + cancel : function(show){ + if(show.effect) { show.effect.cancel(); } + }, + prepare : function(show){ + show.slides.each(function(s,i){ + $(s).setStyle({opacity:(i === 0 ? 1 : 0),visibility:'visible',display:(i === 0 ? 'block' : 'none')}); + }); + } +}; + +Crossfade.Transition.Cover = { + className : 'transition-cover', + cycle : function(prev, next, show, dir) { + var opt = show.options; + + var next_x = '700px'; + if ( dir > 0 ) + { + /* set up slides for flipping backwards */ + next_x = prev.getWidth() + 'px'; + } else { + /* set up slides for flipping forwards */ + next_x = -prev.getWidth() + 'px'; + } + next.setStyle({left:next_x}); + + prev_new_x = dir * -prev.getWidth(); + next_new_x = 0; + + show.effect = new Effect.Parallel([ + new Effect.Move(prev, {x:prev_new_x, y:0, mode:'absolute', sync:true}), + new Effect.Fade(prev, {sync:true}), + new Effect.Move(next, {x:next_new_x, y:0, mode:'absolute', sync:true}), + new Effect.Appear(next, {sync:true})], + + { duration: opt.duration, + queue : 'Crossfade', + afterFinish:function(){ + show.slides.without(next).each(function(s){ + $(s).setStyle({opacity:0,display:'none'}); + }) + }} + ); + }, + cancel : function(show){ + if(show.effect) { show.effect.cancel(); } + }, + prepare : function(show){ + show.slides.each(function(s,i){ + $(s).setStyle({opacity:(i === 0 ? 1 : 0),visibility:'visible',display:(i === 0 ? 'block' : 'none')}); + }); + } +}; + +Effect.DoNothing = Class.create(); +Object.extend(Object.extend(Effect.DoNothing.prototype, Effect.Base.prototype), { + initialize: function() { + this.start({duration: 0}); + }, + update: Prototype.emptyFunction +}); +Crossfade.Transition.FadeOutResizeFadeIn = { + className : 'transition-fadeoutresizefadein', + cycle : function(prev, next, show) { + var opt = show.options; + show.effect = new Effect.Fade(prev ,{ + duration: (opt.duration-1)/2, + afterFinish: function(){ + show.slides.without(next).each(function(s){ + $(s).setStyle({opacity:0}); + }) + var slideDims = [next.getWidth(),next.getHeight()]; + var loadimg = Selector.findChildElements(next,['img.loadimage']); + if(loadimg.length && loadimg[0].offsetWidth && loadimg[0].offsetHeight){ + slideDims[0] += slideDims[0] < loadimg[0].offsetWidth ? loadimg[0].offsetWidth : 0; + slideDims[1] += slideDims[1] < loadimg[0].offsetHeight ? loadimg[0].offsetHeight : 0; + } + var showDims = [show.elm.getWidth(),show.elm.getHeight()]; + var scale = [(showDims[0] > 0 && slideDims[0] > 0 ? slideDims[0]/showDims[0] : 1)*100,(showDims[1] > 0 && slideDims[1] > 0 ? slideDims[1]/showDims[1] : 1)*100]; + show.effect = new Effect.Parallel([ + (scale[0] === 100 ? new Effect.DoNothing() : new Effect.Scale(show.elm,scale[0],{sync:true,scaleY:false,scaleContent:false})), + (scale[1] === 100 ? new Effect.DoNothing() : new Effect.Scale(show.elm,scale[1],{sync:true,scaleX:false,scaleContent:false})) + ], + { + duration: 1, + queue : 'FadeOutResizeFadeIn', + afterFinish: function(){ + show.effect = new Effect.Appear(next,{duration: (opt.duration-1)/2}); + } + } + ); + } + }); + }, + cancel : function(show){ + if(show.effect) { show.effect.cancel(); } + }, + prepare : function(show){ + var slideDims = [$(show.slides[0]).getWidth(),$(show.slides[0]).getHeight()]; + show.elm.setStyle({width:slideDims[0]+'px', height:slideDims[1]+'px'}); + show.slides.each(function(s,i){ + $(s).setStyle({opacity:(i === 0 ? 1 : 0),visibility:'visible',display:(i === 0 ? 'block' : 'none')}); + }); + } +}; +Crossfade.defaults = { + autoLoad : true, + autoStart : true, + loop : true, + random : false, + randomClassName : 'random', + selectors : ['.crossfade'], + imageLoadSelector : 'a.loadimage', + ajaxLoadSelector : 'a.load', + interval : 5, + duration : 2, + transition : Crossfade.Transition.Crossfade +}; +Crossfade.setup = function(options) { + Object.extend(Crossfade.defaults,options); +}; +Crossfade.load = function() { + if(Crossfade.defaults.autoLoad) { + Crossfade.defaults.selectors.each(function(s){ + $$(s).each(function(c){ + return new Crossfade(c); + }); + }); + } +}; + +if(window.FastInit) { + FastInit.addOnLoad(Crossfade.load); +} else { + Event.observe(window, 'load', Crossfade.load); +} diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/effects.js b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/effects.js new file mode 100644 index 0000000000000000000000000000000000000000..4e3b87eeee698b5ef3f0697ea84a5b8304f5d5b2 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/effects.js @@ -0,0 +1,1113 @@ +// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// For details, see the script.aculo.us web site: http://script.aculo.us/ + +// script.aculo.us effects.js v1.7.0, Fri Jan 19 19:16:36 CET 2007 + +// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// Contributors: +// Justin Palmer (http://encytemedia.com/) +// Mark Pilgrim (http://diveintomark.org/) +// Martin Bialasinki +// +// script.aculo.us is freely distributable under the terms of an MIT-style license. +// For details, see the script.aculo.us web site: http://script.aculo.us/ + +// converts rgb() and #xxx to #xxxxxx format, +// returns self (or first argument) if not convertable +String.prototype.parseColor = function() { + var color = '#'; + if(this.slice(0,4) == 'rgb(') { + var cols = this.slice(4,this.length-1).split(','); + var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); + } else { + if(this.slice(0,1) == '#') { + if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); + if(this.length==7) color = this.toLowerCase(); + } + } + return(color.length==7 ? color : (arguments[0] || this)); +} + +/*--------------------------------------------------------------------------*/ + +Element.collectTextNodes = function(element) { + return $A($(element).childNodes).collect( function(node) { + return (node.nodeType==3 ? node.nodeValue : + (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); + }).flatten().join(''); +} + +Element.collectTextNodesIgnoreClass = function(element, className) { + return $A($(element).childNodes).collect( function(node) { + return (node.nodeType==3 ? node.nodeValue : + ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? + Element.collectTextNodesIgnoreClass(node, className) : '')); + }).flatten().join(''); +} + +Element.setContentZoom = function(element, percent) { + element = $(element); + element.setStyle({fontSize: (percent/100) + 'em'}); + if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0); + return element; +} + +Element.getOpacity = function(element){ + return $(element).getStyle('opacity'); +} + +Element.setOpacity = function(element, value){ + return $(element).setStyle({opacity:value}); +} + +Element.getInlineOpacity = function(element){ + return $(element).style.opacity || ''; +} + +Element.forceRerendering = function(element) { + try { + element = $(element); + var n = document.createTextNode(' '); + element.appendChild(n); + element.removeChild(n); + } catch(e) { } +}; + +/*--------------------------------------------------------------------------*/ + +Array.prototype.call = function() { + var args = arguments; + this.each(function(f){ f.apply(this, args) }); +} + +/*--------------------------------------------------------------------------*/ + +var Effect = { + _elementDoesNotExistError: { + name: 'ElementDoesNotExistError', + message: 'The specified DOM element does not exist, but is required for this effect to operate' + }, + tagifyText: function(element) { + if(typeof Builder == 'undefined') + throw("Effect.tagifyText requires including script.aculo.us' builder.js library"); + + var tagifyStyle = 'position:relative'; + if(/MSIE/.test(navigator.userAgent) && !window.opera) tagifyStyle += ';zoom:1'; + + element = $(element); + $A(element.childNodes).each( function(child) { + if(child.nodeType==3) { + child.nodeValue.toArray().each( function(character) { + element.insertBefore( + Builder.node('span',{style: tagifyStyle}, + character == ' ' ? String.fromCharCode(160) : character), + child); + }); + Element.remove(child); + } + }); + }, + multiple: function(element, effect) { + var elements; + if(((typeof element == 'object') || + (typeof element == 'function')) && + (element.length)) + elements = element; + else + elements = $(element).childNodes; + + var options = Object.extend({ + speed: 0.1, + delay: 0.0 + }, arguments[2] || {}); + var masterDelay = options.delay; + + $A(elements).each( function(element, index) { + new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); + }); + }, + PAIRS: { + 'slide': ['SlideDown','SlideUp'], + 'blind': ['BlindDown','BlindUp'], + 'appear': ['Appear','Fade'] + }, + toggle: function(element, effect) { + element = $(element); + effect = (effect || 'appear').toLowerCase(); + var options = Object.extend({ + queue: { position:'end', scope:(element.id || 'global'), limit: 1 } + }, arguments[2] || {}); + Effect[element.visible() ? + Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options); + } +}; + +var Effect2 = Effect; // deprecated + +/* ------------- transitions ------------- */ + +Effect.Transitions = { + linear: Prototype.K, + sinoidal: function(pos) { + return (-Math.cos(pos*Math.PI)/2) + 0.5; + }, + reverse: function(pos) { + return 1-pos; + }, + flicker: function(pos) { + return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4; + }, + wobble: function(pos) { + return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5; + }, + pulse: function(pos, pulses) { + pulses = pulses || 5; + return ( + Math.round((pos % (1/pulses)) * pulses) == 0 ? + ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : + 1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) + ); + }, + none: function(pos) { + return 0; + }, + full: function(pos) { + return 1; + } +}; + +/* ------------- core effects ------------- */ + +Effect.ScopedQueue = Class.create(); +Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), { + initialize: function() { + this.effects = []; + this.interval = null; + }, + _each: function(iterator) { + this.effects._each(iterator); + }, + add: function(effect) { + var timestamp = new Date().getTime(); + + var position = (typeof effect.options.queue == 'string') ? + effect.options.queue : effect.options.queue.position; + + switch(position) { + case 'front': + // move unstarted effects after this effect + this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { + e.startOn += effect.finishOn; + e.finishOn += effect.finishOn; + }); + break; + case 'with-last': + timestamp = this.effects.pluck('startOn').max() || timestamp; + break; + case 'end': + // start effect after last queued effect has finished + timestamp = this.effects.pluck('finishOn').max() || timestamp; + break; + } + + effect.startOn += timestamp; + effect.finishOn += timestamp; + + if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) + this.effects.push(effect); + + if(!this.interval) + this.interval = setInterval(this.loop.bind(this), 15); + }, + remove: function(effect) { + this.effects = this.effects.reject(function(e) { return e==effect }); + if(this.effects.length == 0) { + clearInterval(this.interval); + this.interval = null; + } + }, + loop: function() { + var timePos = new Date().getTime(); + for(var i=0, len=this.effects.length;i<len;i++) + if(this.effects[i]) this.effects[i].loop(timePos); + } +}); + +Effect.Queues = { + instances: $H(), + get: function(queueName) { + if(typeof queueName != 'string') return queueName; + + if(!this.instances[queueName]) + this.instances[queueName] = new Effect.ScopedQueue(); + + return this.instances[queueName]; + } +} +Effect.Queue = Effect.Queues.get('global'); + +Effect.DefaultOptions = { + transition: Effect.Transitions.sinoidal, + duration: 1.0, // seconds + fps: 60.0, // max. 60fps due to Effect.Queue implementation + sync: false, // true for combining + from: 0.0, + to: 1.0, + delay: 0.0, + queue: 'parallel' +} + +Effect.Base = function() {}; +Effect.Base.prototype = { + position: null, + start: function(options) { + this.options = Object.extend(Object.extend({},Effect.DefaultOptions), options || {}); + this.currentFrame = 0; + this.state = 'idle'; + this.startOn = this.options.delay*1000; + this.finishOn = this.startOn + (this.options.duration*1000); + this.event('beforeStart'); + if(!this.options.sync) + Effect.Queues.get(typeof this.options.queue == 'string' ? + 'global' : this.options.queue.scope).add(this); + }, + loop: function(timePos) { + if(timePos >= this.startOn) { + if(timePos >= this.finishOn) { + this.render(1.0); + this.cancel(); + this.event('beforeFinish'); + if(this.finish) this.finish(); + this.event('afterFinish'); + return; + } + var pos = (timePos - this.startOn) / (this.finishOn - this.startOn); + var frame = Math.round(pos * this.options.fps * this.options.duration); + if(frame > this.currentFrame) { + this.render(pos); + this.currentFrame = frame; + } + } + }, + render: function(pos) { + if(this.state == 'idle') { + this.state = 'running'; + this.event('beforeSetup'); + if(this.setup) this.setup(); + this.event('afterSetup'); + } + if(this.state == 'running') { + if(this.options.transition) pos = this.options.transition(pos); + pos *= (this.options.to-this.options.from); + pos += this.options.from; + this.position = pos; + this.event('beforeUpdate'); + if(this.update) this.update(pos); + this.event('afterUpdate'); + } + }, + cancel: function() { + if(!this.options.sync) + Effect.Queues.get(typeof this.options.queue == 'string' ? + 'global' : this.options.queue.scope).remove(this); + this.state = 'finished'; + }, + event: function(eventName) { + if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); + if(this.options[eventName]) this.options[eventName](this); + }, + inspect: function() { + var data = $H(); + for(property in this) + if(typeof this[property] != 'function') data[property] = this[property]; + return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>'; + } +} + +Effect.Parallel = Class.create(); +Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), { + initialize: function(effects) { + this.effects = effects || []; + this.start(arguments[1]); + }, + update: function(position) { + this.effects.invoke('render', position); + }, + finish: function(position) { + this.effects.each( function(effect) { + effect.render(1.0); + effect.cancel(); + effect.event('beforeFinish'); + if(effect.finish) effect.finish(position); + effect.event('afterFinish'); + }); + } +}); + +Effect.Event = Class.create(); +Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), { + initialize: function() { + var options = Object.extend({ + duration: 0 + }, arguments[0] || {}); + this.start(options); + }, + update: Prototype.emptyFunction +}); + +Effect.Opacity = Class.create(); +Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + if(!this.element) throw(Effect._elementDoesNotExistError); + // make this work on IE on elements without 'layout' + if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout)) + this.element.setStyle({zoom: 1}); + var options = Object.extend({ + from: this.element.getOpacity() || 0.0, + to: 1.0 + }, arguments[1] || {}); + this.start(options); + }, + update: function(position) { + this.element.setOpacity(position); + } +}); + +Effect.Move = Class.create(); +Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + if(!this.element) throw(Effect._elementDoesNotExistError); + var options = Object.extend({ + x: 0, + y: 0, + mode: 'relative' + }, arguments[1] || {}); + this.start(options); + }, + setup: function() { + // Bug in Opera: Opera returns the "real" position of a static element or + // relative element that does not have top/left explicitly set. + // ==> Always set top and left for position relative elements in your stylesheets + // (to 0 if you do not need them) + this.element.makePositioned(); + this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); + this.originalTop = parseFloat(this.element.getStyle('top') || '0'); + if(this.options.mode == 'absolute') { + // absolute movement, so we need to calc deltaX and deltaY + this.options.x = this.options.x - this.originalLeft; + this.options.y = this.options.y - this.originalTop; + } + }, + update: function(position) { + this.element.setStyle({ + left: Math.round(this.options.x * position + this.originalLeft) + 'px', + top: Math.round(this.options.y * position + this.originalTop) + 'px' + }); + } +}); + +// for backwards compatibility +Effect.MoveBy = function(element, toTop, toLeft) { + return new Effect.Move(element, + Object.extend({ x: toLeft, y: toTop }, arguments[3] || {})); +}; + +Effect.Scale = Class.create(); +Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), { + initialize: function(element, percent) { + this.element = $(element); + if(!this.element) throw(Effect._elementDoesNotExistError); + var options = Object.extend({ + scaleX: true, + scaleY: true, + scaleContent: true, + scaleFromCenter: false, + scaleMode: 'box', // 'box' or 'contents' or {} with provided values + scaleFrom: 100.0, + scaleTo: percent + }, arguments[2] || {}); + this.start(options); + }, + setup: function() { + this.restoreAfterFinish = this.options.restoreAfterFinish || false; + this.elementPositioning = this.element.getStyle('position'); + + this.originalStyle = {}; + ['top','left','width','height','fontSize'].each( function(k) { + this.originalStyle[k] = this.element.style[k]; + }.bind(this)); + + this.originalTop = this.element.offsetTop; + this.originalLeft = this.element.offsetLeft; + + var fontSize = this.element.getStyle('font-size') || '100%'; + ['em','px','%','pt'].each( function(fontSizeType) { + if(fontSize.indexOf(fontSizeType)>0) { + this.fontSize = parseFloat(fontSize); + this.fontSizeType = fontSizeType; + } + }.bind(this)); + + this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; + + this.dims = null; + if(this.options.scaleMode=='box') + this.dims = [this.element.offsetHeight, this.element.offsetWidth]; + if(/^content/.test(this.options.scaleMode)) + this.dims = [this.element.scrollHeight, this.element.scrollWidth]; + if(!this.dims) + this.dims = [this.options.scaleMode.originalHeight, + this.options.scaleMode.originalWidth]; + }, + update: function(position) { + var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); + if(this.options.scaleContent && this.fontSize) + this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); + this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); + }, + finish: function(position) { + if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle); + }, + setDimensions: function(height, width) { + var d = {}; + if(this.options.scaleX) d.width = Math.round(width) + 'px'; + if(this.options.scaleY) d.height = Math.round(height) + 'px'; + if(this.options.scaleFromCenter) { + var topd = (height - this.dims[0])/2; + var leftd = (width - this.dims[1])/2; + if(this.elementPositioning == 'absolute') { + if(this.options.scaleY) d.top = this.originalTop-topd + 'px'; + if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; + } else { + if(this.options.scaleY) d.top = -topd + 'px'; + if(this.options.scaleX) d.left = -leftd + 'px'; + } + } + this.element.setStyle(d); + } +}); + +Effect.Highlight = Class.create(); +Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + if(!this.element) throw(Effect._elementDoesNotExistError); + var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {}); + this.start(options); + }, + setup: function() { + // Prevent executing on elements not in the layout flow + if(this.element.getStyle('display')=='none') { this.cancel(); return; } + // Disable background image during the effect + this.oldStyle = {}; + if (!this.options.keepBackgroundImage) { + this.oldStyle.backgroundImage = this.element.getStyle('background-image'); + this.element.setStyle({backgroundImage: 'none'}); + } + if(!this.options.endcolor) + this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); + if(!this.options.restorecolor) + this.options.restorecolor = this.element.getStyle('background-color'); + // init color calculations + this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); + this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); + }, + update: function(position) { + this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ + return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) }); + }, + finish: function() { + this.element.setStyle(Object.extend(this.oldStyle, { + backgroundColor: this.options.restorecolor + })); + } +}); + +Effect.ScrollTo = Class.create(); +Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + this.start(arguments[1] || {}); + }, + setup: function() { + Position.prepare(); + var offsets = Position.cumulativeOffset(this.element); + if(this.options.offset) offsets[1] += this.options.offset; + var max = window.innerHeight ? + window.height - window.innerHeight : + document.body.scrollHeight - + (document.documentElement.clientHeight ? + document.documentElement.clientHeight : document.body.clientHeight); + this.scrollStart = Position.deltaY; + this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart; + }, + update: function(position) { + Position.prepare(); + window.scrollTo(Position.deltaX, + this.scrollStart + (position*this.delta)); + } +}); + +/* ------------- combination effects ------------- */ + +Effect.Fade = function(element) { + element = $(element); + var oldOpacity = element.getInlineOpacity(); + var options = Object.extend({ + from: element.getOpacity() || 1.0, + to: 0.0, + afterFinishInternal: function(effect) { + if(effect.options.to!=0) return; + effect.element.hide().setStyle({opacity: oldOpacity}); + }}, arguments[1] || {}); + return new Effect.Opacity(element,options); +} + +Effect.Appear = function(element) { + element = $(element); + var options = Object.extend({ + from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), + to: 1.0, + // force Safari to render floated elements properly + afterFinishInternal: function(effect) { + effect.element.forceRerendering(); + }, + beforeSetup: function(effect) { + effect.element.setOpacity(effect.options.from).show(); + }}, arguments[1] || {}); + return new Effect.Opacity(element,options); +} + +Effect.Puff = function(element) { + element = $(element); + var oldStyle = { + opacity: element.getInlineOpacity(), + position: element.getStyle('position'), + top: element.style.top, + left: element.style.left, + width: element.style.width, + height: element.style.height + }; + return new Effect.Parallel( + [ new Effect.Scale(element, 200, + { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), + new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], + Object.extend({ duration: 1.0, + beforeSetupInternal: function(effect) { + Position.absolutize(effect.effects[0].element) + }, + afterFinishInternal: function(effect) { + effect.effects[0].element.hide().setStyle(oldStyle); } + }, arguments[1] || {}) + ); +} + +Effect.BlindUp = function(element) { + element = $(element); + element.makeClipping(); + return new Effect.Scale(element, 0, + Object.extend({ scaleContent: false, + scaleX: false, + restoreAfterFinish: true, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping(); + } + }, arguments[1] || {}) + ); +} + +Effect.BlindDown = function(element) { + element = $(element); + var elementDimensions = element.getDimensions(); + return new Effect.Scale(element, 100, Object.extend({ + scaleContent: false, + scaleX: false, + scaleFrom: 0, + scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, + restoreAfterFinish: true, + afterSetup: function(effect) { + effect.element.makeClipping().setStyle({height: '0px'}).show(); + }, + afterFinishInternal: function(effect) { + effect.element.undoClipping(); + } + }, arguments[1] || {})); +} + +Effect.SwitchOff = function(element) { + element = $(element); + var oldOpacity = element.getInlineOpacity(); + return new Effect.Appear(element, Object.extend({ + duration: 0.4, + from: 0, + transition: Effect.Transitions.flicker, + afterFinishInternal: function(effect) { + new Effect.Scale(effect.element, 1, { + duration: 0.3, scaleFromCenter: true, + scaleX: false, scaleContent: false, restoreAfterFinish: true, + beforeSetup: function(effect) { + effect.element.makePositioned().makeClipping(); + }, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); + } + }) + } + }, arguments[1] || {})); +} + +Effect.DropOut = function(element) { + element = $(element); + var oldStyle = { + top: element.getStyle('top'), + left: element.getStyle('left'), + opacity: element.getInlineOpacity() }; + return new Effect.Parallel( + [ new Effect.Move(element, {x: 0, y: 100, sync: true }), + new Effect.Opacity(element, { sync: true, to: 0.0 }) ], + Object.extend( + { duration: 0.5, + beforeSetup: function(effect) { + effect.effects[0].element.makePositioned(); + }, + afterFinishInternal: function(effect) { + effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); + } + }, arguments[1] || {})); +} + +Effect.Shake = function(element) { + element = $(element); + var oldStyle = { + top: element.getStyle('top'), + left: element.getStyle('left') }; + return new Effect.Move(element, + { x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { + effect.element.undoPositioned().setStyle(oldStyle); + }}) }}) }}) }}) }}) }}); +} + +Effect.SlideDown = function(element) { + element = $(element).cleanWhitespace(); + // SlideDown need to have the content of the element wrapped in a container element with fixed height! + var oldInnerBottom = element.down().getStyle('bottom'); + var elementDimensions = element.getDimensions(); + return new Effect.Scale(element, 100, Object.extend({ + scaleContent: false, + scaleX: false, + scaleFrom: window.opera ? 0 : 1, + scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, + restoreAfterFinish: true, + afterSetup: function(effect) { + effect.element.makePositioned(); + effect.element.down().makePositioned(); + if(window.opera) effect.element.setStyle({top: ''}); + effect.element.makeClipping().setStyle({height: '0px'}).show(); + }, + afterUpdateInternal: function(effect) { + effect.element.down().setStyle({bottom: + (effect.dims[0] - effect.element.clientHeight) + 'px' }); + }, + afterFinishInternal: function(effect) { + effect.element.undoClipping().undoPositioned(); + effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } + }, arguments[1] || {}) + ); +} + +Effect.SlideUp = function(element) { + element = $(element).cleanWhitespace(); + var oldInnerBottom = element.down().getStyle('bottom'); + return new Effect.Scale(element, window.opera ? 0 : 1, + Object.extend({ scaleContent: false, + scaleX: false, + scaleMode: 'box', + scaleFrom: 100, + restoreAfterFinish: true, + beforeStartInternal: function(effect) { + effect.element.makePositioned(); + effect.element.down().makePositioned(); + if(window.opera) effect.element.setStyle({top: ''}); + effect.element.makeClipping().show(); + }, + afterUpdateInternal: function(effect) { + effect.element.down().setStyle({bottom: + (effect.dims[0] - effect.element.clientHeight) + 'px' }); + }, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom}); + effect.element.down().undoPositioned(); + } + }, arguments[1] || {}) + ); +} + +// Bug in opera makes the TD containing this element expand for a instance after finish +Effect.Squish = function(element) { + return new Effect.Scale(element, window.opera ? 1 : 0, { + restoreAfterFinish: true, + beforeSetup: function(effect) { + effect.element.makeClipping(); + }, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping(); + } + }); +} + +Effect.Grow = function(element) { + element = $(element); + var options = Object.extend({ + direction: 'center', + moveTransition: Effect.Transitions.sinoidal, + scaleTransition: Effect.Transitions.sinoidal, + opacityTransition: Effect.Transitions.full + }, arguments[1] || {}); + var oldStyle = { + top: element.style.top, + left: element.style.left, + height: element.style.height, + width: element.style.width, + opacity: element.getInlineOpacity() }; + + var dims = element.getDimensions(); + var initialMoveX, initialMoveY; + var moveX, moveY; + + switch (options.direction) { + case 'top-left': + initialMoveX = initialMoveY = moveX = moveY = 0; + break; + case 'top-right': + initialMoveX = dims.width; + initialMoveY = moveY = 0; + moveX = -dims.width; + break; + case 'bottom-left': + initialMoveX = moveX = 0; + initialMoveY = dims.height; + moveY = -dims.height; + break; + case 'bottom-right': + initialMoveX = dims.width; + initialMoveY = dims.height; + moveX = -dims.width; + moveY = -dims.height; + break; + case 'center': + initialMoveX = dims.width / 2; + initialMoveY = dims.height / 2; + moveX = -dims.width / 2; + moveY = -dims.height / 2; + break; + } + + return new Effect.Move(element, { + x: initialMoveX, + y: initialMoveY, + duration: 0.01, + beforeSetup: function(effect) { + effect.element.hide().makeClipping().makePositioned(); + }, + afterFinishInternal: function(effect) { + new Effect.Parallel( + [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), + new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), + new Effect.Scale(effect.element, 100, { + scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, + sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) + ], Object.extend({ + beforeSetup: function(effect) { + effect.effects[0].element.setStyle({height: '0px'}).show(); + }, + afterFinishInternal: function(effect) { + effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); + } + }, options) + ) + } + }); +} + +Effect.Shrink = function(element) { + element = $(element); + var options = Object.extend({ + direction: 'center', + moveTransition: Effect.Transitions.sinoidal, + scaleTransition: Effect.Transitions.sinoidal, + opacityTransition: Effect.Transitions.none + }, arguments[1] || {}); + var oldStyle = { + top: element.style.top, + left: element.style.left, + height: element.style.height, + width: element.style.width, + opacity: element.getInlineOpacity() }; + + var dims = element.getDimensions(); + var moveX, moveY; + + switch (options.direction) { + case 'top-left': + moveX = moveY = 0; + break; + case 'top-right': + moveX = dims.width; + moveY = 0; + break; + case 'bottom-left': + moveX = 0; + moveY = dims.height; + break; + case 'bottom-right': + moveX = dims.width; + moveY = dims.height; + break; + case 'center': + moveX = dims.width / 2; + moveY = dims.height / 2; + break; + } + + return new Effect.Parallel( + [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), + new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), + new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) + ], Object.extend({ + beforeStartInternal: function(effect) { + effect.effects[0].element.makePositioned().makeClipping(); + }, + afterFinishInternal: function(effect) { + effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } + }, options) + ); +} + +Effect.Pulsate = function(element) { + element = $(element); + var options = arguments[1] || {}; + var oldOpacity = element.getInlineOpacity(); + var transition = options.transition || Effect.Transitions.sinoidal; + var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) }; + reverser.bind(transition); + return new Effect.Opacity(element, + Object.extend(Object.extend({ duration: 2.0, from: 0, + afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } + }, options), {transition: reverser})); +} + +Effect.Fold = function(element) { + element = $(element); + var oldStyle = { + top: element.style.top, + left: element.style.left, + width: element.style.width, + height: element.style.height }; + element.makeClipping(); + return new Effect.Scale(element, 5, Object.extend({ + scaleContent: false, + scaleX: false, + afterFinishInternal: function(effect) { + new Effect.Scale(element, 1, { + scaleContent: false, + scaleY: false, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping().setStyle(oldStyle); + } }); + }}, arguments[1] || {})); +}; + +Effect.Morph = Class.create(); +Object.extend(Object.extend(Effect.Morph.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + if(!this.element) throw(Effect._elementDoesNotExistError); + var options = Object.extend({ + style: {} + }, arguments[1] || {}); + if (typeof options.style == 'string') { + if(options.style.indexOf(':') == -1) { + var cssText = '', selector = '.' + options.style; + $A(document.styleSheets).reverse().each(function(styleSheet) { + if (styleSheet.cssRules) cssRules = styleSheet.cssRules; + else if (styleSheet.rules) cssRules = styleSheet.rules; + $A(cssRules).reverse().each(function(rule) { + if (selector == rule.selectorText) { + cssText = rule.style.cssText; + throw $break; + } + }); + if (cssText) throw $break; + }); + this.style = cssText.parseStyle(); + options.afterFinishInternal = function(effect){ + effect.element.addClassName(effect.options.style); + effect.transforms.each(function(transform) { + if(transform.style != 'opacity') + effect.element.style[transform.style.camelize()] = ''; + }); + } + } else this.style = options.style.parseStyle(); + } else this.style = $H(options.style) + this.start(options); + }, + setup: function(){ + function parseColor(color){ + if(!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; + color = color.parseColor(); + return $R(0,2).map(function(i){ + return parseInt( color.slice(i*2+1,i*2+3), 16 ) + }); + } + this.transforms = this.style.map(function(pair){ + var property = pair[0].underscore().dasherize(), value = pair[1], unit = null; + + if(value.parseColor('#zzzzzz') != '#zzzzzz') { + value = value.parseColor(); + unit = 'color'; + } else if(property == 'opacity') { + value = parseFloat(value); + if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout)) + this.element.setStyle({zoom: 1}); + } else if(Element.CSS_LENGTH.test(value)) + var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/), + value = parseFloat(components[1]), unit = (components.length == 3) ? components[2] : null; + + var originalValue = this.element.getStyle(property); + return $H({ + style: property, + originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), + targetValue: unit=='color' ? parseColor(value) : value, + unit: unit + }); + }.bind(this)).reject(function(transform){ + return ( + (transform.originalValue == transform.targetValue) || + ( + transform.unit != 'color' && + (isNaN(transform.originalValue) || isNaN(transform.targetValue)) + ) + ) + }); + }, + update: function(position) { + var style = $H(), value = null; + this.transforms.each(function(transform){ + value = transform.unit=='color' ? + $R(0,2).inject('#',function(m,v,i){ + return m+(Math.round(transform.originalValue[i]+ + (transform.targetValue[i] - transform.originalValue[i])*position)).toColorPart() }) : + transform.originalValue + Math.round( + ((transform.targetValue - transform.originalValue) * position) * 1000)/1000 + transform.unit; + style[transform.style] = value; + }); + this.element.setStyle(style); + } +}); + +Effect.Transform = Class.create(); +Object.extend(Effect.Transform.prototype, { + initialize: function(tracks){ + this.tracks = []; + this.options = arguments[1] || {}; + this.addTracks(tracks); + }, + addTracks: function(tracks){ + tracks.each(function(track){ + var data = $H(track).values().first(); + this.tracks.push($H({ + ids: $H(track).keys().first(), + effect: Effect.Morph, + options: { style: data } + })); + }.bind(this)); + return this; + }, + play: function(){ + return new Effect.Parallel( + this.tracks.map(function(track){ + var elements = [$(track.ids) || $$(track.ids)].flatten(); + return elements.map(function(e){ return new track.effect(e, Object.extend({ sync:true }, track.options)) }); + }).flatten(), + this.options + ); + } +}); + +Element.CSS_PROPERTIES = $w( + 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + + 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + + 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + + 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + + 'fontSize fontWeight height left letterSpacing lineHeight ' + + 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ + 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + + 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + + 'right textIndent top width wordSpacing zIndex'); + +Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; + +String.prototype.parseStyle = function(){ + var element = Element.extend(document.createElement('div')); + element.innerHTML = '<div style="' + this + '"></div>'; + var style = element.down().style, styleRules = $H(); + + Element.CSS_PROPERTIES.each(function(property){ + if(style[property]) styleRules[property] = style[property]; + }); + if(/MSIE/.test(navigator.userAgent) && !window.opera && this.indexOf('opacity') > -1) { + styleRules.opacity = this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]; + } + return styleRules; +}; + +Element.morph = function(element, style) { + new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || {})); + return element; +}; + +['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom', + 'collectTextNodes','collectTextNodesIgnoreClass','morph'].each( + function(f) { Element.Methods[f] = Element[f]; } +); + +Element.Methods.visualEffect = function(element, effect, options) { + s = effect.gsub(/_/, '-').camelize(); + effect_class = s.charAt(0).toUpperCase() + s.substring(1); + new Effect[effect_class](element, options); + return $(element); +}; + +Element.addMethods(); diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/fastinit.js b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/fastinit.js new file mode 100644 index 0000000000000000000000000000000000000000..20630e8e3cee68e850fd5c3281de3560040692db --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/fastinit.js @@ -0,0 +1,74 @@ +/* +* +* Copyright (c) 2007 Andrew Tetlaw +* +* Permission is hereby granted, free of charge, to any person +* obtaining a copy of this software and associated documentation +* files (the "Software"), to deal in the Software without +* restriction, including without limitation the rights to use, copy, +* modify, merge, publish, distribute, sublicense, and/or sell copies +* of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +* * +* +* +* FastInit +* http://tetlaw.id.au/view/javascript/fastinit +* Andrew Tetlaw +* Version 1.3 (2007-01-09) +* Based on: +* http://dean.edwards.name/weblog/2006/03/faster +* http://dean.edwards.name/weblog/2006/06/again/ +* Help from: +* http://www.cherny.com/webdev/26/domloaded-object-literal-updated +* +*/ +var FastInit = { + onload : function() { + if (FastInit.done) { return; } + FastInit.done = true; + for(var x = 0, al = FastInit.f.length; x < al; x++) { + FastInit.f[x](); + } + }, + addOnLoad : function() { + var a = arguments; + for(var x = 0, al = a.length; x < al; x++) { + if(typeof a[x] === 'function') { FastInit.f.push(a[x]); } + } + }, + listen : function() { + if (/WebKit|khtml/i.test(navigator.userAgent)) { + FastInit.timer = setInterval(function() { + if (/loaded|complete/.test(document.readyState)) { + clearInterval(FastInit.timer); + delete FastInit.timer; + FastInit.onload(); + }}, 10); + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', FastInit.onload, false); + } else if(!FastInit.iew32) { + Event.observe(window, 'load', FastInit.onload); + } + }, + f:[],done:false,timer:null,iew32:false +}; +/*@cc_on @*/ +/*@if (@_win32) +FastInit.iew32 = true; +document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); +document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; +/*@end @*/ +FastInit.listen(); diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/prototype.js b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/prototype.js new file mode 100644 index 0000000000000000000000000000000000000000..0476b8fdccc0717b3be623ff464748d1c5e751e6 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/prototype.js @@ -0,0 +1,2515 @@ +/* Prototype JavaScript framework, version 1.5.0 + * (c) 2005-2007 Sam Stephenson + * + * Prototype is freely distributable under the terms of an MIT-style license. + * For details, see the Prototype web site: http://prototype.conio.net/ + * +/*--------------------------------------------------------------------------*/ + +var Prototype = { + Version: '1.5.0', + BrowserFeatures: { + XPath: !!document.evaluate + }, + + ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)', + emptyFunction: function() {}, + K: function(x) { return x } +} + +var Class = { + create: function() { + return function() { + this.initialize.apply(this, arguments); + } + } +} + +var Abstract = new Object(); + +Object.extend = function(destination, source) { + for (var property in source) { + destination[property] = source[property]; + } + return destination; +} + +Object.extend(Object, { + inspect: function(object) { + try { + if (object === undefined) return 'undefined'; + if (object === null) return 'null'; + return object.inspect ? object.inspect() : object.toString(); + } catch (e) { + if (e instanceof RangeError) return '...'; + throw e; + } + }, + + keys: function(object) { + var keys = []; + for (var property in object) + keys.push(property); + return keys; + }, + + values: function(object) { + var values = []; + for (var property in object) + values.push(object[property]); + return values; + }, + + clone: function(object) { + return Object.extend({}, object); + } +}); + +Function.prototype.bind = function() { + var __method = this, args = $A(arguments), object = args.shift(); + return function() { + return __method.apply(object, args.concat($A(arguments))); + } +} + +Function.prototype.bindAsEventListener = function(object) { + var __method = this, args = $A(arguments), object = args.shift(); + return function(event) { + return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments))); + } +} + +Object.extend(Number.prototype, { + toColorPart: function() { + var digits = this.toString(16); + if (this < 16) return '0' + digits; + return digits; + }, + + succ: function() { + return this + 1; + }, + + times: function(iterator) { + $R(0, this, true).each(iterator); + return this; + } +}); + +var Try = { + these: function() { + var returnValue; + + for (var i = 0, length = arguments.length; i < length; i++) { + var lambda = arguments[i]; + try { + returnValue = lambda(); + break; + } catch (e) {} + } + + return returnValue; + } +} + +/*--------------------------------------------------------------------------*/ + +var PeriodicalExecuter = Class.create(); +PeriodicalExecuter.prototype = { + initialize: function(callback, frequency) { + this.callback = callback; + this.frequency = frequency; + this.currentlyExecuting = false; + + this.registerCallback(); + }, + + registerCallback: function() { + this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + stop: function() { + if (!this.timer) return; + clearInterval(this.timer); + this.timer = null; + }, + + onTimerEvent: function() { + if (!this.currentlyExecuting) { + try { + this.currentlyExecuting = true; + this.callback(this); + } finally { + this.currentlyExecuting = false; + } + } + } +} +String.interpret = function(value){ + return value == null ? '' : String(value); +} + +Object.extend(String.prototype, { + gsub: function(pattern, replacement) { + var result = '', source = this, match; + replacement = arguments.callee.prepareReplacement(replacement); + + while (source.length > 0) { + if (match = source.match(pattern)) { + result += source.slice(0, match.index); + result += String.interpret(replacement(match)); + source = source.slice(match.index + match[0].length); + } else { + result += source, source = ''; + } + } + return result; + }, + + sub: function(pattern, replacement, count) { + replacement = this.gsub.prepareReplacement(replacement); + count = count === undefined ? 1 : count; + + return this.gsub(pattern, function(match) { + if (--count < 0) return match[0]; + return replacement(match); + }); + }, + + scan: function(pattern, iterator) { + this.gsub(pattern, iterator); + return this; + }, + + truncate: function(length, truncation) { + length = length || 30; + truncation = truncation === undefined ? '...' : truncation; + return this.length > length ? + this.slice(0, length - truncation.length) + truncation : this; + }, + + strip: function() { + return this.replace(/^\s+/, '').replace(/\s+$/, ''); + }, + + stripTags: function() { + return this.replace(/<\/?[^>]+>/gi, ''); + }, + + stripScripts: function() { + return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); + }, + + extractScripts: function() { + var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); + var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); + return (this.match(matchAll) || []).map(function(scriptTag) { + return (scriptTag.match(matchOne) || ['', ''])[1]; + }); + }, + + evalScripts: function() { + return this.extractScripts().map(function(script) { return eval(script) }); + }, + + escapeHTML: function() { + var div = document.createElement('div'); + var text = document.createTextNode(this); + div.appendChild(text); + return div.innerHTML; + }, + + unescapeHTML: function() { + var div = document.createElement('div'); + div.innerHTML = this.stripTags(); + return div.childNodes[0] ? (div.childNodes.length > 1 ? + $A(div.childNodes).inject('',function(memo,node){ return memo+node.nodeValue }) : + div.childNodes[0].nodeValue) : ''; + }, + + toQueryParams: function(separator) { + var match = this.strip().match(/([^?#]*)(#.*)?$/); + if (!match) return {}; + + return match[1].split(separator || '&').inject({}, function(hash, pair) { + if ((pair = pair.split('='))[0]) { + var name = decodeURIComponent(pair[0]); + var value = pair[1] ? decodeURIComponent(pair[1]) : undefined; + + if (hash[name] !== undefined) { + if (hash[name].constructor != Array) + hash[name] = [hash[name]]; + if (value) hash[name].push(value); + } + else hash[name] = value; + } + return hash; + }); + }, + + toArray: function() { + return this.split(''); + }, + + succ: function() { + return this.slice(0, this.length - 1) + + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); + }, + + camelize: function() { + var parts = this.split('-'), len = parts.length; + if (len == 1) return parts[0]; + + var camelized = this.charAt(0) == '-' + ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) + : parts[0]; + + for (var i = 1; i < len; i++) + camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); + + return camelized; + }, + + capitalize: function(){ + return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); + }, + + underscore: function() { + return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); + }, + + dasherize: function() { + return this.gsub(/_/,'-'); + }, + + inspect: function(useDoubleQuotes) { + var escapedString = this.replace(/\\/g, '\\\\'); + if (useDoubleQuotes) + return '"' + escapedString.replace(/"/g, '\\"') + '"'; + else + return "'" + escapedString.replace(/'/g, '\\\'') + "'"; + } +}); + +String.prototype.gsub.prepareReplacement = function(replacement) { + if (typeof replacement == 'function') return replacement; + var template = new Template(replacement); + return function(match) { return template.evaluate(match) }; +} + +String.prototype.parseQuery = String.prototype.toQueryParams; + +var Template = Class.create(); +Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; +Template.prototype = { + initialize: function(template, pattern) { + this.template = template.toString(); + this.pattern = pattern || Template.Pattern; + }, + + evaluate: function(object) { + return this.template.gsub(this.pattern, function(match) { + var before = match[1]; + if (before == '\\') return match[2]; + return before + String.interpret(object[match[3]]); + }); + } +} + +var $break = new Object(); +var $continue = new Object(); + +var Enumerable = { + each: function(iterator) { + var index = 0; + try { + this._each(function(value) { + try { + iterator(value, index++); + } catch (e) { + if (e != $continue) throw e; + } + }); + } catch (e) { + if (e != $break) throw e; + } + return this; + }, + + eachSlice: function(number, iterator) { + var index = -number, slices = [], array = this.toArray(); + while ((index += number) < array.length) + slices.push(array.slice(index, index+number)); + return slices.map(iterator); + }, + + all: function(iterator) { + var result = true; + this.each(function(value, index) { + result = result && !!(iterator || Prototype.K)(value, index); + if (!result) throw $break; + }); + return result; + }, + + any: function(iterator) { + var result = false; + this.each(function(value, index) { + if (result = !!(iterator || Prototype.K)(value, index)) + throw $break; + }); + return result; + }, + + collect: function(iterator) { + var results = []; + this.each(function(value, index) { + results.push((iterator || Prototype.K)(value, index)); + }); + return results; + }, + + detect: function(iterator) { + var result; + this.each(function(value, index) { + if (iterator(value, index)) { + result = value; + throw $break; + } + }); + return result; + }, + + findAll: function(iterator) { + var results = []; + this.each(function(value, index) { + if (iterator(value, index)) + results.push(value); + }); + return results; + }, + + grep: function(pattern, iterator) { + var results = []; + this.each(function(value, index) { + var stringValue = value.toString(); + if (stringValue.match(pattern)) + results.push((iterator || Prototype.K)(value, index)); + }) + return results; + }, + + include: function(object) { + var found = false; + this.each(function(value) { + if (value == object) { + found = true; + throw $break; + } + }); + return found; + }, + + inGroupsOf: function(number, fillWith) { + fillWith = fillWith === undefined ? null : fillWith; + return this.eachSlice(number, function(slice) { + while(slice.length < number) slice.push(fillWith); + return slice; + }); + }, + + inject: function(memo, iterator) { + this.each(function(value, index) { + memo = iterator(memo, value, index); + }); + return memo; + }, + + invoke: function(method) { + var args = $A(arguments).slice(1); + return this.map(function(value) { + return value[method].apply(value, args); + }); + }, + + max: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (result == undefined || value >= result) + result = value; + }); + return result; + }, + + min: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (result == undefined || value < result) + result = value; + }); + return result; + }, + + partition: function(iterator) { + var trues = [], falses = []; + this.each(function(value, index) { + ((iterator || Prototype.K)(value, index) ? + trues : falses).push(value); + }); + return [trues, falses]; + }, + + pluck: function(property) { + var results = []; + this.each(function(value, index) { + results.push(value[property]); + }); + return results; + }, + + reject: function(iterator) { + var results = []; + this.each(function(value, index) { + if (!iterator(value, index)) + results.push(value); + }); + return results; + }, + + sortBy: function(iterator) { + return this.map(function(value, index) { + return {value: value, criteria: iterator(value, index)}; + }).sort(function(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }).pluck('value'); + }, + + toArray: function() { + return this.map(); + }, + + zip: function() { + var iterator = Prototype.K, args = $A(arguments); + if (typeof args.last() == 'function') + iterator = args.pop(); + + var collections = [this].concat(args).map($A); + return this.map(function(value, index) { + return iterator(collections.pluck(index)); + }); + }, + + size: function() { + return this.toArray().length; + }, + + inspect: function() { + return '#<Enumerable:' + this.toArray().inspect() + '>'; + } +} + +Object.extend(Enumerable, { + map: Enumerable.collect, + find: Enumerable.detect, + select: Enumerable.findAll, + member: Enumerable.include, + entries: Enumerable.toArray +}); +var $A = Array.from = function(iterable) { + if (!iterable) return []; + if (iterable.toArray) { + return iterable.toArray(); + } else { + var results = []; + for (var i = 0, length = iterable.length; i < length; i++) + results.push(iterable[i]); + return results; + } +} + +Object.extend(Array.prototype, Enumerable); + +if (!Array.prototype._reverse) + Array.prototype._reverse = Array.prototype.reverse; + +Object.extend(Array.prototype, { + _each: function(iterator) { + for (var i = 0, length = this.length; i < length; i++) + iterator(this[i]); + }, + + clear: function() { + this.length = 0; + return this; + }, + + first: function() { + return this[0]; + }, + + last: function() { + return this[this.length - 1]; + }, + + compact: function() { + return this.select(function(value) { + return value != null; + }); + }, + + flatten: function() { + return this.inject([], function(array, value) { + return array.concat(value && value.constructor == Array ? + value.flatten() : [value]); + }); + }, + + without: function() { + var values = $A(arguments); + return this.select(function(value) { + return !values.include(value); + }); + }, + + indexOf: function(object) { + for (var i = 0, length = this.length; i < length; i++) + if (this[i] == object) return i; + return -1; + }, + + reverse: function(inline) { + return (inline !== false ? this : this.toArray())._reverse(); + }, + + reduce: function() { + return this.length > 1 ? this : this[0]; + }, + + uniq: function() { + return this.inject([], function(array, value) { + return array.include(value) ? array : array.concat([value]); + }); + }, + + clone: function() { + return [].concat(this); + }, + + size: function() { + return this.length; + }, + + inspect: function() { + return '[' + this.map(Object.inspect).join(', ') + ']'; + } +}); + +Array.prototype.toArray = Array.prototype.clone; + +function $w(string){ + string = string.strip(); + return string ? string.split(/\s+/) : []; +} + +if(window.opera){ + Array.prototype.concat = function(){ + var array = []; + for(var i = 0, length = this.length; i < length; i++) array.push(this[i]); + for(var i = 0, length = arguments.length; i < length; i++) { + if(arguments[i].constructor == Array) { + for(var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) + array.push(arguments[i][j]); + } else { + array.push(arguments[i]); + } + } + return array; + } +} +var Hash = function(obj) { + Object.extend(this, obj || {}); +}; + +Object.extend(Hash, { + toQueryString: function(obj) { + var parts = []; + + this.prototype._each.call(obj, function(pair) { + if (!pair.key) return; + + if (pair.value && pair.value.constructor == Array) { + var values = pair.value.compact(); + if (values.length < 2) pair.value = values.reduce(); + else { + key = encodeURIComponent(pair.key); + values.each(function(value) { + value = value != undefined ? encodeURIComponent(value) : ''; + parts.push(key + '=' + encodeURIComponent(value)); + }); + return; + } + } + if (pair.value == undefined) pair[1] = ''; + parts.push(pair.map(encodeURIComponent).join('=')); + }); + + return parts.join('&'); + } +}); + +Object.extend(Hash.prototype, Enumerable); +Object.extend(Hash.prototype, { + _each: function(iterator) { + for (var key in this) { + var value = this[key]; + if (value && value == Hash.prototype[key]) continue; + + var pair = [key, value]; + pair.key = key; + pair.value = value; + iterator(pair); + } + }, + + keys: function() { + return this.pluck('key'); + }, + + values: function() { + return this.pluck('value'); + }, + + merge: function(hash) { + return $H(hash).inject(this, function(mergedHash, pair) { + mergedHash[pair.key] = pair.value; + return mergedHash; + }); + }, + + remove: function() { + var result; + for(var i = 0, length = arguments.length; i < length; i++) { + var value = this[arguments[i]]; + if (value !== undefined){ + if (result === undefined) result = value; + else { + if (result.constructor != Array) result = [result]; + result.push(value) + } + } + delete this[arguments[i]]; + } + return result; + }, + + toQueryString: function() { + return Hash.toQueryString(this); + }, + + inspect: function() { + return '#<Hash:{' + this.map(function(pair) { + return pair.map(Object.inspect).join(': '); + }).join(', ') + '}>'; + } +}); + +function $H(object) { + if (object && object.constructor == Hash) return object; + return new Hash(object); +}; +ObjectRange = Class.create(); +Object.extend(ObjectRange.prototype, Enumerable); +Object.extend(ObjectRange.prototype, { + initialize: function(start, end, exclusive) { + this.start = start; + this.end = end; + this.exclusive = exclusive; + }, + + _each: function(iterator) { + var value = this.start; + while (this.include(value)) { + iterator(value); + value = value.succ(); + } + }, + + include: function(value) { + if (value < this.start) + return false; + if (this.exclusive) + return value < this.end; + return value <= this.end; + } +}); + +var $R = function(start, end, exclusive) { + return new ObjectRange(start, end, exclusive); +} + +var Ajax = { + getTransport: function() { + return Try.these( + function() {return new XMLHttpRequest()}, + function() {return new ActiveXObject('Msxml2.XMLHTTP')}, + function() {return new ActiveXObject('Microsoft.XMLHTTP')} + ) || false; + }, + + activeRequestCount: 0 +} + +Ajax.Responders = { + responders: [], + + _each: function(iterator) { + this.responders._each(iterator); + }, + + register: function(responder) { + if (!this.include(responder)) + this.responders.push(responder); + }, + + unregister: function(responder) { + this.responders = this.responders.without(responder); + }, + + dispatch: function(callback, request, transport, json) { + this.each(function(responder) { + if (typeof responder[callback] == 'function') { + try { + responder[callback].apply(responder, [request, transport, json]); + } catch (e) {} + } + }); + } +}; + +Object.extend(Ajax.Responders, Enumerable); + +Ajax.Responders.register({ + onCreate: function() { + Ajax.activeRequestCount++; + }, + onComplete: function() { + Ajax.activeRequestCount--; + } +}); + +Ajax.Base = function() {}; +Ajax.Base.prototype = { + setOptions: function(options) { + this.options = { + method: 'post', + asynchronous: true, + contentType: 'application/x-www-form-urlencoded', + encoding: 'UTF-8', + parameters: '' + } + Object.extend(this.options, options || {}); + + this.options.method = this.options.method.toLowerCase(); + if (typeof this.options.parameters == 'string') + this.options.parameters = this.options.parameters.toQueryParams(); + } +} + +Ajax.Request = Class.create(); +Ajax.Request.Events = + ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; + +Ajax.Request.prototype = Object.extend(new Ajax.Base(), { + _complete: false, + + initialize: function(url, options) { + this.transport = Ajax.getTransport(); + this.setOptions(options); + this.request(url); + }, + + request: function(url) { + this.url = url; + this.method = this.options.method; + var params = this.options.parameters; + + if (!['get', 'post'].include(this.method)) { + // simulate other verbs over post + params['_method'] = this.method; + this.method = 'post'; + } + + params = Hash.toQueryString(params); + if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_=' + + // when GET, append parameters to URL + if (this.method == 'get' && params) + this.url += (this.url.indexOf('?') > -1 ? '&' : '?') + params; + + try { + Ajax.Responders.dispatch('onCreate', this, this.transport); + + this.transport.open(this.method.toUpperCase(), this.url, + this.options.asynchronous); + + if (this.options.asynchronous) + setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10); + + this.transport.onreadystatechange = this.onStateChange.bind(this); + this.setRequestHeaders(); + + var body = this.method == 'post' ? (this.options.postBody || params) : null; + + this.transport.send(body); + + /* Force Firefox to handle ready state 4 for synchronous requests */ + if (!this.options.asynchronous && this.transport.overrideMimeType) + this.onStateChange(); + + } + catch (e) { + this.dispatchException(e); + } + }, + + onStateChange: function() { + var readyState = this.transport.readyState; + if (readyState > 1 && !((readyState == 4) && this._complete)) + this.respondToReadyState(this.transport.readyState); + }, + + setRequestHeaders: function() { + var headers = { + 'X-Requested-With': 'XMLHttpRequest', + 'X-Prototype-Version': Prototype.Version, + 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' + }; + + if (this.method == 'post') { + headers['Content-type'] = this.options.contentType + + (this.options.encoding ? '; charset=' + this.options.encoding : ''); + + /* Force "Connection: close" for older Mozilla browsers to work + * around a bug where XMLHttpRequest sends an incorrect + * Content-length header. See Mozilla Bugzilla #246651. + */ + if (this.transport.overrideMimeType && + (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) + headers['Connection'] = 'close'; + } + + // user-defined headers + if (typeof this.options.requestHeaders == 'object') { + var extras = this.options.requestHeaders; + + if (typeof extras.push == 'function') + for (var i = 0, length = extras.length; i < length; i += 2) + headers[extras[i]] = extras[i+1]; + else + $H(extras).each(function(pair) { headers[pair.key] = pair.value }); + } + + for (var name in headers) + this.transport.setRequestHeader(name, headers[name]); + }, + + success: function() { + return !this.transport.status + || (this.transport.status >= 200 && this.transport.status < 300); + }, + + respondToReadyState: function(readyState) { + var state = Ajax.Request.Events[readyState]; + var transport = this.transport, json = this.evalJSON(); + + if (state == 'Complete') { + try { + this._complete = true; + (this.options['on' + this.transport.status] + || this.options['on' + (this.success() ? 'Success' : 'Failure')] + || Prototype.emptyFunction)(transport, json); + } catch (e) { + this.dispatchException(e); + } + + if ((this.getHeader('Content-type') || 'text/javascript').strip(). + match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i)) + this.evalResponse(); + } + + try { + (this.options['on' + state] || Prototype.emptyFunction)(transport, json); + Ajax.Responders.dispatch('on' + state, this, transport, json); + } catch (e) { + this.dispatchException(e); + } + + if (state == 'Complete') { + // avoid memory leak in MSIE: clean up + this.transport.onreadystatechange = Prototype.emptyFunction; + } + }, + + getHeader: function(name) { + try { + return this.transport.getResponseHeader(name); + } catch (e) { return null } + }, + + evalJSON: function() { + try { + var json = this.getHeader('X-JSON'); + return json ? eval('(' + json + ')') : null; + } catch (e) { return null } + }, + + evalResponse: function() { + try { + return eval(this.transport.responseText); + } catch (e) { + this.dispatchException(e); + } + }, + + dispatchException: function(exception) { + (this.options.onException || Prototype.emptyFunction)(this, exception); + Ajax.Responders.dispatch('onException', this, exception); + } +}); + +Ajax.Updater = Class.create(); + +Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { + initialize: function(container, url, options) { + this.container = { + success: (container.success || container), + failure: (container.failure || (container.success ? null : container)) + } + + this.transport = Ajax.getTransport(); + this.setOptions(options); + + var onComplete = this.options.onComplete || Prototype.emptyFunction; + this.options.onComplete = (function(transport, param) { + this.updateContent(); + onComplete(transport, param); + }).bind(this); + + this.request(url); + }, + + updateContent: function() { + var receiver = this.container[this.success() ? 'success' : 'failure']; + var response = this.transport.responseText; + + if (!this.options.evalScripts) response = response.stripScripts(); + + if (receiver = $(receiver)) { + if (this.options.insertion) + new this.options.insertion(receiver, response); + else + receiver.update(response); + } + + if (this.success()) { + if (this.onComplete) + setTimeout(this.onComplete.bind(this), 10); + } + } +}); + +Ajax.PeriodicalUpdater = Class.create(); +Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { + initialize: function(container, url, options) { + this.setOptions(options); + this.onComplete = this.options.onComplete; + + this.frequency = (this.options.frequency || 2); + this.decay = (this.options.decay || 1); + + this.updater = {}; + this.container = container; + this.url = url; + + this.start(); + }, + + start: function() { + this.options.onComplete = this.updateComplete.bind(this); + this.onTimerEvent(); + }, + + stop: function() { + this.updater.options.onComplete = undefined; + clearTimeout(this.timer); + (this.onComplete || Prototype.emptyFunction).apply(this, arguments); + }, + + updateComplete: function(request) { + if (this.options.decay) { + this.decay = (request.responseText == this.lastText ? + this.decay * this.options.decay : 1); + + this.lastText = request.responseText; + } + this.timer = setTimeout(this.onTimerEvent.bind(this), + this.decay * this.frequency * 1000); + }, + + onTimerEvent: function() { + this.updater = new Ajax.Updater(this.container, this.url, this.options); + } +}); +function $(element) { + if (arguments.length > 1) { + for (var i = 0, elements = [], length = arguments.length; i < length; i++) + elements.push($(arguments[i])); + return elements; + } + if (typeof element == 'string') + element = document.getElementById(element); + return Element.extend(element); +} + +if (Prototype.BrowserFeatures.XPath) { + document._getElementsByXPath = function(expression, parentElement) { + var results = []; + var query = document.evaluate(expression, $(parentElement) || document, + null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); + for (var i = 0, length = query.snapshotLength; i < length; i++) + results.push(query.snapshotItem(i)); + return results; + }; +} + +document.getElementsByClassName = function(className, parentElement) { + if (Prototype.BrowserFeatures.XPath) { + var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]"; + return document._getElementsByXPath(q, parentElement); + } else { + var children = ($(parentElement) || document.body).getElementsByTagName('*'); + var elements = [], child; + for (var i = 0, length = children.length; i < length; i++) { + child = children[i]; + if (Element.hasClassName(child, className)) + elements.push(Element.extend(child)); + } + return elements; + } +}; + +/*--------------------------------------------------------------------------*/ + +if (!window.Element) + var Element = new Object(); + +Element.extend = function(element) { + if (!element || _nativeExtensions || element.nodeType == 3) return element; + + if (!element._extended && element.tagName && element != window) { + var methods = Object.clone(Element.Methods), cache = Element.extend.cache; + + if (element.tagName == 'FORM') + Object.extend(methods, Form.Methods); + if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName)) + Object.extend(methods, Form.Element.Methods); + + Object.extend(methods, Element.Methods.Simulated); + + for (var property in methods) { + var value = methods[property]; + if (typeof value == 'function' && !(property in element)) + element[property] = cache.findOrStore(value); + } + } + + element._extended = true; + return element; +}; + +Element.extend.cache = { + findOrStore: function(value) { + return this[value] = this[value] || function() { + return value.apply(null, [this].concat($A(arguments))); + } + } +}; + +Element.Methods = { + visible: function(element) { + return $(element).style.display != 'none'; + }, + + toggle: function(element) { + element = $(element); + Element[Element.visible(element) ? 'hide' : 'show'](element); + return element; + }, + + hide: function(element) { + $(element).style.display = 'none'; + return element; + }, + + show: function(element) { + $(element).style.display = ''; + return element; + }, + + remove: function(element) { + element = $(element); + element.parentNode.removeChild(element); + return element; + }, + + update: function(element, html) { + html = typeof html == 'undefined' ? '' : html.toString(); + $(element).innerHTML = html.stripScripts(); + setTimeout(function() {html.evalScripts()}, 10); + return element; + }, + + replace: function(element, html) { + element = $(element); + html = typeof html == 'undefined' ? '' : html.toString(); + if (element.outerHTML) { + element.outerHTML = html.stripScripts(); + } else { + var range = element.ownerDocument.createRange(); + range.selectNodeContents(element); + element.parentNode.replaceChild( + range.createContextualFragment(html.stripScripts()), element); + } + setTimeout(function() {html.evalScripts()}, 10); + return element; + }, + + inspect: function(element) { + element = $(element); + var result = '<' + element.tagName.toLowerCase(); + $H({'id': 'id', 'className': 'class'}).each(function(pair) { + var property = pair.first(), attribute = pair.last(); + var value = (element[property] || '').toString(); + if (value) result += ' ' + attribute + '=' + value.inspect(true); + }); + return result + '>'; + }, + + recursivelyCollect: function(element, property) { + element = $(element); + var elements = []; + while (element = element[property]) + if (element.nodeType == 1) + elements.push(Element.extend(element)); + return elements; + }, + + ancestors: function(element) { + return $(element).recursivelyCollect('parentNode'); + }, + + descendants: function(element) { + return $A($(element).getElementsByTagName('*')); + }, + + immediateDescendants: function(element) { + if (!(element = $(element).firstChild)) return []; + while (element && element.nodeType != 1) element = element.nextSibling; + if (element) return [element].concat($(element).nextSiblings()); + return []; + }, + + previousSiblings: function(element) { + return $(element).recursivelyCollect('previousSibling'); + }, + + nextSiblings: function(element) { + return $(element).recursivelyCollect('nextSibling'); + }, + + siblings: function(element) { + element = $(element); + return element.previousSiblings().reverse().concat(element.nextSiblings()); + }, + + match: function(element, selector) { + if (typeof selector == 'string') + selector = new Selector(selector); + return selector.match($(element)); + }, + + up: function(element, expression, index) { + return Selector.findElement($(element).ancestors(), expression, index); + }, + + down: function(element, expression, index) { + return Selector.findElement($(element).descendants(), expression, index); + }, + + previous: function(element, expression, index) { + return Selector.findElement($(element).previousSiblings(), expression, index); + }, + + next: function(element, expression, index) { + return Selector.findElement($(element).nextSiblings(), expression, index); + }, + + getElementsBySelector: function() { + var args = $A(arguments), element = $(args.shift()); + return Selector.findChildElements(element, args); + }, + + getElementsByClassName: function(element, className) { + return document.getElementsByClassName(className, element); + }, + + readAttribute: function(element, name) { + element = $(element); + if (document.all && !window.opera) { + var t = Element._attributeTranslations; + if (t.values[name]) return t.values[name](element, name); + if (t.names[name]) name = t.names[name]; + var attribute = element.attributes[name]; + if(attribute) return attribute.nodeValue; + } + return element.getAttribute(name); + }, + + getHeight: function(element) { + return $(element).getDimensions().height; + }, + + getWidth: function(element) { + return $(element).getDimensions().width; + }, + + classNames: function(element) { + return new Element.ClassNames(element); + }, + + hasClassName: function(element, className) { + if (!(element = $(element))) return; + var elementClassName = element.className; + if (elementClassName.length == 0) return false; + if (elementClassName == className || + elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) + return true; + return false; + }, + + addClassName: function(element, className) { + if (!(element = $(element))) return; + Element.classNames(element).add(className); + return element; + }, + + removeClassName: function(element, className) { + if (!(element = $(element))) return; + Element.classNames(element).remove(className); + return element; + }, + + toggleClassName: function(element, className) { + if (!(element = $(element))) return; + Element.classNames(element)[element.hasClassName(className) ? 'remove' : 'add'](className); + return element; + }, + + observe: function() { + Event.observe.apply(Event, arguments); + return $A(arguments).first(); + }, + + stopObserving: function() { + Event.stopObserving.apply(Event, arguments); + return $A(arguments).first(); + }, + + // removes whitespace-only text node children + cleanWhitespace: function(element) { + element = $(element); + var node = element.firstChild; + while (node) { + var nextNode = node.nextSibling; + if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) + element.removeChild(node); + node = nextNode; + } + return element; + }, + + empty: function(element) { + return $(element).innerHTML.match(/^\s*$/); + }, + + descendantOf: function(element, ancestor) { + element = $(element), ancestor = $(ancestor); + while (element = element.parentNode) + if (element == ancestor) return true; + return false; + }, + + scrollTo: function(element) { + element = $(element); + var pos = Position.cumulativeOffset(element); + window.scrollTo(pos[0], pos[1]); + return element; + }, + + getStyle: function(element, style) { + element = $(element); + if (['float','cssFloat'].include(style)) + style = (typeof element.style.styleFloat != 'undefined' ? 'styleFloat' : 'cssFloat'); + style = style.camelize(); + var value = element.style[style]; + if (!value) { + if (document.defaultView && document.defaultView.getComputedStyle) { + var css = document.defaultView.getComputedStyle(element, null); + value = css ? css[style] : null; + } else if (element.currentStyle) { + value = element.currentStyle[style]; + } + } + + if((value == 'auto') && ['width','height'].include(style) && (element.getStyle('display') != 'none')) + value = element['offset'+style.capitalize()] + 'px'; + + if (window.opera && ['left', 'top', 'right', 'bottom'].include(style)) + if (Element.getStyle(element, 'position') == 'static') value = 'auto'; + if(style == 'opacity') { + if(value) return parseFloat(value); + if(value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) + if(value[1]) return parseFloat(value[1]) / 100; + return 1.0; + } + return value == 'auto' ? null : value; + }, + + setStyle: function(element, style) { + element = $(element); + for (var name in style) { + var value = style[name]; + if(name == 'opacity') { + if (value == 1) { + value = (/Gecko/.test(navigator.userAgent) && + !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : 1.0; + if(/MSIE/.test(navigator.userAgent) && !window.opera) + element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,''); + } else if(value === '') { + if(/MSIE/.test(navigator.userAgent) && !window.opera) + element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,''); + } else { + if(value < 0.00001) value = 0; + if(/MSIE/.test(navigator.userAgent) && !window.opera) + element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') + + 'alpha(opacity='+value*100+')'; + } + } else if(['float','cssFloat'].include(name)) name = (typeof element.style.styleFloat != 'undefined') ? 'styleFloat' : 'cssFloat'; + element.style[name.camelize()] = value; + } + return element; + }, + + getDimensions: function(element) { + element = $(element); + var display = $(element).getStyle('display'); + if (display != 'none' && display != null) // Safari bug + return {width: element.offsetWidth, height: element.offsetHeight}; + + // All *Width and *Height properties give 0 on elements with display none, + // so enable the element temporarily + var els = element.style; + var originalVisibility = els.visibility; + var originalPosition = els.position; + var originalDisplay = els.display; + els.visibility = 'hidden'; + els.position = 'absolute'; + els.display = 'block'; + var originalWidth = element.clientWidth; + var originalHeight = element.clientHeight; + els.display = originalDisplay; + els.position = originalPosition; + els.visibility = originalVisibility; + return {width: originalWidth, height: originalHeight}; + }, + + makePositioned: function(element) { + element = $(element); + var pos = Element.getStyle(element, 'position'); + if (pos == 'static' || !pos) { + element._madePositioned = true; + element.style.position = 'relative'; + // Opera returns the offset relative to the positioning context, when an + // element is position relative but top and left have not been defined + if (window.opera) { + element.style.top = 0; + element.style.left = 0; + } + } + return element; + }, + + undoPositioned: function(element) { + element = $(element); + if (element._madePositioned) { + element._madePositioned = undefined; + element.style.position = + element.style.top = + element.style.left = + element.style.bottom = + element.style.right = ''; + } + return element; + }, + + makeClipping: function(element) { + element = $(element); + if (element._overflow) return element; + element._overflow = element.style.overflow || 'auto'; + if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden') + element.style.overflow = 'hidden'; + return element; + }, + + undoClipping: function(element) { + element = $(element); + if (!element._overflow) return element; + element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; + element._overflow = null; + return element; + } +}; + +Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf}); + +Element._attributeTranslations = {}; + +Element._attributeTranslations.names = { + colspan: "colSpan", + rowspan: "rowSpan", + valign: "vAlign", + datetime: "dateTime", + accesskey: "accessKey", + tabindex: "tabIndex", + enctype: "encType", + maxlength: "maxLength", + readonly: "readOnly", + longdesc: "longDesc" +}; + +Element._attributeTranslations.values = { + _getAttr: function(element, attribute) { + return element.getAttribute(attribute, 2); + }, + + _flag: function(element, attribute) { + return $(element).hasAttribute(attribute) ? attribute : null; + }, + + style: function(element) { + return element.style.cssText.toLowerCase(); + }, + + title: function(element) { + var node = element.getAttributeNode('title'); + return node.specified ? node.nodeValue : null; + } +}; + +Object.extend(Element._attributeTranslations.values, { + href: Element._attributeTranslations.values._getAttr, + src: Element._attributeTranslations.values._getAttr, + disabled: Element._attributeTranslations.values._flag, + checked: Element._attributeTranslations.values._flag, + readonly: Element._attributeTranslations.values._flag, + multiple: Element._attributeTranslations.values._flag +}); + +Element.Methods.Simulated = { + hasAttribute: function(element, attribute) { + var t = Element._attributeTranslations; + attribute = t.names[attribute] || attribute; + return $(element).getAttributeNode(attribute).specified; + } +}; + +// IE is missing .innerHTML support for TABLE-related elements +if (document.all && !window.opera){ + Element.Methods.update = function(element, html) { + element = $(element); + html = typeof html == 'undefined' ? '' : html.toString(); + var tagName = element.tagName.toUpperCase(); + if (['THEAD','TBODY','TR','TD'].include(tagName)) { + var div = document.createElement('div'); + switch (tagName) { + case 'THEAD': + case 'TBODY': + div.innerHTML = '<table><tbody>' + html.stripScripts() + '</tbody></table>'; + depth = 2; + break; + case 'TR': + div.innerHTML = '<table><tbody><tr>' + html.stripScripts() + '</tr></tbody></table>'; + depth = 3; + break; + case 'TD': + div.innerHTML = '<table><tbody><tr><td>' + html.stripScripts() + '</td></tr></tbody></table>'; + depth = 4; + } + $A(element.childNodes).each(function(node){ + element.removeChild(node) + }); + depth.times(function(){ div = div.firstChild }); + + $A(div.childNodes).each( + function(node){ element.appendChild(node) }); + } else { + element.innerHTML = html.stripScripts(); + } + setTimeout(function() {html.evalScripts()}, 10); + return element; + } +}; + +Object.extend(Element, Element.Methods); + +var _nativeExtensions = false; + +if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)) + ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) { + var className = 'HTML' + tag + 'Element'; + if(window[className]) return; + var klass = window[className] = {}; + klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__; + }); + +Element.addMethods = function(methods) { + Object.extend(Element.Methods, methods || {}); + + function copy(methods, destination, onlyIfAbsent) { + onlyIfAbsent = onlyIfAbsent || false; + var cache = Element.extend.cache; + for (var property in methods) { + var value = methods[property]; + if (!onlyIfAbsent || !(property in destination)) + destination[property] = cache.findOrStore(value); + } + } + + if (typeof HTMLElement != 'undefined') { + copy(Element.Methods, HTMLElement.prototype); + copy(Element.Methods.Simulated, HTMLElement.prototype, true); + copy(Form.Methods, HTMLFormElement.prototype); + [HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) { + copy(Form.Element.Methods, klass.prototype); + }); + _nativeExtensions = true; + } +} + +var Toggle = new Object(); +Toggle.display = Element.toggle; + +/*--------------------------------------------------------------------------*/ + +Abstract.Insertion = function(adjacency) { + this.adjacency = adjacency; +} + +Abstract.Insertion.prototype = { + initialize: function(element, content) { + this.element = $(element); + this.content = content.stripScripts(); + + if (this.adjacency && this.element.insertAdjacentHTML) { + try { + this.element.insertAdjacentHTML(this.adjacency, this.content); + } catch (e) { + var tagName = this.element.tagName.toUpperCase(); + if (['TBODY', 'TR'].include(tagName)) { + this.insertContent(this.contentFromAnonymousTable()); + } else { + throw e; + } + } + } else { + this.range = this.element.ownerDocument.createRange(); + if (this.initializeRange) this.initializeRange(); + this.insertContent([this.range.createContextualFragment(this.content)]); + } + + setTimeout(function() {content.evalScripts()}, 10); + }, + + contentFromAnonymousTable: function() { + var div = document.createElement('div'); + div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>'; + return $A(div.childNodes[0].childNodes[0].childNodes); + } +} + +var Insertion = new Object(); + +Insertion.Before = Class.create(); +Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { + initializeRange: function() { + this.range.setStartBefore(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.parentNode.insertBefore(fragment, this.element); + }).bind(this)); + } +}); + +Insertion.Top = Class.create(); +Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(true); + }, + + insertContent: function(fragments) { + fragments.reverse(false).each((function(fragment) { + this.element.insertBefore(fragment, this.element.firstChild); + }).bind(this)); + } +}); + +Insertion.Bottom = Class.create(); +Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.appendChild(fragment); + }).bind(this)); + } +}); + +Insertion.After = Class.create(); +Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { + initializeRange: function() { + this.range.setStartAfter(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.parentNode.insertBefore(fragment, + this.element.nextSibling); + }).bind(this)); + } +}); + +/*--------------------------------------------------------------------------*/ + +Element.ClassNames = Class.create(); +Element.ClassNames.prototype = { + initialize: function(element) { + this.element = $(element); + }, + + _each: function(iterator) { + this.element.className.split(/\s+/).select(function(name) { + return name.length > 0; + })._each(iterator); + }, + + set: function(className) { + this.element.className = className; + }, + + add: function(classNameToAdd) { + if (this.include(classNameToAdd)) return; + this.set($A(this).concat(classNameToAdd).join(' ')); + }, + + remove: function(classNameToRemove) { + if (!this.include(classNameToRemove)) return; + this.set($A(this).without(classNameToRemove).join(' ')); + }, + + toString: function() { + return $A(this).join(' '); + } +}; + +Object.extend(Element.ClassNames.prototype, Enumerable); +var Selector = Class.create(); +Selector.prototype = { + initialize: function(expression) { + this.params = {classNames: []}; + this.expression = expression.toString().strip(); + this.parseExpression(); + this.compileMatcher(); + }, + + parseExpression: function() { + function abort(message) { throw 'Parse error in selector: ' + message; } + + if (this.expression == '') abort('empty expression'); + + var params = this.params, expr = this.expression, match, modifier, clause, rest; + while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) { + params.attributes = params.attributes || []; + params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''}); + expr = match[1]; + } + + if (expr == '*') return this.params.wildcard = true; + + while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) { + modifier = match[1], clause = match[2], rest = match[3]; + switch (modifier) { + case '#': params.id = clause; break; + case '.': params.classNames.push(clause); break; + case '': + case undefined: params.tagName = clause.toUpperCase(); break; + default: abort(expr.inspect()); + } + expr = rest; + } + + if (expr.length > 0) abort(expr.inspect()); + }, + + buildMatchExpression: function() { + var params = this.params, conditions = [], clause; + + if (params.wildcard) + conditions.push('true'); + if (clause = params.id) + conditions.push('element.readAttribute("id") == ' + clause.inspect()); + if (clause = params.tagName) + conditions.push('element.tagName.toUpperCase() == ' + clause.inspect()); + if ((clause = params.classNames).length > 0) + for (var i = 0, length = clause.length; i < length; i++) + conditions.push('element.hasClassName(' + clause[i].inspect() + ')'); + if (clause = params.attributes) { + clause.each(function(attribute) { + var value = 'element.readAttribute(' + attribute.name.inspect() + ')'; + var splitValueBy = function(delimiter) { + return value + ' && ' + value + '.split(' + delimiter.inspect() + ')'; + } + + switch (attribute.operator) { + case '=': conditions.push(value + ' == ' + attribute.value.inspect()); break; + case '~=': conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break; + case '|=': conditions.push( + splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect() + ); break; + case '!=': conditions.push(value + ' != ' + attribute.value.inspect()); break; + case '': + case undefined: conditions.push('element.hasAttribute(' + attribute.name.inspect() + ')'); break; + default: throw 'Unknown operator ' + attribute.operator + ' in selector'; + } + }); + } + + return conditions.join(' && '); + }, + + compileMatcher: function() { + this.match = new Function('element', 'if (!element.tagName) return false; \ + element = $(element); \ + return ' + this.buildMatchExpression()); + }, + + findElements: function(scope) { + var element; + + if (element = $(this.params.id)) + if (this.match(element)) + if (!scope || Element.childOf(element, scope)) + return [element]; + + scope = (scope || document).getElementsByTagName(this.params.tagName || '*'); + + var results = []; + for (var i = 0, length = scope.length; i < length; i++) + if (this.match(element = scope[i])) + results.push(Element.extend(element)); + + return results; + }, + + toString: function() { + return this.expression; + } +} + +Object.extend(Selector, { + matchElements: function(elements, expression) { + var selector = new Selector(expression); + return elements.select(selector.match.bind(selector)).map(Element.extend); + }, + + findElement: function(elements, expression, index) { + if (typeof expression == 'number') index = expression, expression = false; + return Selector.matchElements(elements, expression || '*')[index || 0]; + }, + + findChildElements: function(element, expressions) { + return expressions.map(function(expression) { + return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], function(results, expr) { + var selector = new Selector(expr); + return results.inject([], function(elements, result) { + return elements.concat(selector.findElements(result || element)); + }); + }); + }).flatten(); + } +}); + +function $$() { + return Selector.findChildElements(document, $A(arguments)); +} +var Form = { + reset: function(form) { + $(form).reset(); + return form; + }, + + serializeElements: function(elements, getHash) { + var data = elements.inject({}, function(result, element) { + if (!element.disabled && element.name) { + var key = element.name, value = $(element).getValue(); + if (value != undefined) { + if (result[key]) { + if (result[key].constructor != Array) result[key] = [result[key]]; + result[key].push(value); + } + else result[key] = value; + } + } + return result; + }); + + return getHash ? data : Hash.toQueryString(data); + } +}; + +Form.Methods = { + serialize: function(form, getHash) { + return Form.serializeElements(Form.getElements(form), getHash); + }, + + getElements: function(form) { + return $A($(form).getElementsByTagName('*')).inject([], + function(elements, child) { + if (Form.Element.Serializers[child.tagName.toLowerCase()]) + elements.push(Element.extend(child)); + return elements; + } + ); + }, + + getInputs: function(form, typeName, name) { + form = $(form); + var inputs = form.getElementsByTagName('input'); + + if (!typeName && !name) return $A(inputs).map(Element.extend); + + for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { + var input = inputs[i]; + if ((typeName && input.type != typeName) || (name && input.name != name)) + continue; + matchingInputs.push(Element.extend(input)); + } + + return matchingInputs; + }, + + disable: function(form) { + form = $(form); + form.getElements().each(function(element) { + element.blur(); + element.disabled = 'true'; + }); + return form; + }, + + enable: function(form) { + form = $(form); + form.getElements().each(function(element) { + element.disabled = ''; + }); + return form; + }, + + findFirstElement: function(form) { + return $(form).getElements().find(function(element) { + return element.type != 'hidden' && !element.disabled && + ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); + }); + }, + + focusFirstElement: function(form) { + form = $(form); + form.findFirstElement().activate(); + return form; + } +} + +Object.extend(Form, Form.Methods); + +/*--------------------------------------------------------------------------*/ + +Form.Element = { + focus: function(element) { + $(element).focus(); + return element; + }, + + select: function(element) { + $(element).select(); + return element; + } +} + +Form.Element.Methods = { + serialize: function(element) { + element = $(element); + if (!element.disabled && element.name) { + var value = element.getValue(); + if (value != undefined) { + var pair = {}; + pair[element.name] = value; + return Hash.toQueryString(pair); + } + } + return ''; + }, + + getValue: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + return Form.Element.Serializers[method](element); + }, + + clear: function(element) { + $(element).value = ''; + return element; + }, + + present: function(element) { + return $(element).value != ''; + }, + + activate: function(element) { + element = $(element); + element.focus(); + if (element.select && ( element.tagName.toLowerCase() != 'input' || + !['button', 'reset', 'submit'].include(element.type) ) ) + element.select(); + return element; + }, + + disable: function(element) { + element = $(element); + element.disabled = true; + return element; + }, + + enable: function(element) { + element = $(element); + element.blur(); + element.disabled = false; + return element; + } +} + +Object.extend(Form.Element, Form.Element.Methods); +var Field = Form.Element; +var $F = Form.Element.getValue; + +/*--------------------------------------------------------------------------*/ + +Form.Element.Serializers = { + input: function(element) { + switch (element.type.toLowerCase()) { + case 'checkbox': + case 'radio': + return Form.Element.Serializers.inputSelector(element); + default: + return Form.Element.Serializers.textarea(element); + } + }, + + inputSelector: function(element) { + return element.checked ? element.value : null; + }, + + textarea: function(element) { + return element.value; + }, + + select: function(element) { + return this[element.type == 'select-one' ? + 'selectOne' : 'selectMany'](element); + }, + + selectOne: function(element) { + var index = element.selectedIndex; + return index >= 0 ? this.optionValue(element.options[index]) : null; + }, + + selectMany: function(element) { + var values, length = element.length; + if (!length) return null; + + for (var i = 0, values = []; i < length; i++) { + var opt = element.options[i]; + if (opt.selected) values.push(this.optionValue(opt)); + } + return values; + }, + + optionValue: function(opt) { + // extend element because hasAttribute may not be native + return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; + } +} + +/*--------------------------------------------------------------------------*/ + +Abstract.TimedObserver = function() {} +Abstract.TimedObserver.prototype = { + initialize: function(element, frequency, callback) { + this.frequency = frequency; + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + this.registerCallback(); + }, + + registerCallback: function() { + setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + var value = this.getValue(); + var changed = ('string' == typeof this.lastValue && 'string' == typeof value + ? this.lastValue != value : String(this.lastValue) != String(value)); + if (changed) { + this.callback(this.element, value); + this.lastValue = value; + } + } +} + +Form.Element.Observer = Class.create(); +Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.Observer = Class.create(); +Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); + +/*--------------------------------------------------------------------------*/ + +Abstract.EventObserver = function() {} +Abstract.EventObserver.prototype = { + initialize: function(element, callback) { + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + if (this.element.tagName.toLowerCase() == 'form') + this.registerFormCallbacks(); + else + this.registerCallback(this.element); + }, + + onElementEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + }, + + registerFormCallbacks: function() { + Form.getElements(this.element).each(this.registerCallback.bind(this)); + }, + + registerCallback: function(element) { + if (element.type) { + switch (element.type.toLowerCase()) { + case 'checkbox': + case 'radio': + Event.observe(element, 'click', this.onElementEvent.bind(this)); + break; + default: + Event.observe(element, 'change', this.onElementEvent.bind(this)); + break; + } + } + } +} + +Form.Element.EventObserver = Class.create(); +Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.EventObserver = Class.create(); +Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); +if (!window.Event) { + var Event = new Object(); +} + +Object.extend(Event, { + KEY_BACKSPACE: 8, + KEY_TAB: 9, + KEY_RETURN: 13, + KEY_ESC: 27, + KEY_LEFT: 37, + KEY_UP: 38, + KEY_RIGHT: 39, + KEY_DOWN: 40, + KEY_DELETE: 46, + KEY_HOME: 36, + KEY_END: 35, + KEY_PAGEUP: 33, + KEY_PAGEDOWN: 34, + + element: function(event) { + return event.target || event.srcElement; + }, + + isLeftClick: function(event) { + return (((event.which) && (event.which == 1)) || + ((event.button) && (event.button == 1))); + }, + + pointerX: function(event) { + return event.pageX || (event.clientX + + (document.documentElement.scrollLeft || document.body.scrollLeft)); + }, + + pointerY: function(event) { + return event.pageY || (event.clientY + + (document.documentElement.scrollTop || document.body.scrollTop)); + }, + + stop: function(event) { + if (event.preventDefault) { + event.preventDefault(); + event.stopPropagation(); + } else { + event.returnValue = false; + event.cancelBubble = true; + } + }, + + // find the first node with the given tagName, starting from the + // node the event was triggered on; traverses the DOM upwards + findElement: function(event, tagName) { + var element = Event.element(event); + while (element.parentNode && (!element.tagName || + (element.tagName.toUpperCase() != tagName.toUpperCase()))) + element = element.parentNode; + return element; + }, + + observers: false, + + _observeAndCache: function(element, name, observer, useCapture) { + if (!this.observers) this.observers = []; + if (element.addEventListener) { + this.observers.push([element, name, observer, useCapture]); + element.addEventListener(name, observer, useCapture); + } else if (element.attachEvent) { + this.observers.push([element, name, observer, useCapture]); + element.attachEvent('on' + name, observer); + } + }, + + unloadCache: function() { + if (!Event.observers) return; + for (var i = 0, length = Event.observers.length; i < length; i++) { + Event.stopObserving.apply(this, Event.observers[i]); + Event.observers[i][0] = null; + } + Event.observers = false; + }, + + observe: function(element, name, observer, useCapture) { + element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + (navigator.appVersion.match(/Konqueror|Safari|KHTML/) + || element.attachEvent)) + name = 'keydown'; + + Event._observeAndCache(element, name, observer, useCapture); + }, + + stopObserving: function(element, name, observer, useCapture) { + element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + (navigator.appVersion.match(/Konqueror|Safari|KHTML/) + || element.detachEvent)) + name = 'keydown'; + + if (element.removeEventListener) { + element.removeEventListener(name, observer, useCapture); + } else if (element.detachEvent) { + try { + element.detachEvent('on' + name, observer); + } catch (e) {} + } + } +}); + +/* prevent memory leaks in IE */ +if (navigator.appVersion.match(/\bMSIE\b/)) + Event.observe(window, 'unload', Event.unloadCache, false); +var Position = { + // set to true if needed, warning: firefox performance problems + // NOT neeeded for page scrolling, only if draggable contained in + // scrollable elements + includeScrollOffsets: false, + + // must be called before calling withinIncludingScrolloffset, every time the + // page is scrolled + prepare: function() { + this.deltaX = window.pageXOffset + || document.documentElement.scrollLeft + || document.body.scrollLeft + || 0; + this.deltaY = window.pageYOffset + || document.documentElement.scrollTop + || document.body.scrollTop + || 0; + }, + + realOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.scrollTop || 0; + valueL += element.scrollLeft || 0; + element = element.parentNode; + } while (element); + return [valueL, valueT]; + }, + + cumulativeOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + } while (element); + return [valueL, valueT]; + }, + + positionedOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + if (element) { + if(element.tagName=='BODY') break; + var p = Element.getStyle(element, 'position'); + if (p == 'relative' || p == 'absolute') break; + } + } while (element); + return [valueL, valueT]; + }, + + offsetParent: function(element) { + if (element.offsetParent) return element.offsetParent; + if (element == document.body) return element; + + while ((element = element.parentNode) && element != document.body) + if (Element.getStyle(element, 'position') != 'static') + return element; + + return document.body; + }, + + // caches x/y coordinate pair to use with overlap + within: function(element, x, y) { + if (this.includeScrollOffsets) + return this.withinIncludingScrolloffsets(element, x, y); + this.xcomp = x; + this.ycomp = y; + this.offset = this.cumulativeOffset(element); + + return (y >= this.offset[1] && + y < this.offset[1] + element.offsetHeight && + x >= this.offset[0] && + x < this.offset[0] + element.offsetWidth); + }, + + withinIncludingScrolloffsets: function(element, x, y) { + var offsetcache = this.realOffset(element); + + this.xcomp = x + offsetcache[0] - this.deltaX; + this.ycomp = y + offsetcache[1] - this.deltaY; + this.offset = this.cumulativeOffset(element); + + return (this.ycomp >= this.offset[1] && + this.ycomp < this.offset[1] + element.offsetHeight && + this.xcomp >= this.offset[0] && + this.xcomp < this.offset[0] + element.offsetWidth); + }, + + // within must be called directly before + overlap: function(mode, element) { + if (!mode) return 0; + if (mode == 'vertical') + return ((this.offset[1] + element.offsetHeight) - this.ycomp) / + element.offsetHeight; + if (mode == 'horizontal') + return ((this.offset[0] + element.offsetWidth) - this.xcomp) / + element.offsetWidth; + }, + + page: function(forElement) { + var valueT = 0, valueL = 0; + + var element = forElement; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + + // Safari fix + if (element.offsetParent==document.body) + if (Element.getStyle(element,'position')=='absolute') break; + + } while (element = element.offsetParent); + + element = forElement; + do { + if (!window.opera || element.tagName=='BODY') { + valueT -= element.scrollTop || 0; + valueL -= element.scrollLeft || 0; + } + } while (element = element.parentNode); + + return [valueL, valueT]; + }, + + clone: function(source, target) { + var options = Object.extend({ + setLeft: true, + setTop: true, + setWidth: true, + setHeight: true, + offsetTop: 0, + offsetLeft: 0 + }, arguments[2] || {}) + + // find page position of source + source = $(source); + var p = Position.page(source); + + // find coordinate system to use + target = $(target); + var delta = [0, 0]; + var parent = null; + // delta [0,0] will do fine with position: fixed elements, + // position:absolute needs offsetParent deltas + if (Element.getStyle(target,'position') == 'absolute') { + parent = Position.offsetParent(target); + delta = Position.page(parent); + } + + // correct by body offsets (fixes Safari) + if (parent == document.body) { + delta[0] -= document.body.offsetLeft; + delta[1] -= document.body.offsetTop; + } + + // set position + if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; + if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; + if(options.setWidth) target.style.width = source.offsetWidth + 'px'; + if(options.setHeight) target.style.height = source.offsetHeight + 'px'; + }, + + absolutize: function(element) { + element = $(element); + if (element.style.position == 'absolute') return; + Position.prepare(); + + var offsets = Position.positionedOffset(element); + var top = offsets[1]; + var left = offsets[0]; + var width = element.clientWidth; + var height = element.clientHeight; + + element._originalLeft = left - parseFloat(element.style.left || 0); + element._originalTop = top - parseFloat(element.style.top || 0); + element._originalWidth = element.style.width; + element._originalHeight = element.style.height; + + element.style.position = 'absolute'; + element.style.top = top + 'px'; + element.style.left = left + 'px'; + element.style.width = width + 'px'; + element.style.height = height + 'px'; + }, + + relativize: function(element) { + element = $(element); + if (element.style.position == 'relative') return; + Position.prepare(); + + element.style.position = 'relative'; + var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); + var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); + + element.style.top = top + 'px'; + element.style.left = left + 'px'; + element.style.height = element._originalHeight; + element.style.width = element._originalWidth; + } +} + +// Safari returns margins on body which is incorrect if the child is absolutely +// positioned. For performance reasons, redefine Position.cumulativeOffset for +// KHTML/WebKit only. +if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) { + Position.cumulativeOffset = function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + if (element.offsetParent == document.body) + if (Element.getStyle(element, 'position') == 'absolute') break; + + element = element.offsetParent; + } while (element); + + return [valueL, valueT]; + } +} + +Element.addMethods(); \ No newline at end of file diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/slideshow.js b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/slideshow.js new file mode 100644 index 0000000000000000000000000000000000000000..622840e8c11f9fc3a5940dea19e49325a2078305 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link-core/slideshow.js @@ -0,0 +1,121 @@ +/* +Javascript component of ubiquity-slideshow global to all variations. + +* Interprets parameters passed via location.hash (in #?param1=key?param2 format) +* Creates an animated slideshow inside the #slideshow element. +* Automatically loads a requested locale, based on the default slides. +* Manages slideshow controls, if requested via parameters. + +Assumptions are made about the design of the html document this is inside of. +Please see slides/ubuntu/index.html for an example of this script in use. + + +Dependencies (please load these first): +link-core/prototype.js +link-core/effects.js, link-core/fastinit.js, link-core/crossfade.js +directory.js (note that this file does not exist yet, but will when the build script runs) +*/ + +/* TODO: Accept extra parameters from host HTML file! + (Perhaps variables defined ahead of time) +*/ + +window.onDomReady = DomReady; +function DomReady(fn) +{ + document.addEventListener("DOMContentLoaded", fn, false); +} + + +var options = []; /* this will hold parameters passed to the slideshow */ +var slideshow; + +window.onDomReady(function(){ + parameters = window.location.hash.slice(window.location.hash.indexOf('#') + 1).split('?'); + + for(var i = 0; i < parameters.length; i++) + { + hash = parameters[i].split('='); + options.push(hash[0]); + options[hash[0]] = hash[1]; + } + + if ( options.indexOf('locale') > -1 ) + setLocale(options['locale']); + + if ( options.indexOf('rtl') > -1 ) + loadRTL(); + + + Crossfade.setup({autoLoad:false, random:false, interval:90, duration:0.5, loop:false, transition:Crossfade.Transition.Cover }); + + slideshow = new Crossfade('slideshow'); + + if ( options.indexOf('controls') > -1 ) { + slideshow.options.loop = true; + $('debug-controls').style.display = "block"; + $('current-slide').value = slideshow.filenames[0]; + $('prev-slide').onclick = prevSlide; + $('next-slide').onclick = nextSlide; + //slideshow.stop(); + }; +}); + + +function setLocale(locale) { + var slideanchors = $$("div#slideshow div a"); + + slideanchors.each(function(anchor) { + var slide_name = anchor.readAttribute("href"); + var new_url = _get_translated_url(slide_name, locale); + + if ( new_url != null ) { + anchor.href = new_url; + /*console.log("Using translation at: "+ new_url);*/ + } + }) + + function _get_translated_url(slide_name, locale) { + var translated_url = null + + if ( _translation_exists(slide_name, locale) ) { + translated_url = "./loc."+locale+"/"+slide_name; + } else { + var before_dot = locale.split(".",1)[0]; + var before_underscore = before_dot.split("_",1)[0]; + if ( before_underscore != null && _translation_exists(slide_name, before_underscore) ) + translated_url = "./loc."+before_underscore+"/"+slide_name; + else if ( before_dot != null && _translation_exists(slide_name, before_dot) ) + translated_url = "./loc."+before_dot+"/"+slide_name; + } + + return translated_url; + } + + function _translation_exists(slide_name, locale) { + result = false; + try { + result = ( directory[locale][slide_name] == true ); + } catch(err) { + /* + This usually happens if the directory object + (auto-generated at build time, placed in ./directory.js) + does not exist. That object is needed to know whether + a translation exists for the given locale. + */ + } + return result; + } +} + +function loadRTL() { + document.body.addClassName("rtl") +} + +function nextSlide() { + slideshow.next(); +} + +function prevSlide() { + slideshow.previous(); +} diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/background.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/background.png new file mode 100644 index 0000000000000000000000000000000000000000..493b91c088be4926c68293eeaecd1af1da7b55f3 Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/background.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/bullet-point.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/bullet-point.png new file mode 100644 index 0000000000000000000000000000000000000000..41b925fd2ff2d29a433434bd32f1df9014c25fc3 Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/bullet-point.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/bullet-point.rtl.png b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/bullet-point.rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..898ba70236a043d168d01cb415d0fe7368f4dc61 Binary files /dev/null and b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/bullet-point.rtl.png differ diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/general.css b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/general.css new file mode 100644 index 0000000000000000000000000000000000000000..e2ab58e34707c059b29b7b12f53817a52b80c450 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/link/general.css @@ -0,0 +1,216 @@ +html, body +{ + margin:0; + padding:0; + + background-color:#2e3436; + + font-family:sans-serif; + color:#000000; +} + +/* +Hyperlink-style text +*/ +a +{ + color:blue; + font-style:italic; +} + +#container +{ + position:absolute; + + width:700px; + height:420px; + + overflow:hidden; + + background-image:url('background.png'); + background-repeat:no-repeat; + background-position:top left; + + background-color:#fdfdfd; + + /*cursor:default;*/ +} + +#debug-controls +{ + display:block; + position:absolute; + top: 440px; + width:700px; + text-align:center; +} + +#debug-controls input +{ + width:40px; +} + +#debug-controls input#current-slide +{ + width:600px; +} + +/* +Title block is positioned at the top of a slide. +*/ +.title +{ + position:absolute; + top:15px; + left:10px; + + font-size:20px; + font-weight:bold; + /*color: #0f262f;*/ + color:#007347; + border-bottom: 1px solid #5b8595; + width: 100%; + + padding:0; + margin:0; +} + +/* +Typically an image. This is positioned at the top +right of a slide and is given a size of 64x64 pixels. +*/ +.icon +{ + position:absolute; + + width:auto; + height:auto; + + bottom:-420px; + right:10px; + + z-index:11; + border:0px; +} +.edubar +{ + position:absolute; + width:525px; + height:140px; + + bottom:-420px; + left:87px; + + z-index:11; + border:0px; +} + +/* +#content expects to be contained in here. #main +creates a nice, plain surface upon which it can +appear :) +*/ +.main +{ + position:absolute; + + top:50px; + left:0px; + + padding-right:60px; + + font-size:14px; + + z-index:12; +} + +/* +Slide's body text goes here. It appears right below +the title, at the top of the white area with heavy +margins around it. +*/ +.main .content +{ + padding-left:16px; + padding-right:16px; + + width:490px; +} + +.content ul +{ + margin-top:0px; + padding-left:1.8em; + + height:auto; + + overflow:auto; + + list-style-image:url("bullet-point.png"); +} + +.content li +{ + padding:0.6em; +} + +.content .special +{ + position:absolute; + top:290px; + left:50px; + width:440px; + + font-weight:bold; +} + +.special-comment +{ + position:absolute; + text-align:center; + top:170px; + left:130px; + width:440px; + + font-weight:bold; +} + +.content img.inline +{ + height:auto; + width:auto; +} + +/* +This rule disables drag-and-drop for images. See bug #448703. +*/ +img +{ + -webkit-user-drag: none; +} + + + +/* RTL stuff */ +.rtl { + direction:rtl; +} +.rtl .title { + right:10px; +} +.rtl .icon { + left:10px; + right:auto; +} +.rtl .main { + right:0px; + padding-right:0px; + padding-left:60px; +} +.rtl .content ul { + list-style-image:url("bullet-point.rtl.png"); +} +.rtl .content .special { + right:50px; + left:auto; +} diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/obj-educ.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/obj-educ.html new file mode 100644 index 0000000000000000000000000000000000000000..05926fbcf6b5b712254974d5ee81d35c8f6e37e0 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/obj-educ.html @@ -0,0 +1,12 @@ +<h1 class="title">Banco Internacional de Objetos Educacionais</h1> +<div class="main"> + <div class="content"> + <ul> + <li>O Banco Internacional de Objetos Educacionais é um repositório de + acesso público, havendo material para todos os níveis de ensino e sendo + este oferecido em vários formatos.</li> + <li>Os objetos do Banco podem ser acessados isoladamente ou em coleções.</li> + </ul> + </div> +</div> +<img class="edubar" src="icons/obj-educ.png" alt="" /> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/portal-prof.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/portal-prof.html new file mode 100644 index 0000000000000000000000000000000000000000..7cb874f98c966af0ae1791b2776306840a291f1a --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/portal-prof.html @@ -0,0 +1,16 @@ +<h1 class="title">Portal do Professor</h1> +<div class="main"> + <div class="content"> + <ul> + <li>O Portal do Professor é um espaço para a troca de experiências + entre os professores nos espaços do ensino fundamental e do ensino + médio.</li> + <li>É um ambiente virtual com recursos educacionais que facilitam e + dinamizam o trabalho dos professores.</li> + <li>Seu conteúdo inclui sugestões de aulas de acordo com o currículo de + cada disciplina e apresenta recursos tais como vídeos, fotos, mapas, + áudio e textos.</li> + </ul> + </div> +</div> +<img class="edubar" src="icons/portal-prof.png" alt="" /> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/tv-escola.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/tv-escola.html new file mode 100644 index 0000000000000000000000000000000000000000..dd7ff6b231d244ffad86ef23f8b386be42e34a69 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/tv-escola.html @@ -0,0 +1,12 @@ +<h1 class="title">TV Escola</h1> +<div class="main"> + <div class="content"> + <ul> + <li>A TV Escola é o canal da educação.</li> + <li>É a televisão pública do MEC, ou, mais precisamente, uma ferramenta + pedagógica que se destina a professores e educadores brasileiros, + alunos e a todos interessados em aprender.</li> + </ul> + </div> +</div> +<img class="edubar" src="icons/tv-escola.png" alt="" /> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/welcome.html b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/welcome.html new file mode 100644 index 0000000000000000000000000000000000000000..d28d6ba8f7582b2a07825ce50b25a8c82d6e78f2 --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slides/welcome.html @@ -0,0 +1,13 @@ +<h1 class="title">Bem-vindo(a)</h1> + +<div class="main"> + <div class="content"> + <ul> + <li>O LE 4.0 foi projetado para oferecer aos seus usuários um ambiente agradável e de fácil utilização.</li> + <li>Com este intuito, esta versão oferece uma série de recursos e aplicativos novos. Durante a instalação, você poderá conhecer algumas das novidades incorporadas nesta versão.</li> + </ul> + <p class="special">O LE 4.0 é feito para ser fácil. Sinta-se a vontade para experimentar!</p> + </div> +</div> + +<img class="icon" src="icons/LE-logo.png" alt="" /> diff --git a/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slideshow.conf b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slideshow.conf new file mode 100644 index 0000000000000000000000000000000000000000..1f077b317fd846d9ae5e82734288d2b99a2999fc --- /dev/null +++ b/ubiquity-slideshow-le/pacote/usr/share/ubiquity-slideshow/slideshow.conf @@ -0,0 +1,3 @@ +[Slideshow] +width:700 +height:420