diff --git a/web/sites/all/modules/contrib/service_links/LICENSE.txt b/web/sites/all/modules/contrib/service_links/LICENSE.txt
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/LICENSE.txt
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) 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
+this service 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 make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. 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.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+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
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the 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 a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE 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.
+
+ 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
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ 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 2 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, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision 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, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This 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.
diff --git a/web/sites/all/modules/contrib/service_links/README.txt b/web/sites/all/modules/contrib/service_links/README.txt
new file mode 100644
index 0000000..b2c3f89
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/README.txt
@@ -0,0 +1,89 @@
+Service Links 2.x:
+------------------
+Author and mantainer: Fabio Mucciante aka TheCrow (since the 2.x branch)
+Current co-mantainer: Simon Georges
+Requirements: Drupal 7
+License: GPL (see LICENSE.txt)
+
+Introduction
+------------
+This module is the enhanced version of Service Links 1.x developed
+by Fredrik Jonsson, rewritten and improved to fit the new purposes:
+extend easily the number of services supported and provide APIs to
+print links everywhere within any content.
+At the address http://servicelinks.altervista.org/?q=service
+a web interface helps to create a module including the services
+not availables in the standard package.
+
+Overview
+---------
+Service Links provide an amount of 70+ social networks
+from around the World where submit the link of a given content,
+below a short list:
+
+* del.icio.us
+* Digg
+* Facebook
+* Furl
+* Google
+* IceRocket
+* LinkedIn
+* MySpace
+* Newsvine
+* Reddit
+* StumbleUpon
+* Technorati
+* Twitter
+* Yahoo
+* ...
+
+The admin decides:
+- the style to render the links: text, image, text + image
+- to show links only for certain node types or some categories
+- to add links within the content body, among the other links, or in a block
+- what roles are allowed to see the selected links.
+
+Within the 2.x branch has been introduced:
+- modular management of services, grouped by different language area,
+ through external modules implementing the hook_service_links()
+- sorting of services through drag'n drop
+- support for buttons which make use of Javascript without break the
+ XHTML specifies to keep the module more 'accessible' as possible
+- improved the use with not node pages
+- support for other Drupal modules: Display Suite, Forward, Views, Short Url
+- support for sprites to render the service images
+- support for browser bookmarking (Chrome, Firefox, IE, Opera)
+- two APIs to print easily the whole set of services or a customs subset of them
+- configurable list of pages to show/hide on also through PHP code
+
+A more detailed list of options and related explaining is available at the page:
+http://servicelinks.altervista.org/?q=about
+
+Installation and configuration
+-------------------------------
+1) Copy the whole 'service_links' folder under your 'modules' directory and then
+
+2) Point your browser to administer >> modules', enable 'Service Links' and one
+ of the 'XXX Services' provided, 'General Services' contain the most know social
+ networks, and 'Widgets Services' the most used buttons
+
+3) Go to 'administer >> access control' for allow users to watch the links.
+
+4) At 'administer >> settings >> service links' select for what type of content
+ enable Service Links and in 'Services' tab select the services to show.
+
+More information
+----------------
+
+The file 'template.php' contains some examples about phptemplate variables
+
+The file 'service_links.api.php' contains info about the hooks implemented
+
+More info regarding installation and first configuration, set up of the available
+options, either extension of the number of services and theming output are available
+on the online documentation at the address:
+http://servicelinks.altervista.org/?q=about
+
+More services can be included and packed within an external module customizable
+through a web interface available at the address:
+http://servicelinks.altervista.org/?q=service
diff --git a/web/sites/all/modules/contrib/service_links/css/service_links_fisheye.css b/web/sites/all/modules/contrib/service_links/css/service_links_fisheye.css
new file mode 100644
index 0000000..b8334f8
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/css/service_links_fisheye.css
@@ -0,0 +1,32 @@
+.fisheye{
+ text-align: center;
+ height: 50px;
+ position: relative;
+}
+.fisheyeContainer {
+ position: absolute;
+ height: 50px;
+ /*background: url(bg.gif);*/
+ padding-left: 20px;
+}
+a.fisheyeItem:hover {text-decoration: none}
+a.fisheyeItem {
+ text-align: center;
+ color: #000;
+ font-weight: bold;
+ text-decoration: none;
+ width: 16px;
+ position: absolute;
+ display: block;
+ top: 0;
+}
+.fisheyeItem img {
+ border: none;
+ margin: 5px 10px 0px;
+ width: 100%;
+}
+.fisheyeContainer span {
+ display: none;
+ padding-left: 20px;
+}
+
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_alltagz.png b/web/sites/all/modules/contrib/service_links/images/_de_alltagz.png
new file mode 100644
index 0000000..76f1a05
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_alltagz.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_colivia.png b/web/sites/all/modules/contrib/service_links/images/_de_colivia.png
new file mode 100644
index 0000000..4fafe78
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_colivia.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_icio.png b/web/sites/all/modules/contrib/service_links/images/_de_icio.png
new file mode 100644
index 0000000..48a11f2
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_icio.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_infopirat.png b/web/sites/all/modules/contrib/service_links/images/_de_infopirat.png
new file mode 100644
index 0000000..4a4b20b
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_infopirat.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_linkarena.png b/web/sites/all/modules/contrib/service_links/images/_de_linkarena.png
new file mode 100644
index 0000000..9aef543
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_linkarena.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_meinvz.png b/web/sites/all/modules/contrib/service_links/images/_de_meinvz.png
new file mode 100644
index 0000000..dbf5300
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_meinvz.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_netselektor.png b/web/sites/all/modules/contrib/service_links/images/_de_netselektor.png
new file mode 100644
index 0000000..a589ad3
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_netselektor.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_oneview.png b/web/sites/all/modules/contrib/service_links/images/_de_oneview.png
new file mode 100644
index 0000000..e1b632d
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_oneview.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_readster.png b/web/sites/all/modules/contrib/service_links/images/_de_readster.png
new file mode 100644
index 0000000..c19355b
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_readster.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_seekxl.png b/web/sites/all/modules/contrib/service_links/images/_de_seekxl.png
new file mode 100644
index 0000000..725938e
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_seekxl.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_seoigg.png b/web/sites/all/modules/contrib/service_links/images/_de_seoigg.png
new file mode 100644
index 0000000..3d14741
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_seoigg.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_weblinkr.png b/web/sites/all/modules/contrib/service_links/images/_de_weblinkr.png
new file mode 100644
index 0000000..a21d1b9
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_weblinkr.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_webnews.png b/web/sites/all/modules/contrib/service_links/images/_de_webnews.png
new file mode 100644
index 0000000..9e38b5e
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_webnews.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_xing.png b/web/sites/all/modules/contrib/service_links/images/_de_xing.png
new file mode 100644
index 0000000..b2b5e82
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_xing.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_de_yigg.png b/web/sites/all/modules/contrib/service_links/images/_de_yigg.png
new file mode 100644
index 0000000..0844480
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_de_yigg.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_es_barrapunto.png b/web/sites/all/modules/contrib/service_links/images/_es_barrapunto.png
new file mode 100644
index 0000000..862998c
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_barrapunto.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_es_fresqui.png b/web/sites/all/modules/contrib/service_links/images/_es_fresqui.png
new file mode 100644
index 0000000..ef8ffed
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_fresqui.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_es_latafanera.png b/web/sites/all/modules/contrib/service_links/images/_es_latafanera.png
new file mode 100644
index 0000000..dd517bb
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_latafanera.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_es_meneame.png b/web/sites/all/modules/contrib/service_links/images/_es_meneame.png
new file mode 100644
index 0000000..169e20d
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_meneame.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_es_tuenti.png b/web/sites/all/modules/contrib/service_links/images/_es_tuenti.png
new file mode 100644
index 0000000..7046690
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_es_tuenti.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_eu_aupatu.png b/web/sites/all/modules/contrib/service_links/images/_eu_aupatu.png
new file mode 100644
index 0000000..ec3ddde
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_eu_aupatu.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_eu_bildu.png b/web/sites/all/modules/contrib/service_links/images/_eu_bildu.png
new file mode 100644
index 0000000..335fa0f
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_eu_bildu.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_eu_zabaldu.png b/web/sites/all/modules/contrib/service_links/images/_eu_zabaldu.png
new file mode 100644
index 0000000..75440a0
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_eu_zabaldu.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_fa_balatarin.png b/web/sites/all/modules/contrib/service_links/images/_fa_balatarin.png
new file mode 100644
index 0000000..3e03ff6
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_fa_balatarin.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_fa_donbaleh.png b/web/sites/all/modules/contrib/service_links/images/_fa_donbaleh.png
new file mode 100644
index 0000000..611f42a
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_fa_donbaleh.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_fa_friendfa.png b/web/sites/all/modules/contrib/service_links/images/_fa_friendfa.png
new file mode 100644
index 0000000..28cb8a5
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_fa_friendfa.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_fa_viwio.png b/web/sites/all/modules/contrib/service_links/images/_fa_viwio.png
new file mode 100644
index 0000000..04afe2e
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_fa_viwio.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_hu_iwiw.png b/web/sites/all/modules/contrib/service_links/images/_hu_iwiw.png
new file mode 100644
index 0000000..1314091
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_hu_iwiw.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_it_diggita.png b/web/sites/all/modules/contrib/service_links/images/_it_diggita.png
new file mode 100644
index 0000000..eab0dd5
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_diggita.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_it_meemi.png b/web/sites/all/modules/contrib/service_links/images/_it_meemi.png
new file mode 100644
index 0000000..d5406df
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_meemi.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_it_oknotizie.png b/web/sites/all/modules/contrib/service_links/images/_it_oknotizie.png
new file mode 100644
index 0000000..8d4cfe1
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_oknotizie.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_it_segnalo.png b/web/sites/all/modules/contrib/service_links/images/_it_segnalo.png
new file mode 100644
index 0000000..a12be6a
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_segnalo.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_it_technotizie.png b/web/sites/all/modules/contrib/service_links/images/_it_technotizie.png
new file mode 100644
index 0000000..f50b19c
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_technotizie.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_it_wikio.png b/web/sites/all/modules/contrib/service_links/images/_it_wikio.png
new file mode 100644
index 0000000..14e4e5c
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_wikio.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_it_ziczac.png b/web/sites/all/modules/contrib/service_links/images/_it_ziczac.png
new file mode 100644
index 0000000..7c5bca7
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_it_ziczac.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_nl_ekudos.png b/web/sites/all/modules/contrib/service_links/images/_nl_ekudos.png
new file mode 100644
index 0000000..95ea494
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_nl_ekudos.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_nl_hyves.png b/web/sites/all/modules/contrib/service_links/images/_nl_hyves.png
new file mode 100644
index 0000000..d02bc88
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_nl_hyves.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_nl_nujij.png b/web/sites/all/modules/contrib/service_links/images/_nl_nujij.png
new file mode 100644
index 0000000..2985542
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_nl_nujij.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_pl_blip.png b/web/sites/all/modules/contrib/service_links/images/_pl_blip.png
new file mode 100644
index 0000000..f6ff1f3
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_pl_blip.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_pl_sledzik.png b/web/sites/all/modules/contrib/service_links/images/_pl_sledzik.png
new file mode 100644
index 0000000..d5df104
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_pl_sledzik.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_pl_wykop.png b/web/sites/all/modules/contrib/service_links/images/_pl_wykop.png
new file mode 100644
index 0000000..e9cb4a7
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_pl_wykop.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_100zakladok.png b/web/sites/all/modules/contrib/service_links/images/_ru_100zakladok.png
new file mode 100644
index 0000000..b8b45a4
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_100zakladok.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_bobrdobr.png b/web/sites/all/modules/contrib/service_links/images/_ru_bobrdobr.png
new file mode 100644
index 0000000..6bac123
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_bobrdobr.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_communizm.png b/web/sites/all/modules/contrib/service_links/images/_ru_communizm.png
new file mode 100644
index 0000000..a190e05
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_communizm.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_linksiua.png b/web/sites/all/modules/contrib/service_links/images/_ru_linksiua.png
new file mode 100644
index 0000000..56b4899
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_linksiua.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_linkstore.png b/web/sites/all/modules/contrib/service_links/images/_ru_linkstore.png
new file mode 100644
index 0000000..b467d1a
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_linkstore.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_lopas.png b/web/sites/all/modules/contrib/service_links/images/_ru_lopas.png
new file mode 100644
index 0000000..bbb57d1
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_lopas.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_memori.png b/web/sites/all/modules/contrib/service_links/images/_ru_memori.png
new file mode 100644
index 0000000..c61d283
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_memori.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_moemesto.png b/web/sites/all/modules/contrib/service_links/images/_ru_moemesto.png
new file mode 100644
index 0000000..63caf74
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_moemesto.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_myscoop.png b/web/sites/all/modules/contrib/service_links/images/_ru_myscoop.png
new file mode 100644
index 0000000..011b539
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_myscoop.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_news2.png b/web/sites/all/modules/contrib/service_links/images/_ru_news2.png
new file mode 100644
index 0000000..1eab15d
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_news2.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_newsland.png b/web/sites/all/modules/contrib/service_links/images/_ru_newsland.png
new file mode 100644
index 0000000..37b4277
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_newsland.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_ruspace.png b/web/sites/all/modules/contrib/service_links/images/_ru_ruspace.png
new file mode 100644
index 0000000..cfaa6de
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_ruspace.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_smi2.png b/web/sites/all/modules/contrib/service_links/images/_ru_smi2.png
new file mode 100644
index 0000000..3f39cf8
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_smi2.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_vaau.png b/web/sites/all/modules/contrib/service_links/images/_ru_vaau.png
new file mode 100644
index 0000000..9ca028f
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_vaau.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_vkontakte.png b/web/sites/all/modules/contrib/service_links/images/_ru_vkontakte.png
new file mode 100644
index 0000000..e970bc3
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_vkontakte.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_ru_yandex.png b/web/sites/all/modules/contrib/service_links/images/_ru_yandex.png
new file mode 100644
index 0000000..f983b9e
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_ru_yandex.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_se_bloggy.png b/web/sites/all/modules/contrib/service_links/images/_se_bloggy.png
new file mode 100644
index 0000000..9f3471e
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_se_bloggy.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/_se_pusha.png b/web/sites/all/modules/contrib/service_links/images/_se_pusha.png
new file mode 100644
index 0000000..f743e61
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/_se_pusha.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/blinklist.png b/web/sites/all/modules/contrib/service_links/images/blinklist.png
new file mode 100644
index 0000000..e34f00e
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/blinklist.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/box.png b/web/sites/all/modules/contrib/service_links/images/box.png
new file mode 100644
index 0000000..6509cc4
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/box.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/delicious.png b/web/sites/all/modules/contrib/service_links/images/delicious.png
new file mode 100644
index 0000000..fe891ee
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/delicious.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/digg.png b/web/sites/all/modules/contrib/service_links/images/digg.png
new file mode 100644
index 0000000..4627f83
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/digg.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/diigo.png b/web/sites/all/modules/contrib/service_links/images/diigo.png
new file mode 100644
index 0000000..6578845
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/diigo.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/facebook.png b/web/sites/all/modules/contrib/service_links/images/facebook.png
new file mode 100644
index 0000000..49dfb91
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/facebook.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/favorite.png b/web/sites/all/modules/contrib/service_links/images/favorite.png
new file mode 100644
index 0000000..41387cd
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/favorite.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/forward.png b/web/sites/all/modules/contrib/service_links/images/forward.png
new file mode 100644
index 0000000..ed44b75
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/forward.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/furl.png b/web/sites/all/modules/contrib/service_links/images/furl.png
new file mode 100644
index 0000000..ce7d90f
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/furl.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/google.png b/web/sites/all/modules/contrib/service_links/images/google.png
new file mode 100644
index 0000000..ee484e4
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/google.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/google_plus.png b/web/sites/all/modules/contrib/service_links/images/google_plus.png
new file mode 100644
index 0000000..200c8f7
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/google_plus.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/google_plus_one.png b/web/sites/all/modules/contrib/service_links/images/google_plus_one.png
new file mode 100644
index 0000000..56a65a9
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/google_plus_one.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/icerocket.png b/web/sites/all/modules/contrib/service_links/images/icerocket.png
new file mode 100644
index 0000000..7a83eb7
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/icerocket.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/identica.png b/web/sites/all/modules/contrib/service_links/images/identica.png
new file mode 100644
index 0000000..a587fc8
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/identica.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/linkedin.png b/web/sites/all/modules/contrib/service_links/images/linkedin.png
new file mode 100644
index 0000000..aac1182
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/linkedin.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/misterwong.png b/web/sites/all/modules/contrib/service_links/images/misterwong.png
new file mode 100644
index 0000000..6ade4b9
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/misterwong.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/mixx.png b/web/sites/all/modules/contrib/service_links/images/mixx.png
new file mode 100644
index 0000000..1bcbca2
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/mixx.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/myspace.png b/web/sites/all/modules/contrib/service_links/images/myspace.png
new file mode 100644
index 0000000..0055aa7
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/myspace.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/newskicks.png b/web/sites/all/modules/contrib/service_links/images/newskicks.png
new file mode 100644
index 0000000..564ba77
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/newskicks.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/newsvine.png b/web/sites/all/modules/contrib/service_links/images/newsvine.png
new file mode 100644
index 0000000..bdbc1e7
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/newsvine.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/pingthis.png b/web/sites/all/modules/contrib/service_links/images/pingthis.png
new file mode 100644
index 0000000..57e02b7
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/pingthis.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/pinterest.png b/web/sites/all/modules/contrib/service_links/images/pinterest.png
new file mode 100644
index 0000000..61e546a
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/pinterest.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/print.png b/web/sites/all/modules/contrib/service_links/images/print.png
new file mode 100644
index 0000000..96b47ff
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/print.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/printmail.png b/web/sites/all/modules/contrib/service_links/images/printmail.png
new file mode 100644
index 0000000..4d1ea80
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/printmail.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/printpdf.png b/web/sites/all/modules/contrib/service_links/images/printpdf.png
new file mode 100644
index 0000000..1e04554
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/printpdf.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/reddit.png b/web/sites/all/modules/contrib/service_links/images/reddit.png
new file mode 100644
index 0000000..9a158b8
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/reddit.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/slashdot.png b/web/sites/all/modules/contrib/service_links/images/slashdot.png
new file mode 100644
index 0000000..b0541e7
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/slashdot.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/stumbleit.png b/web/sites/all/modules/contrib/service_links/images/stumbleit.png
new file mode 100644
index 0000000..dc11bd6
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/stumbleit.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/technorati.png b/web/sites/all/modules/contrib/service_links/images/technorati.png
new file mode 100644
index 0000000..200ebbf
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/technorati.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/twitter.png b/web/sites/all/modules/contrib/service_links/images/twitter.png
new file mode 100644
index 0000000..84704eb
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/twitter.png differ
diff --git a/web/sites/all/modules/contrib/service_links/images/yahoo.png b/web/sites/all/modules/contrib/service_links/images/yahoo.png
new file mode 100644
index 0000000..c699d85
Binary files /dev/null and b/web/sites/all/modules/contrib/service_links/images/yahoo.png differ
diff --git a/web/sites/all/modules/contrib/service_links/js/facebook_like.js b/web/sites/all/modules/contrib/service_links/js/facebook_like.js
new file mode 100644
index 0000000..c9bcf56
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/js/facebook_like.js
@@ -0,0 +1,25 @@
+(function ($) {
+ Drupal.behaviors.ws_fl = {
+ attach: function (context, settings) {
+ $('a.service-links-facebook-like', context).each(function(){
+ var iframe = document.createElement('iframe');
+
+ iframe.src = $(this).attr('href').replace('http://', '//').replace(/http[s]*\%3A\/\//, '');
+ iframe.setAttribute('scrolling', 'no');
+ iframe.setAttribute('frameborder', 0);
+ iframe.setAttribute('allowTransparency', 'true');
+
+ $(iframe).css({
+ 'border': 'none',
+ 'overflow': 'hidden',
+ 'width': Drupal.settings.ws_fl.width + 'px',
+ 'height': Drupal.settings.ws_fl.height + 'px',
+ });
+
+ $(iframe).addClass($(this).attr('class'));
+
+ $(this).replaceWith(iframe);
+ });
+ }
+ }
+})(jQuery);
diff --git a/web/sites/all/modules/contrib/service_links/js/facebook_share.js b/web/sites/all/modules/contrib/service_links/js/facebook_share.js
new file mode 100644
index 0000000..112baa6
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/js/facebook_share.js
@@ -0,0 +1,42 @@
+(function ($) {
+ Drupal.behaviors.ws_fs = {
+ scriptadded: false,
+
+ attach: function (context, settings) {
+ if (!this.scriptadded) {
+ var fdiv_root, js, div_root ;
+ var fjs = document.getElementsByTagName('script')[0];
+
+ if (!document.getElementById('fb-root')) {
+ div_root = document.createElement('div');
+ div_root.id = 'fb-root';
+ document.body.appendChild(div_root);
+ }
+
+ if (!document.getElementById('facebook-jssdk')) {
+ js = document.createElement('script');
+ js.id = 'facebook-jssdk';
+ js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=" + Drupal.settings.ws_fs.app_id;
+ fjs.parentNode.insertBefore(js, fjs);
+ this.scriptadded = true;
+ }
+ }
+
+ $('a.service-links-facebook-share', context).once(function(){
+ var f_text = document.createElement('fb:share-button');
+ var css = Drupal.settings.ws_fs.css.split(';');
+ var key_value = new Array();
+
+ f_text.setAttribute('type', Drupal.settings.ws_fs.type);
+ f_text.setAttribute('href', $(this).attr('rel'));
+
+ for (i = 0; i < css.length; i++){
+ key_value = css[i].split(':');
+ $(f_text).css(key_value[0], key_value[1]);
+ }
+
+ $(this).replaceWith(f_text);
+ });
+ }
+ }
+})(jQuery);
diff --git a/web/sites/all/modules/contrib/service_links/js/favorite_services.js b/web/sites/all/modules/contrib/service_links/js/favorite_services.js
new file mode 100644
index 0000000..9e61397
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/js/favorite_services.js
@@ -0,0 +1,40 @@
+(function ($) {
+ Drupal.behaviors.sl_fs = {
+ attach: function(context, settings) {
+ var $favorites = $("a.service-links-favorite", context).once('service-links-favorite');
+ var message = '';
+
+ $favorites.show();
+ if (window.chrome) {
+ message= Drupal.t('Use CTRL + D to add this to your bookmarks');
+ } else if (window.opera && window.print) {
+ $favorites.each(function(){
+ var url = $(this).attr('href').split('&favtitle=');
+ var title = decodeURI(url[1]);
+ url = url[0];
+ $(this).attr('rel', 'sidebar').attr('href', url).attr('title', title);
+ });
+ } else if (window.sidebar || window.external) {
+ $favorites.click(function(event){
+ event.preventDefault();
+ var url = $(this).attr('href').split('&favtitle=');
+ var title = decodeURI(url[1]);
+ url = url[0];
+ if (window.sidebar) {
+ window.sidebar.addPanel(title, url, '');
+ } else if (window.external) {
+ window.external.AddFavorite(url, title);
+ }
+ });
+ } else {
+ message = Drupal.t('Please use your browser to bookmark this page.');
+ }
+ if (message) {
+ $favorites.click(function(event){
+ event.preventDefault();
+ alert(message);
+ });
+ }
+ }
+ }
+})(jQuery);
diff --git a/web/sites/all/modules/contrib/service_links/js/google_plus_one.js b/web/sites/all/modules/contrib/service_links/js/google_plus_one.js
new file mode 100644
index 0000000..13a7b29
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/js/google_plus_one.js
@@ -0,0 +1,48 @@
+(function ($) {
+ Drupal.behaviors.ws_gpo = {
+ scriptadded: false,
+
+ attach: function (context, settings) {
+ $('a.service-links-google-plus-one', context).once(function(){
+ var g_text = document.createElement('g:plusone');
+
+ g_text.setAttribute('href', $(this).attr('href'));
+ g_text.setAttribute('width', Drupal.settings.ws_gpo.width);
+
+ if (Drupal.settings.ws_gpo.size != '') {
+ g_text.setAttribute('size', Drupal.settings.ws_gpo.size);
+ }
+ if (Drupal.settings.ws_gpo.annotation != '') {
+ g_text.setAttribute('annotation', Drupal.settings.ws_gpo.annotation);
+ }
+ if (Drupal.settings.ws_gpo.callback) {
+ g_text.setAttribute('callback', Drupal.settings.ws_gpo.callback);
+ }
+
+ $(this).replaceWith(g_text);
+ });
+
+ if (this.scriptadded) {
+ gapi.plusone.go();
+ } else {
+ var params = { parsetags: "explicit" };
+
+ if (Drupal.settings.ws_gpo.lang != '') {
+ params.lang = Drupal.settings.ws_gpo.lang;
+ }
+
+ window.___gcfg = params
+
+ $.ajax({
+ url: "https://apis.google.com/js/plusone.js",
+ dataType: "script",
+ cache: true,
+ success: function () {
+ this.scriptadded = true;
+ gapi.plusone.go();
+ }
+ });
+ }
+ }
+ }
+})(jQuery);
diff --git a/web/sites/all/modules/contrib/service_links/js/interface.js b/web/sites/all/modules/contrib/service_links/js/interface.js
new file mode 100644
index 0000000..bcb2855
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/js/interface.js
@@ -0,0 +1,12 @@
+/**
+ * Interface Elements for jQuery
+ *
+ * http://interface.eyecon.ro
+ *
+ * Copyright (c) 2006 Stefan Petre
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ *
+ */
+ eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('k.f2={2r:u(M){E q.1E(u(){if(!M.aR||!M.aZ)E;D el=q;el.2l={aq:M.aq||cO,aR:M.aR,aZ:M.aZ,8e:M.8e||\'fV\',aJ:M.aJ||\'fV\',2Y:M.2Y&&2g M.2Y==\'u\'?M.2Y:I,3i:M.2Y&&2g M.3i==\'u\'?M.3i:I,7U:M.7U&&2g M.7U==\'u\'?M.7U:I,as:k(M.aR,q),8f:k(M.aZ,q),H:M.H||8J,67:M.67||0};el.2l.8f.2G().B(\'W\',\'9R\').eq(0).B({W:el.2l.aq+\'U\',19:\'2B\'}).2T();el.2l.as.1E(u(2N){q.7X=2N}).gC(u(){k(q).2R(el.2l.aJ)},u(){k(q).4i(el.2l.aJ)}).1J(\'5h\',u(e){if(el.2l.67==q.7X)E;el.2l.as.eq(el.2l.67).4i(el.2l.8e).2T().eq(q.7X).2R(el.2l.8e).2T();el.2l.8f.eq(el.2l.67).5w({W:0},el.2l.H,u(){q.14.19=\'1o\';if(el.2l.3i){el.2l.3i.1D(el,[q])}}).2T().eq(q.7X).1Y().5w({W:el.2l.aq},el.2l.H,u(){q.14.19=\'2B\';if(el.2l.2Y){el.2l.2Y.1D(el,[q])}}).2T();if(el.2l.7U){el.2l.7U.1D(el,[q,el.2l.8f.K(q.7X),el.2l.as.K(el.2l.67),el.2l.8f.K(el.2l.67)])}el.2l.67=q.7X}).eq(0).2R(el.2l.8e).2T();k(q).B(\'W\',k(q).B(\'W\')).B(\'2U\',\'2K\')})}};k.fn.gN=k.f2.2r;k.aA={2r:u(M){E q.1E(u(){D el=q;D 7E=2*18.2Q/f1;D an=2*18.2Q;if(k(el).B(\'Y\')!=\'2s\'&&k(el).B(\'Y\')!=\'1P\'){k(el).B(\'Y\',\'2s\')}el.1l={1R:k(M.1R,q),2F:M.2F,6q:M.6q,aD:M.aD,an:an,1N:k.1a.2o(q),Y:k.1a.3w(q),26:18.2Q/2,bi:M.bi,8p:M.6r,6r:[],aG:I,7E:2*18.2Q/f1};el.1l.fB=(el.1l.1N.w-el.1l.2F)/2;el.1l.7D=(el.1l.1N.h-el.1l.6q-el.1l.6q*el.1l.8p)/2;el.1l.2D=2*18.2Q/el.1l.1R.1N();el.1l.ba=el.1l.1N.w/2;el.1l.b9=el.1l.1N.h/2-el.1l.6q*el.1l.8p;D ak=1h.3F(\'22\');k(ak).B({Y:\'1P\',3I:1,Q:0,O:0});k(el).1S(ak);el.1l.1R.1E(u(2N){a6=k(\'1T\',q).K(0);W=T(el.1l.6q*el.1l.8p);if(k.3a.4t){3E=1h.3F(\'1T\');k(3E).B(\'Y\',\'1P\');3E.2J=a6.2J;3E.14.5E=\'gE 9n:9w.9y.cC(1G=60, 14=1, gB=0, gA=0, gv=0, gF=0)\'}P{3E=1h.3F(\'3E\');if(3E.fD){4L=3E.fD("2d");3E.14.Y=\'1P\';3E.14.W=W+\'U\';3E.14.Z=el.1l.2F+\'U\';3E.W=W;3E.Z=el.1l.2F;4L.gu();4L.gO(0,W);4L.gk(1,-1);4L.gp(a6,0,0,el.1l.2F,W);4L.6H();4L.gm="gG-4l";D ap=4L.hy(0,0,0,W);ap.fs(1,"fr(1V, 1V, 1V, 1)");ap.fs(0,"fr(1V, 1V, 1V, 0.6)");4L.hx=ap;if(hA.hB.3J(\'hw\')!=-1){4L.hv()}P{4L.hu(0,0,el.1l.2F,W)}}}el.1l.6r[2N]=3E;k(ak).1S(3E)}).1J(\'9z\',u(e){el.1l.aG=1b;el.1l.H=el.1l.7E*0.1*el.1l.H/18.3S(el.1l.H);E I}).1J(\'8B\',u(e){el.1l.aG=I;E I});k.aA.7T(el);el.1l.H=el.1l.7E*0.2;el.1l.ht=1X.6V(u(){el.1l.26+=el.1l.H;if(el.1l.26>an)el.1l.26=0;k.aA.7T(el)},20);k(el).1J(\'8B\',u(){el.1l.H=el.1l.7E*0.2*el.1l.H/18.3S(el.1l.H)}).1J(\'3D\',u(e){if(el.1l.aG==I){1s=k.1a.4a(e);fz=el.1l.1N.w-1s.x+el.1l.Y.x;el.1l.H=el.1l.bi*el.1l.7E*(el.1l.1N.w/2-fz)/(el.1l.1N.w/2)}})})},7T:u(el){el.1l.1R.1E(u(2N){b8=el.1l.26+2N*el.1l.2D;x=el.1l.fB*18.5H(b8);y=el.1l.7D*18.83(b8);f9=T(2a*(el.1l.7D+y)/(2*el.1l.7D));fk=(el.1l.7D+y)/(2*el.1l.7D);Z=T((el.1l.2F-el.1l.aD)*fk+el.1l.aD);W=T(Z*el.1l.6q/el.1l.2F);q.14.Q=el.1l.b9+y-W/2+"U";q.14.O=el.1l.ba+x-Z/2+"U";q.14.Z=Z+"U";q.14.W=W+"U";q.14.3I=f9;el.1l.6r[2N].14.Q=T(el.1l.b9+y+W-1-W/2)+"U";el.1l.6r[2N].14.O=T(el.1l.ba+x-Z/2)+"U";el.1l.6r[2N].14.Z=Z+"U";el.1l.6r[2N].14.W=T(W*el.1l.8p)+"U"})}};k.fn.hI=k.aA.2r;k.23({G:{c8:u(p,n,1W,1H,1m){E((-18.5H(p*18.2Q)/2)+0.5)*1H+1W},hK:u(p,n,1W,1H,1m){E 1H*(n/=1m)*n*n+1W},fl:u(p,n,1W,1H,1m){E-1H*((n=n/1m-1)*n*n*n-1)+1W},hm:u(p,n,1W,1H,1m){if((n/=1m/2)<1)E 1H/2*n*n*n*n+1W;E-1H/2*((n-=2)*n*n*n-2)+1W},8l:u(p,n,1W,1H,1m){if((n/=1m)<(1/2.75)){E 1H*(7.aB*n*n)+1W}P if(n<(2/2.75)){E 1H*(7.aB*(n-=(1.5/2.75))*n+.75)+1W}P if(n<(2.5/2.75)){E 1H*(7.aB*(n-=(2.25/2.75))*n+.gY)+1W}P{E 1H*(7.aB*(n-=(2.h2/2.75))*n+.gX)+1W}},cr:u(p,n,1W,1H,1m){if(k.G.8l)E 1H-k.G.8l(p,1m-n,0,1H,1m)+1W;E 1W+1H},gW:u(p,n,1W,1H,1m){if(k.G.cr&&k.G.8l)if(n<1m/2)E k.G.cr(p,n*2,0,1H,1m)*.5+1W;E k.G.8l(p,n*2-1m,0,1H,1m)*.5+1H*.5+1W;E 1W+1H},gQ:u(p,n,1W,1H,1m){D a,s;if(n==0)E 1W;if((n/=1m)==1)E 1W+1H;a=1H*0.3;p=1m*.3;if(a<18.3S(1H)){a=1H;s=p/4}P{s=p/(2*18.2Q)*18.cb(1H/a)}E-(a*18.6b(2,10*(n-=1))*18.83((n*1m-s)*(2*18.2Q)/p))+1W},gT:u(p,n,1W,1H,1m){D a,s;if(n==0)E 1W;if((n/=1m/2)==2)E 1W+1H;a=1H*0.3;p=1m*.3;if(a<18.3S(1H)){a=1H;s=p/4}P{s=p/(2*18.2Q)*18.cb(1H/a)}E a*18.6b(2,-10*n)*18.83((n*1m-s)*(2*18.2Q)/p)+1H+1W},gV:u(p,n,1W,1H,1m){D a,s;if(n==0)E 1W;if((n/=1m/2)==2)E 1W+1H;a=1H*0.3;p=1m*.3;if(a<18.3S(1H)){a=1H;s=p/4}P{s=p/(2*18.2Q)*18.cb(1H/a)}if(n<1){E-.5*(a*18.6b(2,10*(n-=1))*18.83((n*1m-s)*(2*18.2Q)/p))+1W}E a*18.6b(2,-10*(n-=1))*18.83((n*1m-s)*(2*18.2Q)/p)*.5+1H+1W}}});k.6n={2r:u(M){E q.1E(u(){D el=q;el.1F={1R:k(M.1R,q),1Z:k(M.1Z,q),1M:k.1a.3w(q),2F:M.2F,ax:M.ax,7Y:M.7Y,ge:M.ge,51:M.51,6x:M.6x};k.6n.aH(el,0);k(1X).1J(\'gU\',u(){el.1F.1M=k.1a.3w(el);k.6n.aH(el,0);k.6n.7T(el)});k.6n.7T(el);el.1F.1R.1J(\'9z\',u(){k(el.1F.ax,q).K(0).14.19=\'2B\'}).1J(\'8B\',u(){k(el.1F.ax,q).K(0).14.19=\'1o\'});k(1h).1J(\'3D\',u(e){D 1s=k.1a.4a(e);D 5s=0;if(el.1F.51&&el.1F.51==\'cv\')D aI=1s.x-el.1F.1M.x-(el.4c-el.1F.2F*el.1F.1R.1N())/2-el.1F.2F/2;P if(el.1F.51&&el.1F.51==\'2L\')D aI=1s.x-el.1F.1M.x-el.4c+el.1F.2F*el.1F.1R.1N();P D aI=1s.x-el.1F.1M.x;D fP=18.6b(1s.y-el.1F.1M.y-el.5W/2,2);el.1F.1R.1E(u(2N){45=18.ez(18.6b(aI-2N*el.1F.2F,2)+fP);45-=el.1F.2F/2;45=45<0?0:45;45=45>el.1F.7Y?el.1F.7Y:45;45=el.1F.7Y-45;bB=el.1F.6x*45/el.1F.7Y;q.14.Z=el.1F.2F+bB+\'U\';q.14.O=el.1F.2F*2N+5s+\'U\';5s+=bB});k.6n.aH(el,5s)})})},aH:u(el,5s){if(el.1F.51)if(el.1F.51==\'cv\')el.1F.1Z.K(0).14.O=(el.4c-el.1F.2F*el.1F.1R.1N())/2-5s/2+\'U\';P if(el.1F.51==\'O\')el.1F.1Z.K(0).14.O=-5s/el.1F.1R.1N()+\'U\';P if(el.1F.51==\'2L\')el.1F.1Z.K(0).14.O=(el.4c-el.1F.2F*el.1F.1R.1N())-5s/2+\'U\';el.1F.1Z.K(0).14.Z=el.1F.2F*el.1F.1R.1N()+5s+\'U\'},7T:u(el){el.1F.1R.1E(u(2N){q.14.Z=el.1F.2F+\'U\';q.14.O=el.1F.2F*2N+\'U\'})}};k.fn.hi=k.6n.2r;k.N={1c:S,8R:S,3A:S,2I:S,4y:S,cl:S,1d:S,2h:S,1R:S,5o:u(){k.N.8R.5o();if(k.N.3A){k.N.3A.2G()}},4w:u(){k.N.1R=S;k.N.2h=S;k.N.4y=k.N.1d.2y;if(k.N.1c.B(\'19\')==\'2B\'){if(k.N.1d.1f.fx){3m(k.N.1d.1f.fx.1u){1e\'c6\':k.N.1c.7a(k.N.1d.1f.fx.1m,k.N.5o);1r;1e\'1z\':k.N.1c.fq(k.N.1d.1f.fx.1m,k.N.5o);1r;1e\'a7\':k.N.1c.g3(k.N.1d.1f.fx.1m,k.N.5o);1r}}P{k.N.1c.2G()}if(k.N.1d.1f.3i)k.N.1d.1f.3i.1D(k.N.1d,[k.N.1c,k.N.3A])}P{k.N.5o()}1X.bH(k.N.2I)},dQ:u(){D 1d=k.N.1d;D 4d=k.N.aY(1d);if(1d&&4d.3o!=k.N.4y&&4d.3o.1g>=1d.1f.aL){k.N.4y=4d.3o;k.N.cl=4d.3o;81={2n:k(1d).1p(\'hj\')||\'2n\',2y:4d.3o};k.hl({1u:\'hk\',81:k.hf(81),he:u(fZ){1d.1f.4e=k(\'3o\',fZ);1N=1d.1f.4e.1N();if(1N>0){D 5p=\'\';1d.1f.4e.1E(u(2N){5p+=\'<8P 4I="\'+k(\'2y\',q).3g()+\'" 8K="\'+2N+\'" 14="9b: ad;">\'+k(\'3g\',q).3g()+\'8P>\'});if(1d.1f.aU){D 3M=k(\'2y\',1d.1f.4e.K(0)).3g();1d.2y=4d.3j+3M+1d.1f.3N+4d.66;k.N.6J(1d,4d.3o.1g!=3M.1g?(4d.3j.1g+4d.3o.1g):3M.1g,4d.3o.1g!=3M.1g?(4d.3j.1g+3M.1g):3M.1g)}if(1N>0){k.N.cj(1d,5p)}P{k.N.4w()}}P{k.N.4w()}},5N:1d.1f.aN})}},cj:u(1d,5p){k.N.8R.3x(5p);k.N.1R=k(\'8P\',k.N.8R.K(0));k.N.1R.9z(k.N.di).1J(\'5h\',k.N.dj);D Y=k.1a.3w(1d);D 1N=k.1a.2o(1d);k.N.1c.B(\'Q\',Y.y+1N.hb+\'U\').B(\'O\',Y.x+\'U\').2R(1d.1f.aM);if(k.N.3A){k.N.3A.B(\'19\',\'2B\').B(\'Q\',Y.y+1N.hb+\'U\').B(\'O\',Y.x+\'U\').B(\'Z\',k.N.1c.B(\'Z\')).B(\'W\',k.N.1c.B(\'W\'))}k.N.2h=0;k.N.1R.K(0).3l=1d.1f.7H;k.N.8Q(1d,1d.1f.4e.K(0),\'7J\');if(k.N.1c.B(\'19\')==\'1o\'){if(1d.1f.bV){D cp=k.1a.aT(1d,1b);D cm=k.1a.6U(1d,1b);k.N.1c.B(\'Z\',1d.4c-(k.dF?(cp.l+cp.r+cm.l+cm.r):0)+\'U\')}if(1d.1f.fx){3m(1d.1f.fx.1u){1e\'c6\':k.N.1c.7f(1d.1f.fx.1m);1r;1e\'1z\':k.N.1c.fo(1d.1f.fx.1m);1r;1e\'a7\':k.N.1c.gb(1d.1f.fx.1m);1r}}P{k.N.1c.1Y()}if(k.N.1d.1f.2Y)k.N.1d.1f.2Y.1D(k.N.1d,[k.N.1c,k.N.3A])}},dO:u(){D 1d=q;if(1d.1f.4e){k.N.4y=1d.2y;k.N.cl=1d.2y;D 5p=\'\';1d.1f.4e.1E(u(2N){2y=k(\'2y\',q).3g().6c();fY=1d.2y.6c();if(2y.3J(fY)==0){5p+=\'<8P 4I="\'+k(\'2y\',q).3g()+\'" 8K="\'+2N+\'" 14="9b: ad;">\'+k(\'3g\',q).3g()+\'8P>\'}});if(5p!=\'\'){k.N.cj(1d,5p);q.1f.9x=1b;E}}1d.1f.4e=S;q.1f.9x=I},6J:u(2n,26,2T){if(2n.b1){D 6t=2n.b1();6t.hp(1b);6t.dI("ck",26);6t.ha("ck",-2T+26);6t.8C()}P if(2n.aF){2n.aF(26,2T)}P{if(2n.5q){2n.5q=26;2n.dN=2T}}2n.6K()},f0:u(2n){if(2n.5q)E 2n.5q;P if(2n.b1){D 6t=1h.6J.dZ();D eX=6t.h9();E 0-eX.dI(\'ck\',-h6)}},aY:u(2n){D 4P={2y:2n.2y,3j:\'\',66:\'\',3o:\'\'};if(2n.1f.aQ){D 8N=I;D 5q=k.N.f0(2n)||0;D 4T=4P.2y.7C(2n.1f.3N);24(D i=0;i<4T.1g;i++){if((4P.3j.1g+4T[i].1g>=5q||5q==0)&&!8N){if(4P.3j.1g<=5q)4P.3o=4T[i];P 4P.66+=4T[i]+(4T[i]!=\'\'?2n.1f.3N:\'\');8N=1b}P if(8N){4P.66+=4T[i]+(4T[i]!=\'\'?2n.1f.3N:\'\')}if(!8N){4P.3j+=4T[i]+(4T.1g>1?2n.1f.3N:\'\')}}}P{4P.3o=4P.2y}E 4P},bU:u(e){1X.bH(k.N.2I);D 1d=k.N.aY(q);D 3K=e.7L||e.7K||-1;if(/13|27|35|36|38|40|9/.48(3K)&&k.N.1R){if(1X.2k){1X.2k.bT=1b;1X.2k.c0=I}P{e.aP();e.aW()}if(k.N.2h!=S)k.N.1R.K(k.N.2h||0).3l=\'\';P k.N.2h=-1;3m(3K){1e 9:1e 13:if(k.N.2h==-1)k.N.2h=0;D 2h=k.N.1R.K(k.N.2h||0);D 3M=2h.5C(\'4I\');q.2y=1d.3j+3M+q.1f.3N+1d.66;k.N.4y=1d.3o;k.N.6J(q,1d.3j.1g+3M.1g+q.1f.3N.1g,1d.3j.1g+3M.1g+q.1f.3N.1g);k.N.4w();if(q.1f.68){4u=T(2h.5C(\'8K\'))||0;k.N.8Q(q,q.1f.4e.K(4u),\'68\')}if(q.7W)q.7W(I);E 3K!=13;1r;1e 27:q.2y=1d.3j+k.N.4y+q.1f.3N+1d.66;q.1f.4e=S;k.N.4w();if(q.7W)q.7W(I);E I;1r;1e 35:k.N.2h=k.N.1R.1N()-1;1r;1e 36:k.N.2h=0;1r;1e 38:k.N.2h--;if(k.N.2h<0)k.N.2h=k.N.1R.1N()-1;1r;1e 40:k.N.2h++;if(k.N.2h==k.N.1R.1N())k.N.2h=0;1r}k.N.8Q(q,q.1f.4e.K(k.N.2h||0),\'7J\');k.N.1R.K(k.N.2h||0).3l=q.1f.7H;if(k.N.1R.K(k.N.2h||0).7W)k.N.1R.K(k.N.2h||0).7W(I);if(q.1f.aU){D aK=k.N.1R.K(k.N.2h||0).5C(\'4I\');q.2y=1d.3j+aK+q.1f.3N+1d.66;if(k.N.4y.1g!=aK.1g)k.N.6J(q,1d.3j.1g+k.N.4y.1g,1d.3j.1g+aK.1g)}E I}k.N.dO.1D(q);if(q.1f.9x==I){if(1d.3o!=k.N.4y&&1d.3o.1g>=q.1f.aL)k.N.2I=1X.9T(k.N.dQ,q.1f.54);if(k.N.1R){k.N.4w()}}E 1b},8Q:u(2n,3o,1u){if(2n.1f[1u]){D 81={};ar=3o.f3(\'*\');24(i=0;i3A>\');k.N.3A=k(\'#ds\')}k(\'2e\',1h).1S(\'<22 id="dr" 14="Y: 1P; Q: 0; O: 0; z-cZ: h3; 19: 1o;"><9h 14="6w: 0;8F: 0; h1-14: 1o; z-cZ: h0;">&7k;9h>22>\');k.N.1c=k(\'#dr\');k.N.8R=k(\'9h\',k.N.1c)}E q.1E(u(){if(q.4Y!=\'ch\'&&q.5C(\'1u\')!=\'3g\')E;q.1f={};q.1f.aN=M.aN;q.1f.aL=18.3S(T(M.aL)||1);q.1f.aM=M.aM?M.aM:\'\';q.1f.7H=M.7H?M.7H:\'\';q.1f.68=M.68&&M.68.1K==2A?M.68:S;q.1f.2Y=M.2Y&&M.2Y.1K==2A?M.2Y:S;q.1f.3i=M.3i&&M.3i.1K==2A?M.3i:S;q.1f.7J=M.7J&&M.7J.1K==2A?M.7J:S;q.1f.bV=M.bV||I;q.1f.aQ=M.aQ||I;q.1f.3N=q.1f.aQ?(M.3N||\', \'):\'\';q.1f.aU=M.aU?1b:I;q.1f.54=18.3S(T(M.54)||aC);if(M.fx&&M.fx.1K==7M){if(!M.fx.1u||!/c6|1z|a7/.48(M.fx.1u)){M.fx.1u=\'1z\'}if(M.fx.1u==\'1z\'&&!k.fx.1z)E;if(M.fx.1u==\'a7\'&&!k.fx.61)E;M.fx.1m=18.3S(T(M.fx.1m)||8J);if(M.fx.1m>q.1f.54){M.fx.1m=q.1f.54-2a}q.1f.fx=M.fx}q.1f.4e=S;q.1f.9x=I;k(q).1p(\'bU\',\'eN\').6K(u(){k.N.1d=q;k.N.4y=q.2y}).dH(k.N.eJ).6y(k.N.bU).5B(u(){k.N.2I=1X.9T(k.N.4w,hM)})})}};k.fn.hR=k.N.2r;k.1y={2I:S,4Q:S,29:S,2D:10,26:u(el,4J,2D,eG){k.1y.4Q=el;k.1y.29=4J;k.1y.2D=T(2D)||10;k.1y.2I=1X.6V(k.1y.eF,T(eG)||40)},eF:u(){24(i=0;i0&&k.1y.29[i].2X.y+k.1y.29[i].2X.t>69.y){k.1y.29[i].3d-=k.1y.2D}P if(k.1y.29[i].2X.t<=k.1y.29[i].2X.h&&k.1y.29[i].2X.t+k.1y.29[i].2X.hb<69.y+69.hb){k.1y.29[i].3d+=k.1y.2D}if(k.1y.29[i].2X.l>0&&k.1y.29[i].2X.x+k.1y.29[i].2X.l>69.x){k.1y.29[i].3c-=k.1y.2D}P if(k.1y.29[i].2X.l<=k.1y.29[i].2X.hP&&k.1y.29[i].2X.l+k.1y.29[i].2X.1C<69.x+69.1C){k.1y.29[i].3c+=k.1y.2D}}},8o:u(){1X.5T(k.1y.2I);k.1y.4Q=S;k.1y.29=S;24(i in k.1y.29){k.1y.29[i].2X=S}}};k.11={1c:S,F:S,4U:u(){E q.1E(u(){if(q.9I){q.A.5e.3q(\'5v\',k.11.bN);q.A=S;q.9I=I;if(k.3a.4t){q.bE="eN"}P{q.14.hq=\'\';q.14.e1=\'\';q.14.e7=\'\'}}})},bN:u(e){if(k.11.F!=S){k.11.9A(e);E I}D C=q.3U;k(1h).1J(\'3D\',k.11.bX).1J(\'5P\',k.11.9A);C.A.1s=k.1a.4a(e);C.A.4B=C.A.1s;C.A.7q=I;C.A.ho=q!=q.3U;k.11.F=C;if(C.A.5i&&q!=q.3U){bS=k.1a.3w(C.31);bQ=k.1a.2o(C);bR={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};dx=C.A.4B.x-bS.x-bQ.1C/2-bR.x;dy=C.A.4B.y-bS.y-bQ.hb/2-bR.y;k.3b.5c(C,[dx,dy])}E k.7n||I},ea:u(e){D C=k.11.F;C.A.7q=1b;D 9G=C.14;C.A.7V=k.B(C,\'19\');C.A.4n=k.B(C,\'Y\');if(!C.A.cz)C.A.cz=C.A.4n;C.A.2c={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};C.A.9B=0;C.A.ai=0;if(k.3a.4t){D bW=k.1a.6U(C,1b);C.A.9B=bW.l||0;C.A.ai=bW.t||0}C.A.1B=k.23(k.1a.3w(C),k.1a.2o(C));if(C.A.4n!=\'2s\'&&C.A.4n!=\'1P\'){9G.Y=\'2s\'}k.11.1c.5o();D 5g=C.fI(1b);k(5g).B({19:\'2B\',O:\'2P\',Q:\'2P\'});5g.14.5K=\'0\';5g.14.5z=\'0\';5g.14.5k=\'0\';5g.14.5j=\'0\';k.11.1c.1S(5g);D 3Y=k.11.1c.K(0).14;if(C.A.bD){3Y.Z=\'9F\';3Y.W=\'9F\'}P{3Y.W=C.A.1B.hb+\'U\';3Y.Z=C.A.1B.1C+\'U\'}3Y.19=\'2B\';3Y.5K=\'2P\';3Y.5z=\'2P\';3Y.5k=\'2P\';3Y.5j=\'2P\';k.23(C.A.1B,k.1a.2o(5g));if(C.A.2V){if(C.A.2V.O){C.A.2c.x+=C.A.1s.x-C.A.1B.x-C.A.2V.O;C.A.1B.x=C.A.1s.x-C.A.2V.O}if(C.A.2V.Q){C.A.2c.y+=C.A.1s.y-C.A.1B.y-C.A.2V.Q;C.A.1B.y=C.A.1s.y-C.A.2V.Q}if(C.A.2V.2L){C.A.2c.x+=C.A.1s.x-C.A.1B.x-C.A.1B.hb+C.A.2V.2L;C.A.1B.x=C.A.1s.x-C.A.1B.1C+C.A.2V.2L}if(C.A.2V.4D){C.A.2c.y+=C.A.1s.y-C.A.1B.y-C.A.1B.hb+C.A.2V.4D;C.A.1B.y=C.A.1s.y-C.A.1B.hb+C.A.2V.4D}}C.A.2v=C.A.2c.x;C.A.2q=C.A.2c.y;if(C.A.8s||C.A.2p==\'94\'){8U=k.1a.6U(C.31,1b);C.A.1B.x=C.8t+(k.3a.4t?0:k.3a.7I?-8U.l:8U.l);C.A.1B.y=C.8G+(k.3a.4t?0:k.3a.7I?-8U.t:8U.t);k(C.31).1S(k.11.1c.K(0))}if(C.A.2p){k.11.c5(C);C.A.5t.2p=k.11.ce}if(C.A.5i){k.3b.ct(C)}3Y.O=C.A.1B.x-C.A.9B+\'U\';3Y.Q=C.A.1B.y-C.A.ai+\'U\';3Y.Z=C.A.1B.1C+\'U\';3Y.W=C.A.1B.hb+\'U\';k.11.F.A.9E=I;if(C.A.gx){C.A.5t.6a=k.11.c7}if(C.A.3I!=I){k.11.1c.B(\'3I\',C.A.3I)}if(C.A.1G){k.11.1c.B(\'1G\',C.A.1G);if(1X.71){k.11.1c.B(\'5E\',\'8V(1G=\'+C.A.1G*2a+\')\')}}if(C.A.7O){k.11.1c.2R(C.A.7O);k.11.1c.K(0).7c.14.19=\'1o\'}if(C.A.4o)C.A.4o.1D(C,[5g,C.A.2c.x,C.A.2c.y]);if(k.1x&&k.1x.8D>0){k.1x.ed(C)}if(C.A.46==I){9G.19=\'1o\'}E I},c5:u(C){if(C.A.2p.1K==b0){if(C.A.2p==\'94\'){C.A.28=k.23({x:0,y:0},k.1a.2o(C.31));D 8S=k.1a.6U(C.31,1b);C.A.28.w=C.A.28.1C-8S.l-8S.r;C.A.28.h=C.A.28.hb-8S.t-8S.b}P if(C.A.2p==\'1h\'){D bY=k.1a.bm();C.A.28={x:0,y:0,w:bY.w,h:bY.h}}}P if(C.A.2p.1K==7F){C.A.28={x:T(C.A.2p[0])||0,y:T(C.A.2p[1])||0,w:T(C.A.2p[2])||0,h:T(C.A.2p[3])||0}}C.A.28.dx=C.A.28.x-C.A.1B.x;C.A.28.dy=C.A.28.y-C.A.1B.y},9H:u(F){if(F.A.8s||F.A.2p==\'94\'){k(\'2e\',1h).1S(k.11.1c.K(0))}k.11.1c.5o().2G().B(\'1G\',1);if(1X.71){k.11.1c.B(\'5E\',\'8V(1G=2a)\')}},9A:u(e){k(1h).3q(\'3D\',k.11.bX).3q(\'5P\',k.11.9A);if(k.11.F==S){E}D F=k.11.F;k.11.F=S;if(F.A.7q==I){E I}if(F.A.44==1b){k(F).B(\'Y\',F.A.4n)}D 9G=F.14;if(F.5i){k.11.1c.B(\'9b\',\'8j\')}if(F.A.7O){k.11.1c.4i(F.A.7O)}if(F.A.6N==I){if(F.A.fx>0){if(!F.A.1O||F.A.1O==\'4j\'){D x=12 k.fx(F,{1m:F.A.fx},\'O\');x.1L(F.A.2c.x,F.A.8y)}if(!F.A.1O||F.A.1O==\'49\'){D y=12 k.fx(F,{1m:F.A.fx},\'Q\');y.1L(F.A.2c.y,F.A.8v)}}P{if(!F.A.1O||F.A.1O==\'4j\')F.14.O=F.A.8y+\'U\';if(!F.A.1O||F.A.1O==\'49\')F.14.Q=F.A.8v+\'U\'}k.11.9H(F);if(F.A.46==I){k(F).B(\'19\',F.A.7V)}}P if(F.A.fx>0){F.A.9E=1b;D dh=I;if(k.1x&&k.1t&&F.A.44){dh=k.1a.3w(k.1t.1c.K(0))}k.11.1c.5w({O:dh?dh.x:F.A.1B.x,Q:dh?dh.y:F.A.1B.y},F.A.fx,u(){F.A.9E=I;if(F.A.46==I){F.14.19=F.A.7V}k.11.9H(F)})}P{k.11.9H(F);if(F.A.46==I){k(F).B(\'19\',F.A.7V)}}if(k.1x&&k.1x.8D>0){k.1x.eO(F)}if(k.1t&&F.A.44){k.1t.fC(F)}if(F.A.2Z&&(F.A.8y!=F.A.2c.x||F.A.8v!=F.A.2c.y)){F.A.2Z.1D(F,F.A.b3||[0,0,F.A.8y,F.A.8v])}if(F.A.3T)F.A.3T.1D(F);E I},c7:u(x,y,dx,dy){if(dx!=0)dx=T((dx+(q.A.gx*dx/18.3S(dx))/2)/q.A.gx)*q.A.gx;if(dy!=0)dy=T((dy+(q.A.gy*dy/18.3S(dy))/2)/q.A.gy)*q.A.gy;E{dx:dx,dy:dy,x:0,y:0}},ce:u(x,y,dx,dy){dx=18.3L(18.3r(dx,q.A.28.dx),q.A.28.w+q.A.28.dx-q.A.1B.1C);dy=18.3L(18.3r(dy,q.A.28.dy),q.A.28.h+q.A.28.dy-q.A.1B.hb);E{dx:dx,dy:dy,x:0,y:0}},bX:u(e){if(k.11.F==S||k.11.F.A.9E==1b){E}D F=k.11.F;F.A.4B=k.1a.4a(e);if(F.A.7q==I){45=18.ez(18.6b(F.A.1s.x-F.A.4B.x,2)+18.6b(F.A.1s.y-F.A.4B.y,2));if(450){k.1x.al(F)}E I},2r:u(o){if(!k.11.1c){k(\'2e\',1h).1S(\'<22 id="e8">22>\');k.11.1c=k(\'#e8\');D el=k.11.1c.K(0);D 4J=el.14;4J.Y=\'1P\';4J.19=\'1o\';4J.9b=\'8j\';4J.eu=\'1o\';4J.2U=\'2K\';if(1X.71){el.bE="e4"}P{4J.gi=\'1o\';4J.e7=\'1o\';4J.e1=\'1o\'}}if(!o){o={}}E q.1E(u(){if(q.9I||!k.1a)E;if(1X.71){q.gh=u(){E I};q.gj=u(){E I}}D el=q;D 5e=o.3v?k(q).gf(o.3v):k(q);if(k.3a.4t){5e.1E(u(){q.bE="e4"})}P{5e.B(\'-gI-7R-8C\',\'1o\');5e.B(\'7R-8C\',\'1o\');5e.B(\'-gH-7R-8C\',\'1o\')}q.A={5e:5e,6N:o.6N?1b:I,46:o.46?1b:I,44:o.44?o.44:I,5i:o.5i?o.5i:I,8s:o.8s?o.8s:I,3I:o.3I?T(o.3I)||0:I,1G:o.1G?2m(o.1G):I,fx:T(o.fx)||S,6R:o.6R?o.6R:I,5t:{},1s:{},4o:o.4o&&o.4o.1K==2A?o.4o:I,3T:o.3T&&o.3T.1K==2A?o.3T:I,2Z:o.2Z&&o.2Z.1K==2A?o.2Z:I,1O:/49|4j/.48(o.1O)?o.1O:I,6M:o.6M?T(o.6M)||0:0,2V:o.2V?o.2V:I,bD:o.bD?1b:I,7O:o.7O||I};if(o.5t&&o.5t.1K==2A)q.A.5t.7R=o.5t;if(o.4m&&o.4m.1K==2A)q.A.4m=o.4m;if(o.2p&&((o.2p.1K==b0&&(o.2p==\'94\'||o.2p==\'1h\'))||(o.2p.1K==7F&&o.2p.1g==4))){q.A.2p=o.2p}if(o.2O){q.A.2O=o.2O}if(o.6a){if(2g o.6a==\'gz\'){q.A.gx=T(o.6a)||1;q.A.gy=T(o.6a)||1}P if(o.6a.1g==2){q.A.gx=T(o.6a[0])||1;q.A.gy=T(o.6a[1])||1}}if(o.3H&&o.3H.1K==2A){q.A.3H=o.3H}q.9I=1b;5e.1E(u(){q.3U=el});5e.1J(\'5v\',k.11.bN)})}};k.fn.23({aS:k.11.4U,7t:k.11.2r});k.1x={du:u(5J,5G,7Q,7S){E 5J<=k.11.F.A.2v&&(5J+7Q)>=(k.11.F.A.2v+k.11.F.A.1B.w)&&5G<=k.11.F.A.2q&&(5G+7S)>=(k.11.F.A.2q+k.11.F.A.1B.h)?1b:I},cV:u(5J,5G,7Q,7S){E!(5J>(k.11.F.A.2v+k.11.F.A.1B.w)||(5J+7Q)(k.11.F.A.2q+k.11.F.A.1B.h)||(5G+7S)k.11.F.A.4B.x&&5Gk.11.F.A.4B.y?1b:I},5r:I,3Q:{},8D:0,3P:{},ed:u(C){if(k.11.F==S){E}D i;k.1x.3Q={};D bJ=I;24(i in k.1x.3P){if(k.1x.3P[i]!=S){D 1j=k.1x.3P[i].K(0);if(k(k.11.F).is(\'.\'+1j.1i.a)){if(1j.1i.m==I){1j.1i.p=k.23(k.1a.7G(1j),k.1a.74(1j));1j.1i.m=1b}if(1j.1i.ac){k.1x.3P[i].2R(1j.1i.ac)}k.1x.3Q[i]=k.1x.3P[i];if(k.1t&&1j.1i.s&&k.11.F.A.44){1j.1i.el=k(\'.\'+1j.1i.a,1j);C.14.19=\'1o\';k.1t.cT(1j);1j.1i.ay=k.1t.8x(k.1p(1j,\'id\')).7l;C.14.19=C.A.7V;bJ=1b}if(1j.1i.9i){1j.1i.9i.1D(k.1x.3P[i].K(0),[k.11.F])}}}}if(bJ){k.1t.26()}},dS:u(){k.1x.3Q={};24(i in k.1x.3P){if(k.1x.3P[i]!=S){D 1j=k.1x.3P[i].K(0);if(k(k.11.F).is(\'.\'+1j.1i.a)){1j.1i.p=k.23(k.1a.7G(1j),k.1a.74(1j));if(1j.1i.ac){k.1x.3P[i].2R(1j.1i.ac)}k.1x.3Q[i]=k.1x.3P[i];if(k.1t&&1j.1i.s&&k.11.F.A.44){1j.1i.el=k(\'.\'+1j.1i.a,1j);C.14.19=\'1o\';k.1t.cT(1j);C.14.19=C.A.7V}}}}},al:u(e){if(k.11.F==S){E}k.1x.5r=I;D i;D bK=I;D eQ=0;24(i in k.1x.3Q){D 1j=k.1x.3Q[i].K(0);if(k.1x.5r==I&&k.1x[1j.1i.t](1j.1i.p.x,1j.1i.p.y,1j.1i.p.1C,1j.1i.p.hb)){if(1j.1i.hc&&1j.1i.h==I){k.1x.3Q[i].2R(1j.1i.hc)}if(1j.1i.h==I&&1j.1i.7x){bK=1b}1j.1i.h=1b;k.1x.5r=1j;if(k.1t&&1j.1i.s&&k.11.F.A.44){k.1t.1c.K(0).3l=1j.1i.eV;k.1t.al(1j)}eQ++}P if(1j.1i.h==1b){if(1j.1i.7y){1j.1i.7y.1D(1j,[e,k.11.1c.K(0).7c,1j.1i.fx])}if(1j.1i.hc){k.1x.3Q[i].4i(1j.1i.hc)}1j.1i.h=I}}if(k.1t&&!k.1x.5r&&k.11.F.44){k.1t.1c.K(0).14.19=\'1o\'}if(bK){k.1x.5r.1i.7x.1D(k.1x.5r,[e,k.11.1c.K(0).7c])}},eO:u(e){D i;24(i in k.1x.3Q){D 1j=k.1x.3Q[i].K(0);if(1j.1i.ac){k.1x.3Q[i].4i(1j.1i.ac)}if(1j.1i.hc){k.1x.3Q[i].4i(1j.1i.hc)}if(1j.1i.s){k.1t.7s[k.1t.7s.1g]=i}if(1j.1i.9l&&1j.1i.h==1b){1j.1i.h=I;1j.1i.9l.1D(1j,[e,1j.1i.fx])}1j.1i.m=I;1j.1i.h=I}k.1x.3Q={}},4U:u(){E q.1E(u(){if(q.9j){if(q.1i.s){id=k.1p(q,\'id\');k.1t.5L[id]=S;k(\'.\'+q.1i.a,q).aS()}k.1x.3P[\'d\'+q.c2]=S;q.9j=I;q.f=S}})},2r:u(o){E q.1E(u(){if(q.9j==1b||!o.3C||!k.1a||!k.11){E}q.1i={a:o.3C,ac:o.9J||I,hc:o.a5||I,eV:o.58||I,9l:o.gq||o.9l||I,7x:o.7x||o.dC||I,7y:o.7y||o.fO||I,9i:o.9i||I,t:o.6I&&(o.6I==\'du\'||o.6I==\'cV\')?o.6I:\'1s\',fx:o.fx?o.fx:I,m:I,h:I};if(o.cQ==1b&&k.1t){id=k.1p(q,\'id\');k.1t.5L[id]=q.1i.a;q.1i.s=1b;if(o.2Z){q.1i.2Z=o.2Z;q.1i.ay=k.1t.8x(id).7l}}q.9j=1b;q.c2=T(18.6o()*c9);k.1x.3P[\'d\'+q.c2]=k(q);k.1x.8D++})}};k.fn.23({dR:k.1x.4U,do:k.1x.2r});k.gD=k.1x.dS;k.3B={1c:S,8L:u(){3g=q.2y;if(!3g)E;14={dz:k(q).B(\'dz\')||\'\',4A:k(q).B(\'4A\')||\'\',8Z:k(q).B(\'8Z\')||\'\',dP:k(q).B(\'dP\')||\'\',dT:k(q).B(\'dT\')||\'\',dU:k(q).B(\'dU\')||\'\',c3:k(q).B(\'c3\')||\'\',dY:k(q).B(\'dY\')||\'\'};k.3B.1c.B(14);3x=k.3B.dX(3g);3x=3x.4E(12 bb("\\\\n","g"),"
");k.3B.1c.3x(\'gL\');ci=k.3B.1c.K(0).4c;k.3B.1c.3x(3x);Z=k.3B.1c.K(0).4c+ci;if(q.6l.2M&&Z>q.6l.2M[0]){Z=q.6l.2M[0]}q.14.Z=Z+\'U\';if(q.4Y==\'cf\'){W=k.3B.1c.K(0).5W+ci;if(q.6l.2M&&W>q.6l.2M[1]){W=q.6l.2M[1]}q.14.W=W+\'U\'}},dX:u(3g){cg={\'&\':\'&gK;\',\'<\':\'&gJ;\',\'>\':\'>\',\'"\':\'&gs;\'};24(i in cg){3g=3g.4E(12 bb(i,\'g\'),cg[i])}E 3g},2r:u(2M){if(k.3B.1c==S){k(\'2e\',1h).1S(\'<22 id="dE" 14="Y: 1P; Q: 0; O: 0; 3n: 2K;">22>\');k.3B.1c=k(\'#dE\')}E q.1E(u(){if(/cf|ch/.48(q.4Y)){if(q.4Y==\'ch\'){dB=q.5C(\'1u\');if(!/3g|gr/.48(dB)){E}}if(2M&&(2M.1K==bn||(2M.1K==7F&&2M.1g==2))){if(2M.1K==bn)2M=[2M,2M];P{2M[0]=T(2M[0])||8J;2M[1]=T(2M[1])||8J}q.6l={2M:2M}}k(q).5B(k.3B.8L).6y(k.3B.8L).dH(k.3B.8L);k.3B.8L.1D(q)}})}};k.fn.kc=k.3B.2r;k.4K=u(e){if(/^kd$|^ke$|^ka$|^6L$|^k9$|^k5$|^k4$|^k6$|^k7$|^2e$|^k8$|^kf$|^kg$|^kn$|^ko$|^kp$|^kq$/i.48(e.9N))E I;P E 1b};k.fx.a0=u(e,65){D c=e.7c;D cs=c.14;cs.Y=65.Y;cs.5K=65.3G.t;cs.5j=65.3G.l;cs.5k=65.3G.b;cs.5z=65.3G.r;cs.Q=65.Q+\'U\';cs.O=65.O+\'U\';e.31.ew(c,e);e.31.km(e)};k.fx.9P=u(e){if(!k.4K(e))E I;D t=k(e);D es=e.14;D 73=I;if(t.B(\'19\')==\'1o\'){5Y=t.B(\'3n\');t.B(\'3n\',\'2K\').1Y();73=1b}D V={};V.Y=t.B(\'Y\');V.1q=k.1a.2o(e);V.3G=k.1a.cy(e);D co=e.4Z?e.4Z.ei:t.B(\'hU\');V.Q=T(t.B(\'Q\'))||0;V.O=T(t.B(\'O\'))||0;D eo=\'kl\'+T(18.6o()*c9);D 6u=1h.3F(/^1T$|^br$|^kh$|^hr$|^8C$|^kj$|^8T$|^3A$|^kk$|^k3$|^k2$|^9h$|^dl$|^jM$/i.48(e.9N)?\'22\':e.9N);k.1p(6u,\'id\',eo);D jN=k(6u).2R(\'jO\');D 4h=6u.14;D Q=0;D O=0;if(V.Y==\'2s\'||V.Y==\'1P\'){Q=V.Q;O=V.O}4h.Q=Q+\'U\';4h.O=O+\'U\';4h.Y=V.Y!=\'2s\'&&V.Y!=\'1P\'?\'2s\':V.Y;4h.W=V.1q.hb+\'U\';4h.Z=V.1q.1C+\'U\';4h.5K=V.3G.t;4h.5z=V.3G.r;4h.5k=V.3G.b;4h.5j=V.3G.l;4h.2U=\'2K\';if(k.3a.4t){4h.ei=co}P{4h.jK=co}if(k.3a=="4t"){es.5E="8V(1G="+0.ex*2a+")"}es.1G=0.ex;e.31.ew(6u,e);6u.jF(e);es.5K=\'2P\';es.5z=\'2P\';es.5k=\'2P\';es.5j=\'2P\';es.Y=\'1P\';es.eu=\'1o\';es.Q=\'2P\';es.O=\'2P\';if(73){t.2G();es.3n=5Y}E{V:V,3p:k(6u)}};k.fx.8E={jE:[0,1V,1V],jG:[eD,1V,1V],jH:[e6,e6,jI],jP:[0,0,0],ks:[0,0,1V],jY:[dv,42,42],jZ:[0,1V,1V],k0:[0,0,7w],k1:[0,7w,7w],jX:[cn,cn,cn],jS:[0,2a,0],jR:[jT,jU,eb],jV:[7w,0,7w],kr:[85,eb,47],kP:[1V,eA,0],kN:[kO,50,kx],kF:[7w,0,0],kD:[ku,f8,kt],ky:[kH,0,9C],kL:[1V,0,1V],kM:[1V,kJ,0],kv:[0,6C,0],kA:[75,0,kE],kC:[eD,eB,eA],kG:[kI,kB,eB],kw:[e0,1V,1V],kz:[eL,kK,eL],kQ:[9C,9C,9C],jC:[1V,iy,iz],iA:[1V,1V,e0],iB:[0,1V,0],ix:[1V,0,1V],iv:[6C,0,0],iq:[0,0,6C],ip:[6C,6C,0],ir:[1V,dv,0],it:[1V,ah,iu],iC:[6C,0,6C],iD:[1V,0,0],iK:[ah,ah,ah],iL:[1V,1V,1V],iM:[1V,1V,0]};k.fx.6D=u(4x,dm){if(k.fx.8E[4x])E{r:k.fx.8E[4x][0],g:k.fx.8E[4x][1],b:k.fx.8E[4x][2]};P if(2W=/^6Y\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)$/.a4(4x))E{r:T(2W[1]),g:T(2W[2]),b:T(2W[3])};P if(2W=/6Y\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)$/.a4(4x))E{r:2m(2W[1])*2.55,g:2m(2W[2])*2.55,b:2m(2W[3])*2.55};P if(2W=/^#([a-fA-79-9])([a-fA-79-9])([a-fA-79-9])$/.a4(4x))E{r:T("77"+2W[1]+2W[1]),g:T("77"+2W[2]+2W[2]),b:T("77"+2W[3]+2W[3])};P if(2W=/^#([a-fA-79-9]{2})([a-fA-79-9]{2})([a-fA-79-9]{2})$/.a4(4x))E{r:T("77"+2W[1]),g:T("77"+2W[2]),b:T("77"+2W[3])};P E dm==1b?I:{r:1V,g:1V,b:1V}};k.fx.dD={5Q:1,5b:1,5O:1,4S:1,4D:1,4A:1,W:1,O:1,c3:1,iI:1,5k:1,5j:1,5z:1,5K:1,8b:1,6x:1,8c:1,av:1,1G:1,iE:1,iF:1,5n:1,4X:1,5U:1,5M:1,2L:1,jD:1,Q:1,Z:1,3I:1};k.fx.dA={7i:1,iG:1,iH:1,io:1,im:1,4x:1,i2:1};k.fx.8A=[\'i3\',\'i4\',\'i5\',\'i1\'];k.fx.cc={\'cd\':[\'2E\',\'dK\'],\'a8\':[\'2E\',\'bh\'],\'6w\':[\'6w\',\'\'],\'8F\':[\'8F\',\'\']};k.fn.23({5w:u(5X,H,G,J){E q.1w(u(){D a1=k.H(H,G,J);D e=12 k.dM(q,a1,5X)})},c4:u(H,J){E q.1w(u(){D a1=k.H(H,J);D e=12 k.c4(q,a1)})},8o:u(2D){E q.1E(u(){if(q.6d)k.by(q,2D)})},i0:u(2D){E q.1E(u(){if(q.6d)k.by(q,2D);if(q.1w&&q.1w[\'fx\'])q.1w.fx=[]})}});k.23({c4:u(2f,M){D z=q,3t;z.2D=u(){if(k.fQ(M.21))M.21.1D(2f)};z.2I=6V(u(){z.2D()},M.1m);2f.6d=z},G:{c8:u(p,n,1W,1H,1m){E((-18.5H(p*18.2Q)/2)+0.5)*1H+1W}},dM:u(2f,M,5X){D z=q,3t;D y=2f.14;D fR=k.B(2f,"2U");D 72=k.B(2f,"19");D 2j={};z.9O=(12 7g()).7z();M.G=M.G&&k.G[M.G]?M.G:\'c8\';z.ag=u(2w,43){if(k.fx.dD[2w]){if(43==\'1Y\'||43==\'2G\'||43==\'3R\'){if(!2f.6v)2f.6v={};D r=2m(k.6E(2f,2w));2f.6v[2w]=r&&r>-c9?r:(2m(k.B(2f,2w))||0);43=43==\'3R\'?(72==\'1o\'?\'1Y\':\'2G\'):43;M[43]=1b;2j[2w]=43==\'1Y\'?[0,2f.6v[2w]]:[2f.6v[2w],0];if(2w!=\'1G\')y[2w]=2j[2w][0]+(2w!=\'3I\'&&2w!=\'8Z\'?\'U\':\'\');P k.1p(y,"1G",2j[2w][0])}P{2j[2w]=[2m(k.6E(2f,2w)),2m(43)||0]}}P if(k.fx.dA[2w])2j[2w]=[k.fx.6D(k.6E(2f,2w)),k.fx.6D(43)];P if(/^6w$|8F$|2E$|a8$|cd$/i.48(2w)){D m=43.4E(/\\s+/g,\' \').4E(/6Y\\s*\\(\\s*/g,\'6Y(\').4E(/\\s*,\\s*/g,\',\').4E(/\\s*\\)/g,\')\').d5(/([^\\s]+)/g);3m(2w){1e\'6w\':1e\'8F\':1e\'cd\':1e\'a8\':m[3]=m[3]||m[1]||m[0];m[2]=m[2]||m[0];m[1]=m[1]||m[0];24(D i=0;iM.1m+z.9O){5T(z.2I);z.2I=S;24(p in 2j){if(p=="1G")k.1p(y,"1G",2j[p][1]);P if(2g 2j[p][1]==\'8T\')y[p]=\'6Y(\'+2j[p][1].r+\',\'+2j[p][1].g+\',\'+2j[p][1].b+\')\';P y[p]=2j[p][1]+(p!=\'3I\'&&p!=\'8Z\'?\'U\':\'\')}if(M.2G||M.1Y)24(D p in 2f.6v)if(p=="1G")k.1p(y,p,2f.6v[p]);P y[p]="";y.19=M.2G?\'1o\':(72!=\'1o\'?72:\'2B\');y.2U=fR;2f.6d=S;if(k.fQ(M.21))M.21.1D(2f)}P{D n=t-q.9O;D 8w=n/M.1m;24(p in 2j){if(2g 2j[p][1]==\'8T\'){y[p]=\'6Y(\'+T(k.G[M.G](8w,n,2j[p][0].r,(2j[p][1].r-2j[p][0].r),M.1m))+\',\'+T(k.G[M.G](8w,n,2j[p][0].g,(2j[p][1].g-2j[p][0].g),M.1m))+\',\'+T(k.G[M.G](8w,n,2j[p][0].b,(2j[p][1].b-2j[p][0].b),M.1m))+\')\'}P{D bz=k.G[M.G](8w,n,2j[p][0],(2j[p][1]-2j[p][0]),M.1m);if(p=="1G")k.1p(y,"1G",bz);P y[p]=bz+(p!=\'3I\'&&p!=\'8Z\'?\'U\':\'\')}}}};z.2I=6V(u(){z.2D()},13);2f.6d=z},by:u(2f,2D){if(2D)2f.6d.9O-=iO;P{1X.5T(2f.6d.2I);2f.6d=S;k.2H(2f,"fx")}}});k.bl=u(5Z){D 5f={};if(2g 5Z==\'4V\'){5Z=5Z.6c().7C(\';\');24(D i=0;i<5Z.1g;i++){6X=5Z[i].7C(\':\');if(6X.1g==2){5f[k.g6(6X[0].4E(/\\-(\\w)/g,u(m,c){E c.jo()}))]=k.g6(6X[1])}}}E 5f};k.fn.23({g3:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'4F\',G)})},gb:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'4r\',G)})},jl:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'fJ\',G)})},jk:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'O\',G)})},jg:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'2L\',G)})},jf:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'fh\',G)})}});k.fx.61=u(e,H,J,2S,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.1N=k.1a.2o(e);z.G=2g J==\'4V\'?J:G||S;if(!e.4s)e.4s=z.el.B(\'19\');if(2S==\'fJ\'){2S=z.el.B(\'19\')==\'1o\'?\'4r\':\'4F\'}P if(2S==\'fh\'){2S=z.el.B(\'19\')==\'1o\'?\'2L\':\'O\'}z.el.1Y();z.H=H;z.J=2g J==\'u\'?J:S;z.fx=k.fx.9P(e);z.2S=2S;z.21=u(){if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}if(z.2S==\'4r\'||z.2S==\'2L\'){z.el.B(\'19\',z.el.K(0).4s==\'1o\'?\'2B\':z.el.K(0).4s)}P{z.el.2G()}k.fx.a0(z.fx.3p.K(0),z.fx.V);k.2H(z.el.K(0),\'1n\')};3m(z.2S){1e\'4F\':63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'W\');63.1L(z.fx.V.1q.hb,0);1r;1e\'4r\':z.fx.3p.B(\'W\',\'9R\');z.el.1Y();63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'W\');63.1L(0,z.fx.V.1q.hb);1r;1e\'O\':63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'Z\');63.1L(z.fx.V.1q.1C,0);1r;1e\'2L\':z.fx.3p.B(\'Z\',\'9R\');z.el.1Y();63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'Z\');63.1L(0,z.fx.V.1q.1C);1r}};k.fn.ji=u(5D,J){E q.1w(\'1n\',u(){if(!k.4K(q)){k.2H(q,\'1n\');E I}D e=12 k.fx.f4(q,5D,J);e.bp()})};k.fx.f4=u(e,5D,J){D z=q;z.el=k(e);z.el.1Y();z.J=J;z.5D=T(5D)||40;z.V={};z.V.Y=z.el.B(\'Y\');z.V.Q=T(z.el.B(\'Q\'))||0;z.V.O=T(z.el.B(\'O\'))||0;if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.3V=5;z.5y=1;z.bp=u(){z.5y++;z.e=12 k.fx(z.el.K(0),{1m:jj,21:u(){z.e=12 k.fx(z.el.K(0),{1m:80,21:u(){z.5D=T(z.5D/2);if(z.5y<=z.3V)z.bp();P{z.el.B(\'Y\',z.V.Y).B(\'Q\',z.V.Q+\'U\').B(\'O\',z.V.O+\'U\');k.2H(z.el.K(0),\'1n\');if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}}}},\'Q\');z.e.1L(z.V.Q-z.5D,z.V.Q)}},\'Q\');z.e.1L(z.V.Q,z.V.Q-z.5D)}};k.fn.23({jy:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4r\',\'4l\',G)})},jz:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4r\',\'in\',G)})},jA:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4r\',\'3R\',G)})},jB:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4F\',\'4l\',G)})},jx:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4F\',\'in\',G)})},jw:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4F\',\'3R\',G)})},js:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'O\',\'4l\',G)})},jt:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'O\',\'in\',G)})},ju:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'O\',\'3R\',G)})},jv:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'2L\',\'4l\',G)})},je:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'2L\',\'in\',G)})},jd:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'2L\',\'3R\',G)})}});k.fx.4f=u(e,H,J,2S,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.V={};z.V.Y=z.el.B(\'Y\');z.V.Q=z.el.B(\'Q\');z.V.O=z.el.B(\'O\');if(!e.4s)e.4s=z.el.B(\'19\');if(1u==\'3R\'){1u=z.el.B(\'19\')==\'1o\'?\'in\':\'4l\'}z.el.1Y();if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.1u=1u;J=2g J==\'u\'?J:S;8H=1;3m(2S){1e\'4F\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Q\');z.62=2m(z.V.Q)||0;z.9K=z.fG;8H=-1;1r;1e\'4r\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Q\');z.62=2m(z.V.Q)||0;z.9K=z.fG;1r;1e\'2L\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'O\');z.62=2m(z.V.O)||0;z.9K=z.fy;1r;1e\'O\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'O\');z.62=2m(z.V.O)||0;z.9K=z.fy;8H=-1;1r}z.e2=12 k.fx(z.el.K(0),k.H(H,z.G,u(){z.el.B(z.V);if(z.1u==\'4l\'){z.el.B(\'19\',\'1o\')}P z.el.B(\'19\',z.el.K(0).4s==\'1o\'?\'2B\':z.el.K(0).4s);k.2H(z.el.K(0),\'1n\')}),\'1G\');if(1u==\'in\'){z.e.1L(z.62+2a*8H,z.62);z.e2.1L(0,1)}P{z.e.1L(z.62,z.62+2a*8H);z.e2.1L(1,0)}};k.fn.23({j0:u(H,W,J,G){E q.1w(\'1n\',u(){12 k.fx.9L(q,H,W,J,\'fp\',G)})},iW:u(H,W,J,G){E q.1w(\'1n\',u(){12 k.fx.9L(q,H,W,J,\'9M\',G)})},iV:u(H,W,J,G){E q.1w(\'1n\',u(){12 k.fx.9L(q,H,W,J,\'3R\',G)})}});k.fx.9L=u(e,H,W,J,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;if(1u==\'3R\'){1u=z.el.B(\'19\')==\'1o\'?\'9M\':\'fp\'}z.H=H;z.W=W&&W.1K==bn?W:20;z.fx=k.fx.9P(e);z.1u=1u;z.21=u(){if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}if(z.1u==\'9M\'){z.el.1Y()}P{z.el.2G()}k.fx.a0(z.fx.3p.K(0),z.fx.V);k.2H(z.el.K(0),\'1n\')};if(z.1u==\'9M\'){z.el.1Y();z.fx.3p.B(\'W\',z.W+\'U\').B(\'Z\',\'9R\');z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,u(){z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'W\');z.ef.1L(z.W,z.fx.V.1q.hb)}),\'Z\');z.ef.1L(0,z.fx.V.1q.1C)}P{z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,u(){z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'Z\');z.ef.1L(z.fx.V.1q.1C,0)}),\'W\');z.ef.1L(z.fx.V.1q.hb,z.W)}};k.fn.iR=u(H,4x,J,G){E q.1w(\'fv\',u(){q.6W=k(q).1p("14")||\'\';G=2g J==\'4V\'?J:G||S;J=2g J==\'u\'?J:S;D 9S=k(q).B(\'7i\');D 8I=q.31;7d(9S==\'cu\'&&8I){9S=k(8I).B(\'7i\');8I=8I.31}k(q).B(\'7i\',4x);if(2g q.6W==\'8T\')q.6W=q.6W["9X"];k(q).5w({\'7i\':9S},H,G,u(){k.2H(q,\'fv\');if(2g k(q).1p("14")==\'8T\'){k(q).1p("14")["9X"]="";k(q).1p("14")["9X"]=q.6W}P{k(q).1p("14",q.6W)}if(J)J.1D(q)})})};k.fn.23({iT:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'49\',\'6g\',G)})},iU:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'4j\',\'6g\',G)})},j1:u(H,J,G){E q.1w(\'1n\',u(){if(k.B(q,\'19\')==\'1o\'){12 k.fx.5m(q,H,J,\'4j\',\'6Z\',G)}P{12 k.fx.5m(q,H,J,\'4j\',\'6g\',G)}})},j2:u(H,J,G){E q.1w(\'1n\',u(){if(k.B(q,\'19\')==\'1o\'){12 k.fx.5m(q,H,J,\'49\',\'6Z\',G)}P{12 k.fx.5m(q,H,J,\'49\',\'6g\',G)}})},j9:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'49\',\'6Z\',G)})},ja:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'4j\',\'6Z\',G)})}});k.fx.5m=u(e,H,J,2S,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;D 73=I;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;z.1u=1u;z.H=H;z.2i=k.1a.2o(e);z.V={};z.V.Y=z.el.B(\'Y\');z.V.19=z.el.B(\'19\');if(z.V.19==\'1o\'){5Y=z.el.B(\'3n\');z.el.1Y();73=1b}z.V.Q=z.el.B(\'Q\');z.V.O=z.el.B(\'O\');if(73){z.el.2G();z.el.B(\'3n\',5Y)}z.V.Z=z.2i.w+\'U\';z.V.W=z.2i.h+\'U\';z.V.2U=z.el.B(\'2U\');z.2i.Q=T(z.V.Q)||0;z.2i.O=T(z.V.O)||0;if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.el.B(\'2U\',\'2K\').B(\'W\',1u==\'6Z\'&&2S==\'49\'?1:z.2i.h+\'U\').B(\'Z\',1u==\'6Z\'&&2S==\'4j\'?1:z.2i.w+\'U\');z.21=u(){z.el.B(z.V);if(z.1u==\'6g\')z.el.2G();P z.el.1Y();k.2H(z.el.K(0),\'1n\')};3m(2S){1e\'49\':z.eh=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'W\');z.et=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'Q\');if(z.1u==\'6g\'){z.eh.1L(z.2i.h,0);z.et.1L(z.2i.Q,z.2i.Q+z.2i.h/2)}P{z.eh.1L(0,z.2i.h);z.et.1L(z.2i.Q+z.2i.h/2,z.2i.Q)}1r;1e\'4j\':z.eh=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Z\');z.et=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'O\');if(z.1u==\'6g\'){z.eh.1L(z.2i.w,0);z.et.1L(z.2i.O,z.2i.O+z.2i.w/2)}P{z.eh.1L(0,z.2i.w);z.et.1L(z.2i.O+z.2i.w/2,z.2i.O)}1r}};k.fn.bg=u(H,3V,J){E q.1w(\'1n\',u(){if(!k.4K(q)){k.2H(q,\'1n\');E I}D fx=12 k.fx.bg(q,H,3V,J);fx.bf()})};k.fx.bg=u(el,H,3V,J){D z=q;z.3V=3V;z.5y=1;z.el=el;z.H=H;z.J=J;k(z.el).1Y();z.bf=u(){z.5y++;z.e=12 k.fx(z.el,k.H(z.H,u(){z.ef=12 k.fx(z.el,k.H(z.H,u(){if(z.5y<=z.3V)z.bf();P{k.2H(z.el,\'1n\');if(z.J&&z.J.1K==2A){z.J.1D(z.el)}}}),\'1G\');z.ef.1L(0,1)}),\'1G\');z.e.1L(1,0)}};k.fn.23({jb:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.6G(q,H,1,2a,1b,J,\'fa\',G)})},jc:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.6G(q,H,2a,1,1b,J,\'b4\',G)})},j8:u(H,J,G){E q.1w(\'1n\',u(){D G=G||\'fl\';12 k.fx.6G(q,H,2a,f8,1b,J,\'6h\',G)})},6G:u(H,57,30,6H,J,G){E q.1w(\'1n\',u(){12 k.fx.6G(q,H,57,30,6H,J,\'6G\',G)})}});k.fx.6G=u(e,H,57,30,6H,J,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.57=T(57)||2a;z.30=T(30)||2a;z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;z.1m=k.H(H).1m;z.6H=6H||S;z.2i=k.1a.2o(e);z.V={Z:z.el.B(\'Z\'),W:z.el.B(\'W\'),4A:z.el.B(\'4A\')||\'2a%\',Y:z.el.B(\'Y\'),19:z.el.B(\'19\'),Q:z.el.B(\'Q\'),O:z.el.B(\'O\'),2U:z.el.B(\'2U\'),4S:z.el.B(\'4S\'),5O:z.el.B(\'5O\'),5Q:z.el.B(\'5Q\'),5b:z.el.B(\'5b\'),5M:z.el.B(\'5M\'),5U:z.el.B(\'5U\'),5n:z.el.B(\'5n\'),4X:z.el.B(\'4X\')};z.Z=T(z.V.Z)||e.4c||0;z.W=T(z.V.W)||e.5W||0;z.Q=T(z.V.Q)||0;z.O=T(z.V.O)||0;1q=[\'em\',\'U\',\'j7\',\'%\'];24(i in 1q){if(z.V.4A.3J(1q[i])>0){z.fg=1q[i];z.4A=2m(z.V.4A)}if(z.V.4S.3J(1q[i])>0){z.fc=1q[i];z.bw=2m(z.V.4S)||0}if(z.V.5O.3J(1q[i])>0){z.fe=1q[i];z.bc=2m(z.V.5O)||0}if(z.V.5Q.3J(1q[i])>0){z.fL=1q[i];z.bA=2m(z.V.5Q)||0}if(z.V.5b.3J(1q[i])>0){z.g8=1q[i];z.bt=2m(z.V.5b)||0}if(z.V.5M.3J(1q[i])>0){z.g4=1q[i];z.bx=2m(z.V.5M)||0}if(z.V.5U.3J(1q[i])>0){z.g9=1q[i];z.bv=2m(z.V.5U)||0}if(z.V.5n.3J(1q[i])>0){z.gc=1q[i];z.bj=2m(z.V.5n)||0}if(z.V.4X.3J(1q[i])>0){z.fK=1q[i];z.b7=2m(z.V.4X)||0}}if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.el.B(\'2U\',\'2K\');z.1u=1u;3m(z.1u){1e\'fa\':z.4b=z.Q+z.2i.h/2;z.5a=z.Q;z.4k=z.O+z.2i.w/2;z.59=z.O;1r;1e\'b4\':z.5a=z.Q+z.2i.h/2;z.4b=z.Q;z.59=z.O+z.2i.w/2;z.4k=z.O;1r;1e\'6h\':z.5a=z.Q-z.2i.h/4;z.4b=z.Q;z.59=z.O-z.2i.w/4;z.4k=z.O;1r}z.be=I;z.t=(12 7g).7z();z.4w=u(){5T(z.2I);z.2I=S};z.2D=u(){if(z.be==I){z.el.1Y();z.be=1b}D t=(12 7g).7z();D n=t-z.t;D p=n/z.1m;if(t>=z.1m+z.t){9T(u(){o=1;if(z.1u){t=z.5a;l=z.59;if(z.1u==\'6h\')o=0}z.bs(z.30,l,t,1b,o)},13);z.4w()}P{o=1;if(!k.G||!k.G[z.G]){s=((-18.5H(p*18.2Q)/2)+0.5)*(z.30-z.57)+z.57}P{s=k.G[z.G](p,n,z.57,(z.30-z.57),z.1m)}if(z.1u){if(!k.G||!k.G[z.G]){t=((-18.5H(p*18.2Q)/2)+0.5)*(z.5a-z.4b)+z.4b;l=((-18.5H(p*18.2Q)/2)+0.5)*(z.59-z.4k)+z.4k;if(z.1u==\'6h\')o=((-18.5H(p*18.2Q)/2)+0.5)*(-0.9Y)+0.9Y}P{t=k.G[z.G](p,n,z.4b,(z.5a-z.4b),z.1m);l=k.G[z.G](p,n,z.4k,(z.59-z.4k),z.1m);if(z.1u==\'6h\')o=k.G[z.G](p,n,0.9Y,-0.9Y,z.1m)}}z.bs(s,l,t,I,o)}};z.2I=6V(u(){z.2D()},13);z.bs=u(4q,O,Q,fM,1G){z.el.B(\'W\',z.W*4q/2a+\'U\').B(\'Z\',z.Z*4q/2a+\'U\').B(\'O\',O+\'U\').B(\'Q\',Q+\'U\').B(\'4A\',z.4A*4q/2a+z.fg);if(z.bw)z.el.B(\'4S\',z.bw*4q/2a+z.fc);if(z.bc)z.el.B(\'5O\',z.bc*4q/2a+z.fe);if(z.bA)z.el.B(\'5Q\',z.bA*4q/2a+z.fL);if(z.bt)z.el.B(\'5b\',z.bt*4q/2a+z.g8);if(z.bx)z.el.B(\'5M\',z.bx*4q/2a+z.g4);if(z.bv)z.el.B(\'5U\',z.bv*4q/2a+z.g9);if(z.bj)z.el.B(\'5n\',z.bj*4q/2a+z.gc);if(z.b7)z.el.B(\'4X\',z.b7*4q/2a+z.fK);if(z.1u==\'6h\'){if(1X.71)z.el.K(0).14.5E="8V(1G="+1G*2a+")";z.el.K(0).14.1G=1G}if(fM){if(z.6H){z.el.B(z.V)}if(z.1u==\'b4\'||z.1u==\'6h\'){z.el.B(\'19\',\'1o\');if(z.1u==\'6h\'){if(1X.71)z.el.K(0).14.5E="8V(1G="+2a+")";z.el.K(0).14.1G=1}}P z.el.B(\'19\',\'2B\');if(z.J)z.J.1D(z.el.K(0));k.2H(z.el.K(0),\'1n\')}}};k.fn.23({9U:u(H,1O,G){o=k.H(H);E q.1w(\'1n\',u(){12 k.fx.9U(q,o,1O,G)})},j6:u(H,1O,G){E q.1E(u(){k(\'a[@3h*="#"]\',q).5h(u(e){fW=q.3h.7C(\'#\');k(\'#\'+fW[1]).9U(H,1O,G);E I})})}});k.fx.9U=u(e,o,1O,G){D z=q;z.o=o;z.e=e;z.1O=/fT|gd/.48(1O)?1O:I;z.G=G;p=k.1a.3w(e);s=k.1a.6z();z.4w=u(){5T(z.2I);z.2I=S;k.2H(z.e,\'1n\')};z.t=(12 7g).7z();s.h=s.h>s.ih?(s.h-s.ih):s.h;s.w=s.w>s.iw?(s.w-s.iw):s.w;z.5a=p.y>s.h?s.h:p.y;z.59=p.x>s.w?s.w:p.x;z.4b=s.t;z.4k=s.l;z.2D=u(){D t=(12 7g).7z();D n=t-z.t;D p=n/z.o.1m;if(t>=z.o.1m+z.t){z.4w();9T(u(){z.d3(z.5a,z.59)},13)}P{if(!z.1O||z.1O==\'fT\'){if(!k.G||!k.G[z.G]){9V=((-18.5H(p*18.2Q)/2)+0.5)*(z.5a-z.4b)+z.4b}P{9V=k.G[z.G](p,n,z.4b,(z.5a-z.4b),z.o.1m)}}P{9V=z.4b}if(!z.1O||z.1O==\'gd\'){if(!k.G||!k.G[z.G]){9W=((-18.5H(p*18.2Q)/2)+0.5)*(z.59-z.4k)+z.4k}P{9W=k.G[z.G](p,n,z.4k,(z.59-z.4k),z.o.1m)}}P{9W=z.4k}z.d3(9V,9W)}};z.d3=u(t,l){1X.j4(l,t)};z.2I=6V(u(){z.2D()},13)};k.fn.cY=u(3V,J){E q.1w(\'1n\',u(){if(!k.4K(q)){k.2H(q,\'1n\');E I}D e=12 k.fx.cY(q,3V,J);e.cG()})};k.fx.cY=u(e,3V,J){D z=q;z.el=k(e);z.el.1Y();z.3V=T(3V)||3;z.J=J;z.5y=1;z.V={};z.V.Y=z.el.B(\'Y\');z.V.Q=T(z.el.B(\'Q\'))||0;z.V.O=T(z.el.B(\'O\'))||0;if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.cG=u(){z.5y++;z.e=12 k.fx(z.el.K(0),{1m:60,21:u(){z.e=12 k.fx(z.el.K(0),{1m:60,21:u(){z.e=12 k.fx(e,{1m:60,21:u(){if(z.5y<=z.3V)z.cG();P{z.el.B(\'Y\',z.V.Y).B(\'Q\',z.V.Q+\'U\').B(\'O\',z.V.O+\'U\');k.2H(z.el.K(0),\'1n\');if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}}}},\'O\');z.e.1L(z.V.O-20,z.V.O)}},\'O\');z.e.1L(z.V.O+20,z.V.O-20)}},\'O\');z.e.1L(z.V.O,z.V.O+20)}};k.fn.23({fo:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4F\',\'in\',G)})},fq:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4F\',\'4l\',G)})},iY:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4F\',\'3R\',G)})},iX:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4r\',\'in\',G)})},jr:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4r\',\'4l\',G)})},jq:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4r\',\'3R\',G)})},jp:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'O\',\'in\',G)})},jn:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'O\',\'4l\',G)})},jm:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'O\',\'3R\',G)})},iP:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'2L\',\'in\',G)})},ic:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'2L\',\'4l\',G)})},ib:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'2L\',\'3R\',G)})}});k.fx.1z=u(e,H,J,2S,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;if(1u==\'3R\'){1u=z.el.B(\'19\')==\'1o\'?\'in\':\'4l\'}if(!e.4s)e.4s=z.el.B(\'19\');z.el.1Y();z.H=H;z.fx=k.fx.9P(e);z.1u=1u;z.2S=2S;z.21=u(){if(z.1u==\'4l\')z.el.B(\'3n\',\'2K\');k.fx.a0(z.fx.3p.K(0),z.fx.V);if(z.1u==\'in\'){z.el.B(\'19\',z.el.K(0).4s==\'1o\'?\'2B\':z.el.K(0).4s)}P{z.el.B(\'19\',\'1o\');z.el.B(\'3n\',\'dd\')}if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}k.2H(z.el.K(0),\'1n\')};3m(z.2S){1e\'4F\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'Q\');z.7v=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G),\'W\');if(z.1u==\'in\'){z.ef.1L(-z.fx.V.1q.hb,0);z.7v.1L(0,z.fx.V.1q.hb)}P{z.ef.1L(0,-z.fx.V.1q.hb);z.7v.1L(z.fx.V.1q.hb,0)}1r;1e\'4r\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'Q\');if(z.1u==\'in\'){z.ef.1L(z.fx.V.1q.hb,0)}P{z.ef.1L(0,z.fx.V.1q.hb)}1r;1e\'O\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'O\');z.7v=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G),\'Z\');if(z.1u==\'in\'){z.ef.1L(-z.fx.V.1q.1C,0);z.7v.1L(0,z.fx.V.1q.1C)}P{z.ef.1L(0,-z.fx.V.1q.1C);z.7v.1L(z.fx.V.1q.1C,0)}1r;1e\'2L\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'O\');if(z.1u==\'in\'){z.ef.1L(z.fx.V.1q.1C,0)}P{z.ef.1L(0,z.fx.V.1q.1C)}1r}};k.3f=S;k.fn.ig=u(o){E q.1w(\'1n\',u(){12 k.fx.dG(q,o)})};k.fx.dG=u(e,o){if(k.3f==S){k(\'2e\',1h).1S(\'<22 id="3f">22>\');k.3f=k(\'#3f\')}k.3f.B(\'19\',\'2B\').B(\'Y\',\'1P\');D z=q;z.el=k(e);if(!o||!o.30){E}if(o.30.1K==b0&&1h.9e(o.30)){o.30=1h.9e(o.30)}P if(!o.30.dq){E}if(!o.1m){o.1m=g5}z.1m=o.1m;z.30=o.30;z.8r=o.3l;z.21=o.21;if(z.8r){k.3f.2R(z.8r)}z.a3=0;z.a2=0;if(k.dF){z.a3=(T(k.3f.B(\'5b\'))||0)+(T(k.3f.B(\'5O\'))||0)+(T(k.3f.B(\'4X\'))||0)+(T(k.3f.B(\'5U\'))||0);z.a2=(T(k.3f.B(\'4S\'))||0)+(T(k.3f.B(\'5Q\'))||0)+(T(k.3f.B(\'5M\'))||0)+(T(k.3f.B(\'5n\'))||0)}z.26=k.23(k.1a.3w(z.el.K(0)),k.1a.2o(z.el.K(0)));z.2T=k.23(k.1a.3w(z.30),k.1a.2o(z.30));z.26.1C-=z.a3;z.26.hb-=z.a2;z.2T.1C-=z.a3;z.2T.hb-=z.a2;z.J=o.21;k.3f.B(\'Z\',z.26.1C+\'U\').B(\'W\',z.26.hb+\'U\').B(\'Q\',z.26.y+\'U\').B(\'O\',z.26.x+\'U\').5w({Q:z.2T.y,O:z.2T.x,Z:z.2T.1C,W:z.2T.hb},z.1m,u(){if(z.8r)k.3f.4i(z.8r);k.3f.B(\'19\',\'1o\');if(z.21&&z.21.1K==2A){z.21.1D(z.el.K(0),[z.30])}k.2H(z.el.K(0),\'1n\')})};k.1v={M:{2E:10,ec:\'1Q/iJ.eZ\',e3:\'<1T 2J="1Q/6g.da" />\',eW:0.8,d8:\'iN a6\',dc:\'57\',3W:8J},jQ:I,jW:I,6j:S,8m:I,8k:I,d1:u(2k){if(!k.1v.8k||k.1v.8m)E;D 3K=2k.7L||2k.7K||-1;3m(3K){1e 35:if(k.1v.6j)k.1v.26(S,k(\'a[@4I=\'+k.1v.6j+\']:jJ\').K(0));1r;1e 36:if(k.1v.6j)k.1v.26(S,k(\'a[@4I=\'+k.1v.6j+\']:jL\').K(0));1r;1e 37:1e 8:1e 33:1e 80:1e kb:D 9p=k(\'#87\');if(9p.K(0).53!=S){9p.K(0).53.1D(9p.K(0))}1r;1e 38:1r;1e 39:1e 34:1e 32:1e gl:1e 78:D 9k=k(\'#88\');if(9k.K(0).53!=S){9k.K(0).53.1D(9k.K(0))}1r;1e 40:1r;1e 27:k.1v.au();1r}},7q:u(M){if(M)k.23(k.1v.M,M);if(1X.2k){k(\'2e\',1h).1J(\'6y\',k.1v.d1)}P{k(1h).1J(\'6y\',k.1v.d1)}k(\'a\').1E(u(){el=k(q);en=el.1p(\'4I\')||\'\';e9=el.1p(\'3h\')||\'\';ev=/\\.da|\\.gw|\\.8X|\\.eZ|\\.gn/g;if(e9.6c().d5(ev)!=S&&en.6c().3J(\'eU\')==0){el.1J(\'5h\',k.1v.26)}});if(k.3a.4t){3A=1h.3F(\'3A\');k(3A).1p({id:\'cN\',2J:\'ek:I;\',ej:\'cD\',ep:\'cD\'}).B({19:\'1o\',Y:\'1P\',Q:\'0\',O:\'0\',5E:\'9n:9w.9y.cC(1G=0)\'});k(\'2e\').1S(3A)}8n=1h.3F(\'22\');k(8n).1p(\'id\',\'cP\').B({Y:\'1P\',19:\'1o\',Q:\'0\',O:\'0\',1G:0}).1S(1h.8M(\' \')).1J(\'5h\',k.1v.au);6A=1h.3F(\'22\');k(6A).1p(\'id\',\'eK\').B({4X:k.1v.M.2E+\'U\'}).1S(1h.8M(\' \'));cE=1h.3F(\'22\');k(cE).1p(\'id\',\'dg\').B({4X:k.1v.M.2E+\'U\',5n:k.1v.M.2E+\'U\'}).1S(1h.8M(\' \'));cF=1h.3F(\'a\');k(cF).1p({id:\'gg\',3h:\'#\'}).B({Y:\'1P\',2L:k.1v.M.2E+\'U\',Q:\'0\'}).1S(k.1v.M.e3).1J(\'5h\',k.1v.au);7m=1h.3F(\'22\');k(7m).1p(\'id\',\'cM\').B({Y:\'2s\',cA:\'O\',6w:\'0 9F\',3I:1}).1S(6A).1S(cE).1S(cF);2b=1h.3F(\'1T\');2b.2J=k.1v.M.ec;k(2b).1p(\'id\',\'eM\').B({Y:\'1P\'});4G=1h.3F(\'a\');k(4G).1p({id:\'87\',3h:\'#\'}).B({Y:\'1P\',19:\'1o\',2U:\'2K\',ey:\'1o\'}).1S(1h.8M(\' \'));4M=1h.3F(\'a\');k(4M).1p({id:\'88\',3h:\'#\'}).B({Y:\'1P\',2U:\'2K\',ey:\'1o\'}).1S(1h.8M(\' \'));1Z=1h.3F(\'22\');k(1Z).1p(\'id\',\'eE\').B({19:\'1o\',Y:\'2s\',2U:\'2K\',cA:\'O\',6w:\'0 9F\',Q:\'0\',O:\'0\',3I:2}).1S([2b,4G,4M]);6F=1h.3F(\'22\');k(6F).1p(\'id\',\'ao\').B({19:\'1o\',Y:\'1P\',2U:\'2K\',Q:\'0\',O:\'0\',cA:\'cv\',7i:\'cu\',hC:\'0\'}).1S([1Z,7m]);k(\'2e\').1S(8n).1S(6F)},26:u(e,C){el=C?k(C):k(q);9t=el.1p(\'4I\');D 6B,4u,4G,4M;if(9t!=\'eU\'){k.1v.6j=9t;8Y=k(\'a[@4I=\'+9t+\']\');6B=8Y.1N();4u=8Y.cZ(C?C:q);4G=8Y.K(4u-1);4M=8Y.K(4u+1)}89=el.1p(\'3h\');6A=el.1p(\'4g\');3O=k.1a.6z();8n=k(\'#cP\');if(!k.1v.8k){k.1v.8k=1b;if(k.3a.4t){k(\'#cN\').B(\'W\',18.3r(3O.ih,3O.h)+\'U\').B(\'Z\',18.3r(3O.iw,3O.w)+\'U\').1Y()}8n.B(\'W\',18.3r(3O.ih,3O.h)+\'U\').B(\'Z\',18.3r(3O.iw,3O.w)+\'U\').1Y().fX(cO,k.1v.M.eW,u(){k.1v.cw(89,6A,3O,6B,4u,4G,4M)});k(\'#ao\').B(\'Z\',18.3r(3O.iw,3O.w)+\'U\')}P{k(\'#87\').K(0).53=S;k(\'#88\').K(0).53=S;k.1v.cw(89,6A,3O,6B,4u,4G,4M)}E I},cw:u(89,gP,3O,6B,4u,4G,4M){k(\'#cW\').bk();aX=k(\'#87\');aX.2G();aO=k(\'#88\');aO.2G();2b=k(\'#eM\');1Z=k(\'#eE\');6F=k(\'#ao\');7m=k(\'#cM\').B(\'3n\',\'2K\');k(\'#eK\').3x(6A);k.1v.8m=1b;if(6B)k(\'#dg\').3x(k.1v.M.d8+\' \'+(4u+1)+\' \'+k.1v.M.dc+\' \'+6B);if(4G){aX.K(0).53=u(){q.5B();k.1v.26(S,4G);E I}}if(4M){aO.K(0).53=u(){q.5B();k.1v.26(S,4M);E I}}2b.1Y();82=k.1a.2o(1Z.K(0));56=18.3r(82.1C,2b.K(0).Z+k.1v.M.2E*2);6f=18.3r(82.hb,2b.K(0).W+k.1v.M.2E*2);2b.B({O:(56-2b.K(0).Z)/2+\'U\',Q:(6f-2b.K(0).W)/2+\'U\'});1Z.B({Z:56+\'U\',W:6f+\'U\'}).1Y();dw=k.1a.bm();6F.B(\'Q\',3O.t+(dw.h/15)+\'U\');if(6F.B(\'19\')==\'1o\'){6F.1Y().7f(k.1v.M.3W)}6k=12 9s;k(6k).1p(\'id\',\'cW\').1J(\'hJ\',u(){56=6k.Z+k.1v.M.2E*2;6f=6k.W+k.1v.M.2E*2;2b.2G();1Z.5w({W:6f},82.hb!=6f?k.1v.M.3W:1,u(){1Z.5w({Z:56},82.1C!=56?k.1v.M.3W:1,u(){1Z.bG(6k);k(6k).B({Y:\'1P\',O:k.1v.M.2E+\'U\',Q:k.1v.M.2E+\'U\'}).7f(k.1v.M.3W,u(){db=k.1a.2o(7m.K(0));if(4G){aX.B({O:k.1v.M.2E+\'U\',Q:k.1v.M.2E+\'U\',Z:56/2-k.1v.M.2E*3+\'U\',W:6f-k.1v.M.2E*2+\'U\'}).1Y()}if(4M){aO.B({O:56/2+k.1v.M.2E*2+\'U\',Q:k.1v.M.2E+\'U\',Z:56/2-k.1v.M.2E*3+\'U\',W:6f-k.1v.M.2E*2+\'U\'}).1Y()}7m.B({Z:56+\'U\',Q:-db.hb+\'U\',3n:\'dd\'}).5w({Q:-1},k.1v.M.3W,u(){k.1v.8m=I})})})})});6k.2J=89},au:u(){k(\'#cW\').bk();k(\'#ao\').2G();k(\'#cM\').B(\'3n\',\'2K\');k(\'#cP\').fX(cO,0,u(){k(q).2G();if(k.3a.4t){k(\'#cN\').2G()}});k(\'#87\').K(0).53=S;k(\'#88\').K(0).53=S;k.1v.6j=S;k.1v.8k=I;k.1v.8m=I;E I}};k.R={1A:S,41:S,F:S,1s:S,1q:S,Y:S,9a:u(e){k.R.F=(q.d0)?q.d0:q;k.R.1s=k.1a.4a(e);k.R.1q={Z:T(k(k.R.F).B(\'Z\'))||0,W:T(k(k.R.F).B(\'W\'))||0};k.R.Y={Q:T(k(k.R.F).B(\'Q\'))||0,O:T(k(k.R.F).B(\'O\'))||0};k(1h).1J(\'3D\',k.R.cR).1J(\'5P\',k.R.cK);if(2g k.R.F.1k.g2===\'u\'){k.R.F.1k.g2.1D(k.R.F)}E I},cK:u(e){k(1h).3q(\'3D\',k.R.cR).3q(\'5P\',k.R.cK);if(2g k.R.F.1k.fN===\'u\'){k.R.F.1k.fN.1D(k.R.F)}k.R.F=S},cR:u(e){if(!k.R.F){E}1s=k.1a.4a(e);7p=k.R.Y.Q-k.R.1s.y+1s.y;7r=k.R.Y.O-k.R.1s.x+1s.x;7p=18.3r(18.3L(7p,k.R.F.1k.8g-k.R.1q.W),k.R.F.1k.7h);7r=18.3r(18.3L(7r,k.R.F.1k.8h-k.R.1q.Z),k.R.F.1k.70);if(2g k.R.F.1k.4m===\'u\'){D 8a=k.R.F.1k.4m.1D(k.R.F,[7r,7p]);if(2g 8a==\'hh\'&&8a.1g==2){7r=8a[0];7p=8a[1]}}k.R.F.14.Q=7p+\'U\';k.R.F.14.O=7r+\'U\';E I},26:u(e){k(1h).1J(\'3D\',k.R.8j).1J(\'5P\',k.R.8o);k.R.1A=q.1A;k.R.41=q.41;k.R.1s=k.1a.4a(e);k.R.1q={Z:T(k(q.1A).B(\'Z\'))||0,W:T(k(q.1A).B(\'W\'))||0};k.R.Y={Q:T(k(q.1A).B(\'Q\'))||0,O:T(k(q.1A).B(\'O\'))||0};if(k.R.1A.1k.4o){k.R.1A.1k.4o.1D(k.R.1A,[q])}E I},8o:u(){k(1h).3q(\'3D\',k.R.8j).3q(\'5P\',k.R.8o);if(k.R.1A.1k.3T){k.R.1A.1k.3T.1D(k.R.1A,[k.R.41])}k.R.1A=S;k.R.41=S},6i:u(dx,az){E 18.3L(18.3r(k.R.1q.Z+dx*az,k.R.1A.1k.av),k.R.1A.1k.6x)},6m:u(dy,az){E 18.3L(18.3r(k.R.1q.W+dy*az,k.R.1A.1k.8c),k.R.1A.1k.8b)},fb:u(W){E 18.3L(18.3r(W,k.R.1A.1k.8c),k.R.1A.1k.8b)},8j:u(e){if(k.R.1A==S){E}1s=k.1a.4a(e);dx=1s.x-k.R.1s.x;dy=1s.y-k.R.1s.y;1I={Z:k.R.1q.Z,W:k.R.1q.W};2z={Q:k.R.Y.Q,O:k.R.Y.O};3m(k.R.41){1e\'e\':1I.Z=k.R.6i(dx,1);1r;1e\'fj\':1I.Z=k.R.6i(dx,1);1I.W=k.R.6m(dy,1);1r;1e\'w\':1I.Z=k.R.6i(dx,-1);2z.O=k.R.Y.O-1I.Z+k.R.1q.Z;1r;1e\'5F\':1I.Z=k.R.6i(dx,-1);2z.O=k.R.Y.O-1I.Z+k.R.1q.Z;1I.W=k.R.6m(dy,1);1r;1e\'76\':1I.W=k.R.6m(dy,-1);2z.Q=k.R.Y.Q-1I.W+k.R.1q.W;1I.Z=k.R.6i(dx,-1);2z.O=k.R.Y.O-1I.Z+k.R.1q.Z;1r;1e\'n\':1I.W=k.R.6m(dy,-1);2z.Q=k.R.Y.Q-1I.W+k.R.1q.W;1r;1e\'at\':1I.W=k.R.6m(dy,-1);2z.Q=k.R.Y.Q-1I.W+k.R.1q.W;1I.Z=k.R.6i(dx,1);1r;1e\'s\':1I.W=k.R.6m(dy,1);1r}if(k.R.1A.1k.4v){if(k.R.41==\'n\'||k.R.41==\'s\')4p=1I.W*k.R.1A.1k.4v;P 4p=1I.Z;4W=k.R.fb(4p*k.R.1A.1k.4v);4p=4W/k.R.1A.1k.4v;3m(k.R.41){1e\'n\':1e\'76\':1e\'at\':2z.Q+=1I.W-4W;1r}3m(k.R.41){1e\'76\':1e\'w\':1e\'5F\':2z.O+=1I.Z-4p;1r}1I.W=4W;1I.Z=4p}if(2z.Qk.R.1A.1k.8g){1I.W=k.R.1A.1k.8g-2z.Q;if(k.R.1A.1k.4v){1I.Z=1I.W/k.R.1A.1k.4v}}if(2z.O+1I.Z>k.R.1A.1k.8h){1I.Z=k.R.1A.1k.8h-2z.O;if(k.R.1A.1k.4v){1I.W=1I.Z*k.R.1A.1k.4v}}D 6p=I;if(k.R.1A.1k.f7){6p=k.R.1A.1k.f7.1D(k.R.1A,[1I,2z]);if(6p){if(6p.1q){k.23(1I,6p.1q)}if(6p.Y){k.23(2z,6p.Y)}}}8d=k.R.1A.14;8d.O=2z.O+\'U\';8d.Q=2z.Q+\'U\';8d.Z=1I.Z+\'U\';8d.W=1I.W+\'U\';E I},2r:u(M){if(!M||!M.3Z||M.3Z.1K!=7M){E}E q.1E(u(){D el=q;el.1k=M;el.1k.av=M.av||10;el.1k.8c=M.8c||10;el.1k.6x=M.6x||6P;el.1k.8b=M.8b||6P;el.1k.7h=M.7h||-aC;el.1k.70=M.70||-aC;el.1k.8h=M.8h||6P;el.1k.8g=M.8g||6P;d6=k(el).B(\'Y\');if(!(d6==\'2s\'||d6==\'1P\')){el.14.Y=\'2s\'}fS=/n|at|e|fj|s|5F|w|76/g;24(i in el.1k.3Z){if(i.6c().d5(fS)!=S){if(el.1k.3Z[i].1K==b0){3v=k(el.1k.3Z[i]);if(3v.1N()>0){el.1k.3Z[i]=3v.K(0)}}if(el.1k.3Z[i].4Y){el.1k.3Z[i].1A=el;el.1k.3Z[i].41=i;k(el.1k.3Z[i]).1J(\'5v\',k.R.26)}}}if(el.1k.5S){if(2g el.1k.5S===\'4V\'){aV=k(el.1k.5S);if(aV.1N()>0){aV.1E(u(){q.d0=el});aV.1J(\'5v\',k.R.9a)}}P if(el.1k.5S==1b){k(q).1J(\'5v\',k.R.9a)}}})},4U:u(){E q.1E(u(){D el=q;24(i in el.1k.3Z){el.1k.3Z[i].1A=S;el.1k.3Z[i].41=S;k(el.1k.3Z[i]).3q(\'5v\',k.R.26)}if(el.1k.5S){if(2g el.1k.5S===\'4V\'){3v=k(el.1k.5S);if(3v.1N()>0){3v.3q(\'5v\',k.R.9a)}}P if(el.1k.5S==1b){k(q).3q(\'5v\',k.R.9a)}}el.1k=S})}};k.fn.23({hz:k.R.2r,hs:k.R.4U});k.2C=S;k.7n=I;k.3k=S;k.7o=[];k.9v=u(e){D 3K=e.7L||e.7K||-1;if(3K==17||3K==16){k.7n=1b}};k.9u=u(e){k.7n=I};k.dL=u(e){q.f.1s=k.1a.4a(e);q.f.1M=k.23(k.1a.3w(q),k.1a.2o(q));q.f.3e=k.1a.6z(q);q.f.1s.x-=q.f.1M.x;q.f.1s.y-=q.f.1M.y;k(q).1S(k.2C.K(0));if(q.f.hc)k.2C.2R(q.f.hc).B(\'19\',\'2B\');k.2C.B({19:\'2B\',Z:\'2P\',W:\'2P\'});if(q.f.o){k.2C.B(\'1G\',q.f.o)}k.3k=q;k.96=I;k.7o=[];q.f.el.1E(u(){q.1M={x:q.8t+(q.4Z&&!k.3a.7I?T(q.4Z.5b)||0:0)+(k.3k.3c||0),y:q.8G+(q.4Z&&!k.3a.7I?T(q.4Z.4S)||0:0)+(k.3k.3d||0),1C:q.4c,hb:q.5W};if(q.s==1b){if(k.7n==I){q.s=I;k(q).4i(k.3k.f.7j)}P{k.96=1b;k.7o[k.7o.1g]=k.1p(q,\'id\')}}});k.am.1D(q,[e]);k(1h).1J(\'3D\',k.am).1J(\'5P\',k.cX);E I};k.am=u(e){if(!k.3k)E;k.fd.1D(k.3k,[e])};k.fd=u(e){if(!k.3k)E;D 1s=k.1a.4a(e);D 3e=k.1a.6z(k.3k);1s.x+=3e.l-q.f.3e.l-q.f.1M.x;1s.y+=3e.t-q.f.3e.t-q.f.1M.y;D 93=18.3L(1s.x,q.f.1s.x);D 5F=18.3L(18.3S(1s.x-q.f.1s.x),18.3S(q.f.3e.w-93));D 99=18.3L(1s.y,q.f.1s.y);D 9g=18.3L(18.3S(1s.y-q.f.1s.y),18.3S(q.f.3e.h-99));if(q.3d>0&&1s.y-20q.3d+q.f.1M.h){D 3X=18.3L(q.f.3e.h-q.3d,10);q.3d+=3X;if(q.3d!=3e.t)9g+=3X}if(q.3c>0&&1s.x-20q.3c+q.f.1M.w){D 3X=18.3L(q.f.3e.w-q.3c,10);q.3c+=3X;if(q.3c!=3e.l)5F+=3X}k.2C.B({O:93+\'U\',Q:99+\'U\',Z:5F+\'U\',W:9g+\'U\'});k.2C.l=93+q.f.3e.l;k.2C.t=99+q.f.3e.t;k.2C.r=k.2C.l+5F;k.2C.b=k.2C.t+9g;k.96=I;q.f.el.1E(u(){aw=k.7o.3J(k.1p(q,\'id\'));if(!(q.1M.x>k.2C.r||(q.1M.x+q.1M.1C)k.2C.b||(q.1M.y+q.1M.hb)0){h+=\'&\'}h+=s+\'[]=\'+k.1p(q,\'id\');o[o.1g]=k.1p(q,\'id\')}})}E{7l:h,o:o}};k.fn.gZ=u(o){if(!k.2C){k(\'2e\',1h).1S(\'<22 id="2C">22>\').1J(\'7B\',k.9v).1J(\'6y\',k.9u);k.2C=k(\'#2C\');k.2C.B({Y:\'1P\',19:\'1o\'});if(1X.2k){k(\'2e\',1h).1J(\'7B\',k.9v).1J(\'6y\',k.9u)}P{k(1h).1J(\'7B\',k.9v).1J(\'6y\',k.9u)}}if(!o){o={}}E q.1E(u(){if(q.eP)E;q.eP=1b;q.f={a:o.3C,o:o.1G?2m(o.1G):I,7j:o.eS?o.eS:I,hc:o.58?o.58:I,98:o.98?o.98:I,9d:o.9d?o.9d:I};q.f.el=k(\'.\'+o.3C);k(q).1J(\'5v\',k.dL).B(\'Y\',\'2s\')})};k.3b={bM:1,eH:u(3t){D 3t=3t;E q.1E(u(){q.4z.6s.1E(u(ab){k.3b.5c(q,3t[ab])})})},K:u(){D 3t=[];q.1E(u(cL){if(q.bI){3t[cL]=[];D C=q;D 1q=k.1a.2o(q);q.4z.6s.1E(u(ab){D x=q.8t;D y=q.8G;92=T(x*2a/(1q.w-q.4c));91=T(y*2a/(1q.h-q.5W));3t[cL][ab]=[92||0,91||0,x||0,y||0]})}});E 3t},ct:u(C){C.A.fu=C.A.28.w-C.A.1B.1C;C.A.fw=C.A.28.h-C.A.1B.hb;if(C.9r.4z.bC){9Z=C.9r.4z.6s.K(C.bF+1);if(9Z){C.A.28.w=(T(k(9Z).B(\'O\'))||0)+C.A.1B.1C;C.A.28.h=(T(k(9Z).B(\'Q\'))||0)+C.A.1B.hb}9Q=C.9r.4z.6s.K(C.bF-1);if(9Q){D cU=T(k(9Q).B(\'O\'))||0;D cH=T(k(9Q).B(\'O\'))||0;C.A.28.x+=cU;C.A.28.y+=cH;C.A.28.w-=cU;C.A.28.h-=cH}}C.A.g7=C.A.28.w-C.A.1B.1C;C.A.eC=C.A.28.h-C.A.1B.hb;if(C.A.2O){C.A.gx=((C.A.28.w-C.A.1B.1C)/C.A.2O)||1;C.A.gy=((C.A.28.h-C.A.1B.hb)/C.A.2O)||1;C.A.fU=C.A.g7/C.A.2O;C.A.fH=C.A.eC/C.A.2O}C.A.28.dx=C.A.28.x-C.A.2c.x;C.A.28.dy=C.A.28.y-C.A.2c.y;k.11.1c.B(\'9b\',\'ad\')},3H:u(C,x,y){if(C.A.2O){fE=T(x/C.A.fU);92=fE*2a/C.A.2O;ft=T(y/C.A.fH);91=ft*2a/C.A.2O}P{92=T(x*2a/C.A.fu);91=T(y*2a/C.A.fw)}C.A.b3=[92||0,91||0,x||0,y||0];if(C.A.3H)C.A.3H.1D(C,C.A.b3)},eI:u(2k){3K=2k.7L||2k.7K||-1;3m(3K){1e 35:k.3b.5c(q.3U,[ae,ae]);1r;1e 36:k.3b.5c(q.3U,[-ae,-ae]);1r;1e 37:k.3b.5c(q.3U,[-q.3U.A.gx||-1,0]);1r;1e 38:k.3b.5c(q.3U,[0,-q.3U.A.gy||-1]);1r;1e 39:k.3b.5c(q.3U,[q.3U.A.gx||1,0]);1r;1e 40:k.11.5c(q.3U,[0,q.3U.A.gy||1]);1r}},5c:u(C,Y){if(!C.A){E}C.A.1B=k.23(k.1a.3w(C),k.1a.2o(C));C.A.2c={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};C.A.4n=k.B(C,\'Y\');if(C.A.4n!=\'2s\'&&C.A.4n!=\'1P\'){C.14.Y=\'2s\'}k.11.c5(C);k.3b.ct(C);dx=T(Y[0])||0;dy=T(Y[1])||0;2v=C.A.2c.x+dx;2q=C.A.2c.y+dy;if(C.A.2O){3y=k.11.c7.1D(C,[2v,2q,dx,dy]);if(3y.1K==7M){dx=3y.dx;dy=3y.dy}2v=C.A.2c.x+dx;2q=C.A.2c.y+dy}3y=k.11.ce.1D(C,[2v,2q,dx,dy]);if(3y&&3y.1K==7M){dx=3y.dx;dy=3y.dy}2v=C.A.2c.x+dx;2q=C.A.2c.y+dy;if(C.A.5i&&(C.A.3H||C.A.2Z)){k.3b.3H(C,2v,2q)}2v=!C.A.1O||C.A.1O==\'4j\'?2v:C.A.2c.x||0;2q=!C.A.1O||C.A.1O==\'49\'?2q:C.A.2c.y||0;C.14.O=2v+\'U\';C.14.Q=2q+\'U\'},2r:u(o){E q.1E(u(){if(q.bI==1b||!o.3C||!k.1a||!k.11||!k.1x){E}5x=k(o.3C,q);if(5x.1N()==0){E}D 4N={2p:\'94\',5i:1b,3H:o.3H&&o.3H.1K==2A?o.3H:S,2Z:o.2Z&&o.2Z.1K==2A?o.2Z:S,3v:q,1G:o.1G||I};if(o.2O&&T(o.2O)){4N.2O=T(o.2O)||1;4N.2O=4N.2O>0?4N.2O:1}if(5x.1N()==1)5x.7t(4N);P{k(5x.K(0)).7t(4N);4N.3v=S;5x.7t(4N)}5x.7B(k.3b.eI);5x.1p(\'bM\',k.3b.bM++);q.bI=1b;q.4z={};q.4z.er=4N.er;q.4z.2O=4N.2O;q.4z.6s=5x;q.4z.bC=o.bC?1b:I;bZ=q;bZ.4z.6s.1E(u(2N){q.bF=2N;q.9r=bZ});if(o.3t&&o.3t.1K==7F){24(i=o.3t.1g-1;i>=0;i--){if(o.3t[i].1K==7F&&o.3t[i].1g==2){el=q.4z.6s.K(i);if(el.4Y){k.3b.5c(el,o.3t[i])}}}}})}};k.fn.23({hN:k.3b.2r,hS:k.3b.eH,hG:k.3b.K});k.2u={5I:[],eg:u(){q.5B();X=q.31;id=k.1p(X,\'id\');if(k.2u.5I[id]!=S){1X.5T(k.2u.5I[id])}1z=X.L.3u+1;if(X.L.1Q.1g<1z){1z=1}1Q=k(\'1T\',X.L.5u);X.L.3u=1z;if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}},dp:u(){q.5B();X=q.31;id=k.1p(X,\'id\');if(k.2u.5I[id]!=S){1X.5T(k.2u.5I[id])}1z=X.L.3u-1;1Q=k(\'1T\',X.L.5u);if(1z<1){1z=X.L.1Q.1g}X.L.3u=1z;if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}},2I:u(c){X=1h.9e(c);if(X.L.6o){1z=X.L.3u;7d(1z==X.L.3u){1z=1+T(18.6o()*X.L.1Q.1g)}}P{1z=X.L.3u+1;if(X.L.1Q.1g<1z){1z=1}}1Q=k(\'1T\',X.L.5u);X.L.3u=1z;if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}},go:u(o){D X;if(o&&o.1K==7M){if(o.2b){X=1h.9e(o.2b.X);5N=1X.hn.3h.7C("#");o.2b.6S=S;if(5N.1g==2){1z=T(5N[1]);1Y=5N[1].4E(1z,\'\');if(k.1p(X,\'id\')!=1Y){1z=1}}P{1z=1}}if(o.90){o.90.5B();X=o.90.31.31;id=k.1p(X,\'id\');if(k.2u.5I[id]!=S){1X.5T(k.2u.5I[id])}5N=o.90.3h.7C("#");1z=T(5N[1]);1Y=5N[1].4E(1z,\'\');if(k.1p(X,\'id\')!=1Y){1z=1}}if(X.L.1Q.1g<1z||1z<1){1z=1}X.L.3u=1z;52=k.1a.2o(X);dt=k.1a.aT(X);d9=k.1a.6U(X);if(X.L.3z){X.L.3z.o.B(\'19\',\'1o\')}if(X.L.3s){X.L.3s.o.B(\'19\',\'1o\')}if(X.L.2b){y=T(dt.t)+T(d9.t);if(X.L.1U){if(X.L.1U.5A==\'Q\'){y+=X.L.1U.4C.hb}P{52.h-=X.L.1U.4C.hb}}if(X.L.2x){if(X.L.2x&&X.L.2x.6Q==\'Q\'){y+=X.L.2x.4C.hb}P{52.h-=X.L.2x.4C.hb}}if(!X.L.c1){X.L.df=o.2b?o.2b.W:(T(X.L.2b.B(\'W\'))||0);X.L.c1=o.2b?o.2b.Z:(T(X.L.2b.B(\'Z\'))||0)}X.L.2b.B(\'Q\',y+(52.h-X.L.df)/2+\'U\');X.L.2b.B(\'O\',(52.1C-X.L.c1)/2+\'U\');X.L.2b.B(\'19\',\'2B\')}1Q=k(\'1T\',X.L.5u);if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}P{aj=k(\'a\',X.L.1U.o).K(1z-1);k(aj).2R(X.L.1U.5R);D 1T=12 9s();1T.X=k.1p(X,\'id\');1T.1z=1z-1;1T.2J=X.L.1Q[X.L.3u-1].2J;if(1T.21){1T.6S=S;k.2u.19.1D(1T)}P{1T.6S=k.2u.19}if(X.L.2x){X.L.2x.o.3x(X.L.1Q[1z-1].6L)}}}},95:u(){X=q.31.31;X.L.5u.B(\'19\',\'1o\');if(X.L.1U.5R){aj=k(\'a\',X.L.1U.o).4i(X.L.1U.5R).K(X.L.3u-1);k(aj).2R(X.L.1U.5R)}D 1T=12 9s();1T.X=k.1p(X,\'id\');1T.1z=X.L.3u-1;1T.2J=X.L.1Q[X.L.3u-1].2J;if(1T.21){1T.6S=S;k.2u.19.1D(1T)}P{1T.6S=k.2u.19}if(X.L.2x){X.L.2x.o.3x(X.L.1Q[X.L.3u-1].6L)}},19:u(){X=1h.9e(q.X);if(X.L.3z){X.L.3z.o.B(\'19\',\'1o\')}if(X.L.3s){X.L.3s.o.B(\'19\',\'1o\')}52=k.1a.2o(X);y=0;if(X.L.1U){if(X.L.1U.5A==\'Q\'){y+=X.L.1U.4C.hb}P{52.h-=X.L.1U.4C.hb}}if(X.L.2x){if(X.L.2x&&X.L.2x.6Q==\'Q\'){y+=X.L.2x.4C.hb}P{52.h-=X.L.2x.4C.hb}}hg=k(\'.ca\',X);y=y+(52.h-q.W)/2;x=(52.1C-q.Z)/2;X.L.5u.B(\'Q\',y+\'U\').B(\'O\',x+\'U\').3x(\'<1T 2J="\'+q.2J+\'" />\');X.L.5u.7f(X.L.3W);3s=X.L.3u+1;if(3s>X.L.1Q.1g){3s=1}3z=X.L.3u-1;if(3z<1){3z=X.L.1Q.1g}X.L.3s.o.B(\'19\',\'2B\').B(\'Q\',y+\'U\').B(\'O\',x+2*q.Z/3+\'U\').B(\'Z\',q.Z/3+\'U\').B(\'W\',q.W+\'U\').1p(\'4g\',X.L.1Q[3s-1].6L);X.L.3s.o.K(0).3h=\'#\'+3s+k.1p(X,\'id\');X.L.3z.o.B(\'19\',\'2B\').B(\'Q\',y+\'U\').B(\'O\',x+\'U\').B(\'Z\',q.Z/3+\'U\').B(\'W\',q.W+\'U\').1p(\'4g\',X.L.1Q[3z-1].6L);X.L.3z.o.K(0).3h=\'#\'+3z+k.1p(X,\'id\')},2r:u(o){if(!o||!o.1Z||k.2u.5I[o.1Z])E;D 1Z=k(\'#\'+o.1Z);D el=1Z.K(0);if(el.14.Y!=\'1P\'&&el.14.Y!=\'2s\'){el.14.Y=\'2s\'}el.14.2U=\'2K\';if(1Z.1N()==0)E;el.L={};el.L.1Q=o.1Q?o.1Q:[];el.L.6o=o.6o&&o.6o==1b||I;97=el.f3(\'hL\');24(i=0;i<97.1g;i++){7Z=el.L.1Q.1g;el.L.1Q[7Z]={2J:97[i].2J,6L:97[i].4g||97[i].hD||\'\'}}if(el.L.1Q.1g==0){E}el.L.4n=k.23(k.1a.3w(el),k.1a.2o(el));el.L.b5=k.1a.aT(el);el.L.bu=k.1a.6U(el);t=T(el.L.b5.t)+T(el.L.bu.t);b=T(el.L.b5.b)+T(el.L.bu.b);k(\'1T\',el).bk();el.L.3W=o.3W?o.3W:g5;if(o.5A||o.9f||o.5R){el.L.1U={};1Z.1S(\'<22 6T="g1">22>\');el.L.1U.o=k(\'.g1\',el);if(o.9f){el.L.1U.9f=o.9f;el.L.1U.o.2R(o.9f)}if(o.5R){el.L.1U.5R=o.5R}el.L.1U.o.B(\'Y\',\'1P\').B(\'Z\',el.L.4n.w+\'U\');if(o.5A&&o.5A==\'Q\'){el.L.1U.5A=\'Q\';el.L.1U.o.B(\'Q\',t+\'U\')}P{el.L.1U.5A=\'4D\';el.L.1U.o.B(\'4D\',b+\'U\')}el.L.1U.aE=o.aE?o.aE:\' \';24(D i=0;i\'+7Z+\'\'+(7Z!=el.L.1Q.1g?el.L.1U.aE:\'\'))}k(\'a\',el.L.1U.o).1J(\'5h\',u(){k.2u.go({90:q})});el.L.1U.4C=k.1a.2o(el.L.1U.o.K(0))}if(o.6Q||o.9c){el.L.2x={};1Z.1S(\'<22 6T="dn">&7k;22>\');el.L.2x.o=k(\'.dn\',el);if(o.9c){el.L.2x.9c=o.9c;el.L.2x.o.2R(o.9c)}el.L.2x.o.B(\'Y\',\'1P\').B(\'Z\',el.L.4n.w+\'U\');if(o.6Q&&o.6Q==\'Q\'){el.L.2x.6Q=\'Q\';el.L.2x.o.B(\'Q\',(el.L.1U&&el.L.1U.5A==\'Q\'?el.L.1U.4C.hb+t:t)+\'U\')}P{el.L.2x.6Q=\'4D\';el.L.2x.o.B(\'4D\',(el.L.1U&&el.L.1U.5A==\'4D\'?el.L.1U.4C.hb+b:b)+\'U\')}el.L.2x.4C=k.1a.2o(el.L.2x.o.K(0))}if(o.9D){el.L.3s={9D:o.9D};1Z.1S(\'&7k;\');el.L.3s.o=k(\'.eY\',el);el.L.3s.o.B(\'Y\',\'1P\').B(\'19\',\'1o\').B(\'2U\',\'2K\').B(\'4A\',\'eR\').2R(el.L.3s.9D);el.L.3s.o.1J(\'5h\',k.2u.eg)}if(o.9o){el.L.3z={9o:o.9o};1Z.1S(\'&7k;\');el.L.3z.o=k(\'.ee\',el);el.L.3z.o.B(\'Y\',\'1P\').B(\'19\',\'1o\').B(\'2U\',\'2K\').B(\'4A\',\'eR\').2R(el.L.3z.9o);el.L.3z.o.1J(\'5h\',k.2u.dp)}1Z.bG(\'<22 6T="ca">22>\');el.L.5u=k(\'.ca\',el);el.L.5u.B(\'Y\',\'1P\').B(\'Q\',\'2P\').B(\'O\',\'2P\').B(\'19\',\'1o\');if(o.2b){1Z.bG(\'<22 6T="dW" 14="19: 1o;"><1T 2J="\'+o.2b+\'" />22>\');el.L.2b=k(\'.dW\',el);el.L.2b.B(\'Y\',\'1P\');D 1T=12 9s();1T.X=o.1Z;1T.2J=o.2b;if(1T.21){1T.6S=S;k.2u.go({2b:1T})}P{1T.6S=u(){k.2u.go({2b:q})}}}P{k.2u.go({1Z:el})}if(o.cS){fi=T(o.cS)*aC}k.2u.5I[o.1Z]=o.cS?1X.6V(\'k.2u.2I(\\\'\'+o.1Z+\'\\\')\',fi):S}};k.X=k.2u.2r;k.1t={7s:[],5L:{},1c:I,7u:S,26:u(){if(k.11.F==S){E}D 4O,3G,c,cs;k.1t.1c.K(0).3l=k.11.F.A.6R;4O=k.1t.1c.K(0).14;4O.19=\'2B\';k.1t.1c.1B=k.23(k.1a.3w(k.1t.1c.K(0)),k.1a.2o(k.1t.1c.K(0)));4O.Z=k.11.F.A.1B.1C+\'U\';4O.W=k.11.F.A.1B.hb+\'U\';3G=k.1a.cy(k.11.F);4O.5K=3G.t;4O.5z=3G.r;4O.5k=3G.b;4O.5j=3G.l;if(k.11.F.A.46==1b){c=k.11.F.fI(1b);cs=c.14;cs.5K=\'2P\';cs.5z=\'2P\';cs.5k=\'2P\';cs.5j=\'2P\';cs.19=\'2B\';k.1t.1c.5o().1S(c)}k(k.11.F).f5(k.1t.1c.K(0));k.11.F.14.19=\'1o\'},fC:u(e){if(!e.A.44&&k.1x.5r.cQ){if(e.A.3T)e.A.3T.1D(F);k(e).B(\'Y\',e.A.cz||e.A.4n);k(e).aS();k(k.1x.5r).f6(e)}k.1t.1c.4i(e.A.6R).3x(\'&7k;\');k.1t.7u=S;D 4O=k.1t.1c.K(0).14;4O.19=\'1o\';k.1t.1c.f5(e);if(e.A.fx>0){k(e).7f(e.A.fx)}k(\'2e\').1S(k.1t.1c.K(0));D 86=[];D 8q=I;24(D i=0;i0){8q(86)}},al:u(e,o){if(!k.11.F)E;D 6e=I;D i=0;if(e.1i.el.1N()>0){24(i=e.1i.el.1N();i>0;i--){if(e.1i.el.K(i-1)!=k.11.F){if(!e.5V.b2){if((e.1i.el.K(i-1).1M.y+e.1i.el.K(i-1).1M.hb/2)>k.11.F.A.2q){6e=e.1i.el.K(i-1)}P{1r}}P{if((e.1i.el.K(i-1).1M.x+e.1i.el.K(i-1).1M.1C/2)>k.11.F.A.2v&&(e.1i.el.K(i-1).1M.y+e.1i.el.K(i-1).1M.hb/2)>k.11.F.A.2q){6e=e.1i.el.K(i-1)}}}}}if(6e&&k.1t.7u!=6e){k.1t.7u=6e;k(6e).h5(k.1t.1c.K(0))}P if(!6e&&(k.1t.7u!=S||k.1t.1c.K(0).31!=e)){k.1t.7u=S;k(e).1S(k.1t.1c.K(0))}k.1t.1c.K(0).14.19=\'2B\'},cT:u(e){if(k.11.F==S){E}e.1i.el.1E(u(){q.1M=k.23(k.1a.74(q),k.1a.7G(q))})},8x:u(s){D i;D h=\'\';D o={};if(s){if(k.1t.5L[s]){o[s]=[];k(\'#\'+s+\' .\'+k.1t.5L[s]).1E(u(){if(h.1g>0){h+=\'&\'}h+=s+\'[]=\'+k.1p(q,\'id\');o[s][o[s].1g]=k.1p(q,\'id\')})}P{24(a in s){if(k.1t.5L[s[a]]){o[s[a]]=[];k(\'#\'+s[a]+\' .\'+k.1t.5L[s[a]]).1E(u(){if(h.1g>0){h+=\'&\'}h+=s[a]+\'[]=\'+k.1p(q,\'id\');o[s[a]][o[s[a]].1g]=k.1p(q,\'id\')})}}}}P{24(i in k.1t.5L){o[i]=[];k(\'#\'+i+\' .\'+k.1t.5L[i]).1E(u(){if(h.1g>0){h+=\'&\'}h+=i+\'[]=\'+k.1p(q,\'id\');o[i][o[i].1g]=k.1p(q,\'id\')})}}E{7l:h,o:o}},fF:u(e){if(!e.dq){E}E q.1E(u(){if(!q.5V||!k(e).is(\'.\'+q.5V.3C))k(e).2R(q.5V.3C);k(e).7t(q.5V.A)})},4U:u(){E q.1E(u(){k(\'.\'+q.5V.3C).aS();k(q).dR();q.5V=S;q.fm=S})},2r:u(o){if(o.3C&&k.1a&&k.11&&k.1x){if(!k.1t.1c){k(\'2e\',1h).1S(\'<22 id="e5">&7k;22>\');k.1t.1c=k(\'#e5\');k.1t.1c.K(0).14.19=\'1o\'}q.do({3C:o.3C,9J:o.9J?o.9J:I,a5:o.a5?o.a5:I,58:o.58?o.58:I,7x:o.7x||o.dC,7y:o.7y||o.fO,cQ:1b,2Z:o.2Z||o.ia,fx:o.fx?o.fx:I,46:o.46?1b:I,6I:o.6I?o.6I:\'cV\'});E q.1E(u(){D A={6N:o.6N?1b:I,ff:6P,1G:o.1G?2m(o.1G):I,6R:o.58?o.58:I,fx:o.fx?o.fx:I,44:1b,46:o.46?1b:I,3v:o.3v?o.3v:S,2p:o.2p?o.2p:S,4o:o.4o&&o.4o.1K==2A?o.4o:I,4m:o.4m&&o.4m.1K==2A?o.4m:I,3T:o.3T&&o.3T.1K==2A?o.3T:I,1O:/49|4j/.48(o.1O)?o.1O:I,6M:o.6M?T(o.6M)||0:I,2V:o.2V?o.2V:I};k(\'.\'+o.3C,q).7t(A);q.fm=1b;q.5V={3C:o.3C,6N:o.6N?1b:I,ff:6P,1G:o.1G?2m(o.1G):I,6R:o.58?o.58:I,fx:o.fx?o.fx:I,44:1b,46:o.46?1b:I,3v:o.3v?o.3v:S,2p:o.2p?o.2p:S,b2:o.b2?1b:I,A:A}})}}};k.fn.23({j3:k.1t.2r,f6:k.1t.fF,iS:k.1t.4U});k.iZ=k.1t.8x;k.2t={6O:S,7b:I,9m:S,6K:u(e){k.2t.7b=1b;k.2t.1Y(e,q,1b)},cq:u(e){if(k.2t.6O!=q)E;k.2t.7b=I;k.2t.2G(e,q)},1Y:u(e,el,7b){if(k.2t.6O!=S)E;if(!el){el=q}k.2t.6O=el;1M=k.23(k.1a.3w(el),k.1a.2o(el));8u=k(el);4g=8u.1p(\'4g\');3h=8u.1p(\'3h\');if(4g){k.2t.9m=4g;8u.1p(\'4g\',\'\');k(\'#eT\').3x(4g);if(3h)k(\'#bL\').3x(3h.4E(\'jh://\',\'\'));P k(\'#bL\').3x(\'\');1c=k(\'#8z\');if(el.4H.3l){1c.K(0).3l=el.4H.3l}P{1c.K(0).3l=\'\'}bo=k.1a.2o(1c.K(0));ga=7b&&el.4H.Y==\'bO\'?\'4D\':el.4H.Y;3m(ga){1e\'Q\':2q=1M.y-bo.hb;2v=1M.x;1r;1e\'O\':2q=1M.y;2v=1M.x-bo.1C;1r;1e\'2L\':2q=1M.y;2v=1M.x+1M.1C;1r;1e\'bO\':k(\'2e\').1J(\'3D\',k.2t.3D);1s=k.1a.4a(e);2q=1s.y+15;2v=1s.x+15;1r;ad:2q=1M.y+1M.hb;2v=1M.x;1r}1c.B({Q:2q+\'U\',O:2v+\'U\'});if(el.4H.54==I){1c.1Y()}P{1c.7f(el.4H.54)}if(el.4H.2Y)el.4H.2Y.1D(el);8u.1J(\'8B\',k.2t.2G).1J(\'5B\',k.2t.cq)}},3D:u(e){if(k.2t.6O==S){k(\'2e\').3q(\'3D\',k.2t.3D);E}1s=k.1a.4a(e);k(\'#8z\').B({Q:1s.y+15+\'U\',O:1s.x+15+\'U\'})},2G:u(e,el){if(!el){el=q}if(k.2t.7b!=1b&&k.2t.6O==el){k.2t.6O=S;k(\'#8z\').7a(1);k(el).1p(\'4g\',k.2t.9m).3q(\'8B\',k.2t.2G).3q(\'5B\',k.2t.cq);if(el.4H.3i)el.4H.3i.1D(el);k.2t.9m=S}},2r:u(M){if(!k.2t.1c){k(\'2e\').1S(\'<22 id="8z"><22 id="eT">22><22 id="bL">22>22>\');k(\'#8z\').B({Y:\'1P\',3I:6P,19:\'1o\'});k.2t.1c=1b}E q.1E(u(){if(k.1p(q,\'4g\')){q.4H={Y:/Q|4D|O|2L|bO/.48(M.Y)?M.Y:\'4D\',3l:M.3l?M.3l:I,54:M.54?M.54:I,2Y:M.2Y&&M.2Y.1K==2A?M.2Y:I,3i:M.3i&&M.3i.1K==2A?M.3i:I};D el=k(q);el.1J(\'9z\',k.2t.1Y);el.1J(\'6K\',k.2t.6K)}})}};k.fn.hO=k.2t.2r;k.84={bq:u(e){3K=e.7L||e.7K||-1;if(3K==9){if(1X.2k){1X.2k.bT=1b;1X.2k.c0=I}P{e.aP();e.aW()}if(q.b1){1h.6J.dZ().3g="\\t";q.dV=u(){q.6K();q.dV=S}}P if(q.aF){26=q.5q;2T=q.dN;q.2y=q.2y.hd(0,26)+"\\t"+q.2y.h8(2T);q.aF(26+1,26+1);q.6K()}E I}},4U:u(){E q.1E(u(){if(q.7P&&q.7P==1b){k(q).3q(\'7B\',k.84.bq);q.7P=I}})},2r:u(){E q.1E(u(){if(q.4Y==\'cf\'&&(!q.7P||q.7P==I)){k(q).1J(\'7B\',k.84.bq);q.7P=1b}})}};k.fn.23({j5:k.84.2r,hH:k.84.4U});k.1a={3w:u(e){D x=0;D y=0;D es=e.14;D bP=I;if(k(e).B(\'19\')==\'1o\'){D 5Y=es.3n;D 9q=es.Y;bP=1b;es.3n=\'2K\';es.19=\'2B\';es.Y=\'1P\'}D el=e;7d(el){x+=el.8t+(el.4Z&&!k.3a.7I?T(el.4Z.5b)||0:0);y+=el.8G+(el.4Z&&!k.3a.7I?T(el.4Z.4S)||0:0);el=el.dJ}el=e;7d(el&&el.4Y&&el.4Y.6c()!=\'2e\'){x-=el.3c||0;y-=el.3d||0;el=el.31}if(bP==1b){es.19=\'1o\';es.Y=9q;es.3n=5Y}E{x:x,y:y}},7G:u(el){D x=0,y=0;7d(el){x+=el.8t||0;y+=el.8G||0;el=el.dJ}E{x:x,y:y}},2o:u(e){D w=k.B(e,\'Z\');D h=k.B(e,\'W\');D 1C=0;D hb=0;D es=e.14;if(k(e).B(\'19\')!=\'1o\'){1C=e.4c;hb=e.5W}P{D 5Y=es.3n;D 9q=es.Y;es.3n=\'2K\';es.19=\'2B\';es.Y=\'1P\';1C=e.4c;hb=e.5W;es.19=\'1o\';es.Y=9q;es.3n=5Y}E{w:w,h:h,1C:1C,hb:hb}},74:u(el){E{1C:el.4c||0,hb:el.5W||0}},bm:u(e){D h,w,de;if(e){w=e.8W;h=e.8O}P{de=1h.5d;w=1X.d4||aa.d4||(de&&de.8W)||1h.2e.8W;h=1X.cB||aa.cB||(de&&de.8O)||1h.2e.8O}E{w:w,h:h}},6z:u(e){D t=0,l=0,w=0,h=0,iw=0,ih=0;if(e&&e.9N.6c()!=\'2e\'){t=e.3d;l=e.3c;w=e.d7;h=e.d2;iw=0;ih=0}P{if(1h.5d){t=1h.5d.3d;l=1h.5d.3c;w=1h.5d.d7;h=1h.5d.d2}P if(1h.2e){t=1h.2e.3d;l=1h.2e.3c;w=1h.2e.d7;h=1h.2e.d2}iw=aa.d4||1h.5d.8W||1h.2e.8W||0;ih=aa.cB||1h.5d.8O||1h.2e.8O||0}E{t:t,l:l,w:w,h:h,iw:iw,ih:ih}},cy:u(e,7N){D el=k(e);D t=el.B(\'5K\')||\'\';D r=el.B(\'5z\')||\'\';D b=el.B(\'5k\')||\'\';D l=el.B(\'5j\')||\'\';if(7N)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)};P E{t:t,r:r,b:b,l:l}},aT:u(e,7N){D el=k(e);D t=el.B(\'5M\')||\'\';D r=el.B(\'5U\')||\'\';D b=el.B(\'5n\')||\'\';D l=el.B(\'4X\')||\'\';if(7N)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)};P E{t:t,r:r,b:b,l:l}},6U:u(e,7N){D el=k(e);D t=el.B(\'4S\')||\'\';D r=el.B(\'5O\')||\'\';D b=el.B(\'5Q\')||\'\';D l=el.B(\'5b\')||\'\';if(7N)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)||0};P E{t:t,r:r,b:b,l:l}},4a:u(2k){D x=2k.hT||(2k.gM+(1h.5d.3c||1h.2e.3c))||0;D y=2k.ki||(2k.iQ+(1h.5d.3d||1h.2e.3d))||0;E{x:x,y:y}},cI:u(4R,cx){cx(4R);4R=4R.7c;7d(4R){k.1a.cI(4R,cx);4R=4R.hQ}},h7:u(4R){k.1a.cI(4R,u(el){24(D 1p in el){if(2g el[1p]===\'u\'){el[1p]=S}}})},hV:u(el,1O){D 5l=k.1a.6z();D b6=k.1a.2o(el);if(!1O||1O==\'49\')k(el).B({Q:5l.t+((18.3r(5l.h,5l.ih)-5l.t-b6.hb)/2)+\'U\'});if(!1O||1O==\'4j\')k(el).B({O:5l.l+((18.3r(5l.w,5l.iw)-5l.l-b6.1C)/2)+\'U\'})},hW:u(el,dk){D 1Q=k(\'1T[@2J*="8X"]\',el||1h),8X;1Q.1E(u(){8X=q.2J;q.2J=dk;q.14.5E="9n:9w.9y.hE(2J=\'"+8X+"\')"})}};[].3J||(7F.hF.3J=u(v,n){n=(n==S)?0:n;D m=q.1g;24(D i=n;i array(
+ 'variables' => array(),
+ ),
+ 'sld_group_text' => array(
+ 'variables' => array(),
+ ),
+ 'sld_group_image' => array(
+ 'variables' => array(),
+ ),
+ 'sld_group_image_and_text' => array(
+ 'variables' => array(),
+ ),
+ 'sld_single_text' => array(
+ 'variables' => array(),
+ ),
+ 'sld_single_image' => array(
+ 'variables' => array(),
+ ),
+ 'sld_single_image_and_text' => array(
+ 'variables' => array(),
+ ),
+ );
+}
+
+/**
+ * Implements hook_ds_fields_info().
+ */
+function service_links_displays_ds_fields_info($entity_type) {
+ $fields = array(
+ 'service_links_displays_group' => array(
+ 'title' => t('Service Links Group'),
+ 'field_type' => DS_FIELD_TYPE_THEME,
+ 'properties' => array(
+ 'formatters' => array(
+ 'sld_group_text' => t('Text'),
+ 'sld_group_image' => t('Image'),
+ 'sld_group_image_and_text' => t('Image and text'),
+ 'sld_group_fisheye' => t('FishEye'),
+ ),
+ ),
+ ),
+ );
+
+ $services = array_filter(variable_get('service_links_displays', array()));
+ if (!empty($services)) {
+ $services = service_links_get_links($services);
+ foreach ($services as $service_id => $service) {
+ $fields['service_links_displays_'. $service_id] = array(
+ 'title' => t('Service Links Field @name', array('@name' => $service['name'])),
+ 'field_type' => DS_FIELD_TYPE_THEME,
+ 'properties' => array(
+ 'key' => $service_id,
+ 'formatters' => array(
+ 'sld_single_text' => t('Text'),
+ 'sld_single_image' => t('Image'),
+ 'sld_single_image_and_text' => t('Image and text'),
+ ),
+ ),
+ );
+ }
+ }
+
+ return array('node' => $fields);
+}
+
+/**
+ * Apply the Text format to a single Service.
+ */
+function theme_sld_single_text($variables) {
+ $node = $variables['entity'];
+ $service_id = $variables['properties']['key'];
+
+ if (service_links_show($node) && user_access('access service links')) {
+ $items = service_links_render_some($service_id, $node, FALSE, SERVICE_LINKS_STYLE_TEXT);
+ if (!empty($items)) {
+ return implode($items);
+ }
+ }
+}
+
+/**
+ * Apply the Image format to a single Service.
+ */
+function theme_sld_single_image($variables) {
+ $node = $variables['entity'];
+ $service_id = $variables['properties']['key'];
+
+ if (service_links_show($node) && user_access('access service links')) {
+ $items = service_links_render_some($service_id, $node, FALSE, SERVICE_LINKS_STYLE_IMAGE);
+ if (!empty($items)) {
+ return implode($items);
+ }
+ }
+}
+
+/**
+ * Apply the Image and Text format to a single Service.
+ */
+function theme_sld_single_image_and_text($variables) {
+ $node = $variables['entity'];
+ $service_id = $variables['properties']['key'];
+
+ if (service_links_show($node) && user_access('access service links')) {
+ $items = service_links_render_some($service_id, $node, FALSE, SERVICE_LINKS_STYLE_IMAGE_AND_TEXT);
+ if (!empty($items)) {
+ return implode($items);
+ }
+ }
+}
+
+/**
+ * Apply the FishEye format to the field Service Links Group.
+ */
+function theme_sld_group_fisheye($variables) {
+ $node = $variables['entity'];
+
+ if (service_links_show($node) && user_access('access service links')) {
+ $services = array_filter(variable_get('service_links_displays', array()));
+ $options = array(
+ 'style' => SERVICE_LINKS_STYLE_FISHEYE,
+ 'link_show' => $services,
+ );
+
+ return theme('service_links_fisheye_format', array(
+ 'items' => service_links_render($node, FALSE, $options),
+ ));
+ }
+}
+
+/**
+ * Apply the Text format to the field Service Links Group.
+ */
+function theme_sld_group_text($variables) {
+ $node = $variables['entity'];
+
+ if (service_links_show($node) && user_access('access service links')) {
+ $services = array_filter(variable_get('service_links_displays', array()));
+ $options = array(
+ 'style' => SERVICE_LINKS_STYLE_TEXT,
+ 'link_show' => $services,
+ );
+
+ return theme('service_links_block_format', array(
+ 'items' => service_links_render($node, FALSE, $options),
+ 'style' => SERVICE_LINKS_STYLE_IMAGE,
+ ));
+ }
+}
+
+/**
+ * Apply the Image format to the field Service Links Group.
+ */
+function theme_sld_group_image($variables) {
+ $node = $variables['entity'];
+
+ if (service_links_show($node) && user_access('access service links')) {
+ $services = array_filter(variable_get('service_links_displays', array()));
+ $options = array(
+ 'style' => SERVICE_LINKS_STYLE_IMAGE,
+ 'link_show' => $services,
+ );
+
+ return theme('service_links_block_format', array(
+ 'items' => service_links_render($node, FALSE, $options),
+ 'style' => SERVICE_LINKS_STYLE_IMAGE,
+ ));
+ }
+}
+
+/**
+ * Apply the Image and Text format to the field Service Links Group.
+ */
+function theme_sld_group_image_and_text($variables) {
+ $node = $variables['entity'];
+
+ if (service_links_show($node) && user_access('access service links')) {
+ $services = array_filter(variable_get('service_links_displays', array()));
+ $options = array(
+ 'style' => SERVICE_LINKS_STYLE_IMAGE_AND_TEXT,
+ 'link_show' => $services,
+ );
+
+ return theme('service_links_block_format', array(
+ 'items' => service_links_render($node, FALSE, $options),
+ 'style' => SERVICE_LINKS_STYLE_IMAGE,
+ ));
+ }
+}
+
+/**
+ * Implements hook_form_alter().
+ */
+function service_links_displays_form_alter(&$form, &$form_state, $form_id) {
+ if ($form_id == 'service_links_admin_services') {
+ $settings['displays'] = variable_get('service_links_displays', array());
+ $settings['weight'] = variable_get('service_links_weight', NULL);
+
+ $form['service_links']['service_links_displays'] = array('#tree' => TRUE);
+ $services = array_filter(array_keys($form['service_links']['service_links_weight']), '_sld_only_keys');
+
+ foreach ($services as $service_id) {
+ $weight = isset($settings['weight'][$service_id]) ? $settings['weight'][$service_id] : 0;
+ $form['service_links']['service_links_displays'][$service_id] = array(
+ '#weight' => $weight,
+ '#type' => 'checkbox',
+ '#return_value' => 1,
+ '#default_value' => isset($settings['displays'][$service_id]) ? $settings['displays'][$service_id] : 0,
+ '#attributes' => array(),
+ );
+ }
+ }
+}
+
+/**
+ * Implements hook_sl_servicestable_alter().
+ */
+function service_links_displays_sl_servicestable_alter(&$table, $form) {
+ $table['header'][] = t('Displays');
+
+ if (empty($table['rows'])) {
+ return;
+ }
+
+ $num_row = 0;
+ $col_num = count($table['rows'][0]['data']);
+ foreach (element_children($form['service_links_displays']) as $service_id) {
+ $service = $form['service_links_displays'][$service_id];
+
+ $service['displays'] = array(
+ '#type' => 'checkbox',
+ '#checked' => $service['#default_value'],
+ '#id' => $service['#id'],
+ '#name' => $service['#name'],
+ '#attributes' => $service['#attributes'],
+ );
+ $col = drupal_render($service['displays']);
+
+ $table['rows'][$num_row]['data'][$col_num] = $col;
+
+ $num_row++;
+ }
+}
+
+/**
+ * Filter the id from other fields.
+ */
+function _sld_only_keys($item) {
+ return preg_match('/^#/', $item) ? FALSE : TRUE;
+}
diff --git a/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.info b/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.info
new file mode 100644
index 0000000..aa8b6d1
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.info
@@ -0,0 +1,14 @@
+name = Service Links Sprites
+description = Add the ability to handle sprites with Service Links
+core = 7.x
+package = Service Links
+dependencies[] = service_links
+
+configure = admin/config/services/service-links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.module b/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.module
new file mode 100644
index 0000000..fc5c217
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/plugins/service_links_sprites.module
@@ -0,0 +1,255 @@
+ $file) {
+ if (is_file($file)) {
+ $img_details = getimagesize($file);
+
+ if (!isset($images[$img_details[SLS_GD_WIDTH]])) {
+ $images[$img_details[SLS_GD_WIDTH]] = array();
+ }
+
+ $images[$img_details[SLS_GD_WIDTH]][$service_id] = array(
+ 'height' => $img_details[SLS_GD_HEIGHT],
+ 'file' => $file,
+ 'mime' => $img_details[SLS_GD_MIME],
+ );
+
+ if (!isset($tot_height[$img_details[SLS_GD_WIDTH]])) {
+ $tot_height[$img_details[SLS_GD_WIDTH]] = 0;
+ }
+
+ $tot_height[$img_details[SLS_GD_WIDTH]] += (int)$img_details[SLS_GD_HEIGHT];
+ }
+ }
+
+ foreach ($images as $width => $image) {
+ $img_dest = @imagecreatetruecolor($width, $tot_height[$width]);
+ $background = @imagecolorallocatealpha($img_dest, 255, 255, 255, 127);
+ @imagefill($img_dest, 0, 0, $background);
+ @imagealphablending($img_dest, FALSE);
+ @imagesavealpha($img_dest, TRUE);
+
+ $y = 0;
+ $padding = $width + 2;
+ $css_str .= ".sprites.service-links.w$width {padding-left: {$padding}px; background-image:url(\"" . SLS_FILENAME . "$width.png\");}\n";
+
+ foreach ((array)$image as $service_id => $img_details) {
+ switch ($img_details['mime']) {
+ case 'image/png':
+ $img_src = @imagecreatefrompng($img_details['file']);
+ break;
+ case 'image/jpeg':
+ $img_src = @imagecreatefromjpeg($img_details['file']);
+ break;
+ case 'image/gif':
+ $img_src = @imagecreatefromgif($img_details['file']);
+ break;
+ default:
+ continue;
+ }
+
+ $class = str_replace('_', '-', $service_id);
+ $sign = ($y > 0) ? '-' : '';
+ $css_str .= ".sprites.service-links-$class {background-position: 0 {$sign}{$y}px; height:{$img_details['height']}px}\n";
+ @imagecopy($img_dest, $img_src, 0, $y, 0, 0, $width, $img_details['height']);
+ @imagedestroy($img_src);
+ $y += $img_details['height'];
+ $sizes[$img_details['file']] = $width;
+ }
+
+ imagepng($img_dest, $sprite_filename . $width . '.png');
+ imagedestroy($img_dest);
+ }
+
+ $css_fhandler = fopen($sprite_filename . '.css', 'w');
+ if (($css_fhandler) && !empty($css_str)) {
+ fwrite($css_fhandler, $css_str);
+ fclose($css_fhandler);
+ }
+
+ variable_set('service_links_sprites_sizes', $sizes);
+}
+
+/**
+ * Implements hook_form_alter().
+ */
+function service_links_sprites_form_alter(&$form, &$form_state, $form_id) {
+ if ($form_id == 'service_links_admin_settings') {
+ $form['buttons']['#weight'] = 100;
+ $form['sprites'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Sprites'),
+ );
+ $form['sprites']['service_links_use_internal_sprites'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Load the CSS file generated by Service Links'),
+ '#default_value' => variable_get('service_links_use_internal_sprites', 0),
+ '#description' => t('Service Links will build the files needed everytime the modifies are saved in Services tab.'),
+ );
+ }
+
+ if ($form_id == 'service_links_admin_services') {
+ $form['#validate'][] = 'service_links_sprites_validate';
+ }
+}
+
+function service_links_sprites_validate($form, &$form_state) {
+ $services = array_keys(array_filter($form_state['values']['service_links_show']));
+ $services = service_links_get_links($services);
+ $paths = array();
+ foreach ($services as $service_id => $service) {
+ $icon = isset($service['icon']) ? $service['icon'] : $service_id . '.png';
+ $paths[$service_id] = service_links_expand_path($icon);
+ }
+
+ sls_build_sprites($paths);
+}
+
+/**
+ * Implements hook_sl_styles().
+ */
+function service_links_sprites_sl_styles($nodelink = FALSE) {
+ return array(
+ 'sls_style_image' => t('Only Image (with Sprite)'),
+ 'sls_style_image_and_text' => t('Image and Text (with Sprite)'),
+ );
+}
+
+/**
+ * Implements hook_theme().
+ */
+function service_links_sprites_theme() {
+ return array(
+ 'sls_style_image' => array(
+ 'variables' => array(
+ 'text' => NULL,
+ 'url' => array(),
+ 'image' => NULL,
+ 'nodelink' => NULL,
+ 'attributes' => array(),
+ ),
+ ),
+ 'sls_style_image_and_text' => array(
+ 'variables' => array(
+ 'text' => NULL,
+ 'url' => array(),
+ 'image' => NULL,
+ 'nodelink' => NULL,
+ 'attributes' => array(),
+ ),
+ ),
+ );
+}
+
+function theme_sls_style_image($variables) {
+ $text = $variables['text'];
+ $url = $variables['url'];
+ $image = $variables['image'];
+ $nodelink = $variables['nodelink'];
+ $attributes = $variables['attributes'];
+
+ $width = sls_get_image_size(service_links_expand_path($image));
+ $attributes['class'][] = "sprites service-links w$width";
+
+ if ($nodelink) {
+ $query = isset($url[1]) ? $url[1] : NULL;
+
+ return array(
+ 'title' => '' . $text . '',
+ 'href' => $url[0],
+ 'query' => $query,
+ 'attributes' => $attributes,
+ 'html' => TRUE,
+ );
+ }
+ else {
+ $attributes = array_merge($attributes, array('html' => TRUE));
+ if (isset($url[1])) {
+ $attributes['query'] = $url[1];
+ }
+
+ return l('' . $text . '', $url[0], $attributes);
+ }
+}
+
+function theme_sls_style_image_and_text($variables) {
+ $text = $variables['text'];
+ $url = $variables['url'];
+ $image = $variables['image'];
+ $nodelink = $variables['nodelink'];
+ $attributes = $variables['attributes'];
+
+ $width = sls_get_image_size(service_links_expand_path($image));
+ $attributes['class'][] = "sprites service-links w$width";
+
+ if ($nodelink) {
+ $query = isset($url[1]) ? $url[1] : NULL;
+
+ return array(
+ 'title' => $text,
+ 'href' => $url[0],
+ 'query' => $query,
+ 'attributes' => $attributes,
+ );
+ }
+ else {
+ if (isset($url[1])) {
+ $attributes['query'] = $url[1];
+ }
+ return l($text, $url[0], $attributes);
+ }
+}
+
+function sls_get_image_size($filepath = '') {
+ static $sizes;
+
+ if (!isset($sizes)) {
+ $sizes = variable_get('service_links_sprites_sizes', array());
+ }
+
+ if (isset($sizes[$filepath])) {
+ return $sizes[$filepath];
+ }
+ else {
+ return 16;
+ }
+}
diff --git a/web/sites/all/modules/contrib/service_links/service_links.admin.inc b/web/sites/all/modules/contrib/service_links/service_links.admin.inc
new file mode 100644
index 0000000..d2e5312
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/service_links.admin.inc
@@ -0,0 +1,482 @@
+ $service['#title']);
+ $col[] = drupal_render($service['name']);
+
+ $service['service'] = array('#markup' => $service['#service']);
+ $col[] = drupal_render($service['service']);
+
+ $service['show'] = array(
+ '#type' => 'checkbox',
+ '#checked' => $service['#default_value'],
+ '#id' => $service['#id'],
+ '#name' => $service['#name'],
+ );
+ $col[] = drupal_render($service['show']);
+
+ $service['weight'] = $form['service_links_weight'][$service_id];
+ $service['weight']['#attributes']['class'] = array('service-weight');
+ $col[] = drupal_render($service['weight']);
+
+ $table['weights'][] = $service['#weight'];
+ $table['rows'][] = array('data' => $col, 'class' => array('draggable'));
+ }
+
+ $table['header'] = array(t('Service Name'), t('Group'), t('Show'), t('Weight'));
+
+ drupal_alter('sl_servicestable', $table, $form);
+
+ if (!empty($table['rows'])) {
+ array_multisort($table['weights'], $table['rows']);
+ }
+
+ drupal_add_tabledrag('service_links', 'order', 'sibling', 'service-weight');
+
+ $params = array(
+ '#theme' => 'table',
+ '#header' => $table['header'],
+ '#rows' => $table['rows'],
+ '#attributes' => array('id' => 'service_links'),
+ '#empty' => t('No services available.'),
+ );
+
+ return theme('table', $params);
+}
+
+/**
+ * Menu callback administration settings for general options.
+ */
+function service_links_admin_settings() {
+
+ $form['where_to_show_the_links'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t("Show for content types or categories"),
+ '#description' => t("Set the content types or categories you want to display links for."),
+ );
+ $form['where_to_show_the_links']['service_links_node_types'] = array(
+ '#type' => 'checkboxes',
+ '#title' => t('Content types'),
+ '#default_value' => variable_get('service_links_node_types', array()),
+ '#options' => array_map('check_plain', node_type_get_names()),
+ '#attributes' => array('class' => array('container-inline')),
+ );
+ if (module_exists('taxonomy')) {
+ $selected_vocs = variable_get('service_links_category_vocs', array());
+ $vocabularies = _service_links_get_vocabularies();
+ $form['where_to_show_the_links']['service_links_category_vocs'] = array(
+ '#type' => 'checkboxes',
+ '#title' => t('Show terms from the selected vocabularies'),
+ '#default_value' => $selected_vocs,
+ '#options' => $vocabularies,
+ '#attributes' => array('class' => array('container-inline')),
+ );
+
+ $terms = _service_links_get_terms(array_values(array_filter($selected_vocs)));
+ $count = count($terms);
+ $selected_types = variable_get('service_links_category_types', array());
+ if ($count > 0) {
+ $form['where_to_show_the_links']['service_links_category_types'] = array(
+ '#type' => 'select',
+ '#multiple' => TRUE,
+ //'#title' => t('Categories'),
+ '#default_value' => $selected_types,
+ '#options' => $terms,
+ //'#size' => ($count > 10 ? 10 : $count),
+ '#attributes' => array('style' => 'display: none;'),
+ );
+ foreach ($vocabularies as $vid => $vocabulary) {
+ if (in_array($vid, $selected_vocs)) {
+ $terms = _service_links_get_terms(array($vid));
+ $form['where_to_show_the_links']['service_links_category_by_voc_' . $vid] = array(
+ '#type' => 'select',
+ '#multiple' => TRUE,
+ '#title' => $vocabulary,
+ '#default_value' => $selected_types,
+ '#options' => $terms,
+ '#size' => ($count > 10 ? 10 : $count),
+ );
+ }
+ }
+ }
+ }
+
+ $form['places_to_show_the_links'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Where to show service links'),
+ );
+ $form['places_to_show_the_links']['service_links_link_view_modes'] = array(
+ '#type' => 'checkboxes',
+ '#title' => t('Service links in the links'),
+ '#default_value' => variable_get('service_links_link_view_modes', array()),
+ '#options' => _service_links_get_view_modes(),
+ '#description' => t('Select for what view mode display the services in the link section.'),
+ );
+ $form['places_to_show_the_links']['service_links_node_view_modes'] = array(
+ '#type' => 'checkboxes',
+ '#title' => t('Service links in the content'),
+ '#default_value' => variable_get('service_links_node_view_modes', array()),
+ '#options' => _service_links_get_view_modes(),
+ '#description' => t('Select for what view modes display the services in the content section.'),
+ );
+
+ $form['page_match'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Page specific visibility settings'),
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ );
+ $access = user_access('use PHP for service visibility');
+ $visibility = variable_get('service_links_visibility_for_node', SERVICE_LINKS_VISIBILITY_NOT_LISTED);
+ $pages = variable_get('service_links_page_match_for_node', '');
+ if ($visibility == SERVICE_LINKS_VISIBILITY_PHP && !$access) {
+ $form['page_match'] = array(
+ 'service_links_visibility_for_node' => array(
+ '#type' => 'value',
+ '#value' => SERVICE_LINKS_VISIBILITY_PHP,
+ ),
+ 'service_links_page_match_for_node' => array(
+ '#type' => 'value',
+ '#value' => $pages,
+ ),
+ );
+ }
+ else {
+ $options = array(
+ SERVICE_LINKS_VISIBILITY_NOT_LISTED => t('All pages except those listed'),
+ SERVICE_LINKS_VISIBILITY_ONLY_LISTED => t('Only the listed pages'),
+ );
+ $description = t("Specify pages by using their paths. Enter one path per line. The '*' character is a wildcard. Example paths are %blog for the blog page and %blog-wildcard for every personal blog. %front is the front page.", array('%blog' => 'blog', '%blog-wildcard' => 'blog/*', '%front' => ''));
+
+ if (module_exists('php') && $access) {
+ $options += array(SERVICE_LINKS_VISIBILITY_PHP => t('Pages on which this PHP code returns TRUE (experts only)'));
+ $title = t('Pages or PHP code');
+ $description .= ' ' . t('If the PHP option is chosen, enter PHP code between %php. Note that executing incorrect PHP code can break your Drupal site.', array('%php' => ''));
+ }
+ else {
+ $title = t('Pages');
+ }
+
+ $form['page_match']['service_links_visibility_for_node'] = array(
+ '#type' => 'radios',
+ '#title' => t('Show Service Links on specific pages'),
+ '#options' => $options,
+ '#default_value' => $visibility,
+ );
+ $form['page_match']['service_links_page_match_for_node'] = array(
+ '#type' => 'textarea',
+ '#title' => $title,
+ '#default_value' => $pages,
+ '#description' => $description,
+ );
+ }
+
+ $form['how_to_show_the_links'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('How to display Service Links'),
+ );
+ $form['how_to_show_the_links']['service_links_style'] = array(
+ '#type' => 'select',
+ '#title' => t('Choose a style'),
+ '#default_value' => variable_get('service_links_style', SERVICE_LINKS_STYLE_IMAGE),
+ '#options' => array(
+ SERVICE_LINKS_STYLE_TEXT => t('Only Text'),
+ SERVICE_LINKS_STYLE_IMAGE => t('Only Image'),
+ SERVICE_LINKS_STYLE_IMAGE_AND_TEXT => t('Image and Text'),
+ ),
+ );
+
+ $styles = module_invoke_all('sl_styles', FALSE);
+ if (!empty($styles)) {
+ $form['how_to_show_the_links']['service_links_style']['#options'] += $styles;
+ }
+
+ $form['how_to_show_the_links']['service_links_hide_if_unpublished'] = array(
+ '#type' => 'checkbox',
+ '#title' => t("Don't show links if the content is unpublished"),
+ '#default_value' => variable_get('service_links_hide_if_unpublished', 0),
+ );
+ $form['how_to_show_the_links']['service_links_hide_for_author'] = array(
+ '#type' => 'checkbox',
+ '#title' => t("Don't show links if the actual user is the author of the node"),
+ '#default_value' => variable_get('service_links_hide_for_author', 0),
+ );
+ $form['how_to_show_the_links']['in_node'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Service Links in nodes'),
+ );
+ $form['how_to_show_the_links']['in_node']['service_links_label_in_node'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Print the label'),
+ '#default_value' => variable_get('service_links_label_in_node', t('Bookmark/Search this post with')),
+ '#size' => '40',
+ );
+ $form['how_to_show_the_links']['in_node']['service_links_weight_in_node'] = array(
+ '#type' => 'weight',
+ '#delta' => 100,
+ '#title' => t('Assign a weight'),
+ '#default_value' => variable_get('service_links_weight_in_node', 10),
+ '#description' => t('The weight help to place the Service Links section above or below the other elements.'),
+ );
+
+ $form['how_to_show_the_links']['icons'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Service Links icons'),
+ );
+ $form['how_to_show_the_links']['icons']['service_links_path_icons'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Standard folder'),
+ '#description' => t('If you have alternative icons enter here the relative path from your index.php without trailing slash (i.e. %path1 or %path2)', array('%path1' => 'files/newicons', '%path2' => 'sites/all/files/newicons')),
+ '#default_value' => service_links_expand_path(NULL, 'icons'),
+ '#size' => 40,
+ );
+ $form['how_to_show_the_links']['icons']['service_links_check_icons'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Use the default icons if missing'),
+ '#description' => t('Check every icon in the standard folder and if not available, consider the default path %path', array('%path' => service_links_expand_path(NULL, 'preset'))),
+ '#default_value' => variable_get('service_links_check_icons', FALSE),
+ );
+
+ $form['extra_options'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Extra Options'),
+ );
+ $form['extra_options']['service_links_new_window'] = array(
+ '#type' => 'select',
+ '#title' => t('Open link in...'),
+ '#default_value' => variable_get('service_links_new_window', 0),
+ '#options' => array(0 => t('Same window'), 1 => t('New window')),
+ );
+ $form['extra_options']['service_links_append_to_url'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Append the following text to your URL'),
+ '#description' => t('This text will be inserted at the end of the current URL (i.e. %param => %url)', array('%param' => 'param1=value1¶m2=value2', '%url' => 'http://domain.com/current-page¶m1=value1¶m2=value2')),
+ '#default_value' => variable_get('service_links_append_to_url', ''),
+ '#size' => 40,
+ );
+ $form['extra_options']['title'] = array(
+ '#type' => 'fieldset',
+ );
+ $form['extra_options']['title']['service_links_override_title'] = array(
+ '#type' => 'select',
+ '#title' => t('How to fill the title tag'),
+ '#default_value' => variable_get('service_links_override_title', SERVICE_LINKS_TAG_TITLE_NODE),
+ '#options' => array(
+ SERVICE_LINKS_TAG_TITLE_NODE => t('Use the original node title'),
+ SERVICE_LINKS_TAG_TITLE_OVERRIDE => t('Override the original title'),
+ ),
+ );
+ $form['extra_options']['title']['service_links_override_title_text'] = array(
+ '#type' => 'textfield',
+ '#description' => t("Enter the text that override the title: use @title for referrer the original title, either the various tokens offered by Token if it's enabled and the related option active.", array('@url' => 'http://www.drupal.org/project/token', '@title' => '')),
+ '#default_value' => variable_get('service_links_override_title_text', ''),
+ '#size' => 40,
+ );
+
+ if (module_exists('token')) {
+ $form['extra_options']['title']['service_links_override_title']['#options'] += array(
+ SERVICE_LINKS_TAG_TITLE_TOKEN => t('Parse the string with Token'),
+ );
+ $form['extra_options']['title']['token_help'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => TRUE,
+ '#title' => t('Token help'),
+ '#theme' => 'token_tree',
+ '#token_types' => array('node'),
+ );
+ }
+
+ $form['short_links'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Short Links'),
+ );
+ $form['short_links']['service_links_short_links_use'] = array(
+ '#type' => 'select',
+ '#title' => t('Use short links'),
+ '#default_value' => variable_get('service_links_short_links_use', SERVICE_LINKS_SHORT_URL_USE_NEVER),
+ '#options' => array(
+ SERVICE_LINKS_SHORT_URL_USE_NEVER => t('Never'),
+ SERVICE_LINKS_SHORT_URL_USE_WHEN_REQUESTED => t('Only when requested'),
+ SERVICE_LINKS_SHORT_URL_USE_ALWAYS => t('Always')),
+ );
+ if (variable_get('service_links_short_links_use', SERVICE_LINKS_SHORT_URL_USE_NEVER) > 0) {
+ $form['short_links']['service_links_short_links_type'] = array(
+ '#type' => 'select',
+ '#title' => t('How generate short links'),
+ '#default_value' => variable_get('service_links_short_links_type', SERVICE_LINKS_SHORT_URL_TYPE_NODE),
+ '#description' => t('If you select "Short URL," it will use the service selected with the Shorten URLs module. If you have not enabled the module, Service Links will default to TinyURL.', array('@shorten' => 'http://drupal.org/project/shorten')),
+ '#options' => array(
+ SERVICE_LINKS_SHORT_URL_TYPE_NODE => t('Use node/xxx alias'),
+ SERVICE_LINKS_SHORT_URL_TYPE_SERVICE => t('Use Short Url service'),
+ SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_DOMAIN => t('Redirect only the Domain name'),
+ SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_ALL => t('Combo: domain redirect and node/xxx alias')),
+ );
+ $form['short_links']['service_links_domain_redirect'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Domain to redirect'),
+ '#description' => t('Enter the complete address without trailing slash (i.e. %name)', array('%name' => 'http://www.example.com') ),
+ '#default_value' => variable_get('service_links_domain_redirect', ''),
+ '#size' => 40,
+ );
+ }
+ $form['#validate'][] = 'service_links_admin_services_validate';
+
+ return system_settings_form($form);
+}
+
+/**
+ * Check if domain address textbox is empty when should be not,
+ * copy the selected terms into a unique list,
+ * check the path of custom'icons.
+ */
+function service_links_admin_services_validate($form, &$form_state) {
+ if (isset($form_state['values']['service_links_short_links_type']) && (int) $form_state['values']['service_links_short_links_type'] > 2) {
+ if (!$form_state['values']['service_links_domain_redirect']) {
+ form_set_error('service_links_domain_redirect', t('Domain redirect address is not set.'));
+ }
+ if (preg_match("/\/$/", $form_state['values']['service_links_domain_redirect'])) {
+ form_set_error('service_links_domain_redirect', t('No trailing slash!'));
+ }
+ }
+
+ if (isset($form_state['values']['service_links_category_vocs']) && module_exists('taxonomy')) {
+ $selected_vocs = array_filter($form_state['values']['service_links_category_vocs']);
+ if (empty($selected_vocs)) {
+ $form_state['values']['service_links_category_types'] = array();
+ }
+ else {
+ $vocabularies = _service_links_get_vocabularies();
+ $form_state['values']['service_links_category_types'] = array();
+ foreach ($vocabularies as $vid => $vocabulary) {
+ if (isset($form_state['values']['service_links_category_by_voc_' . $vid])) {
+ $form_state['values']['service_links_category_types'] += $form_state['values']['service_links_category_by_voc_' . $vid];
+ }
+
+ }
+ }
+ }
+
+ if (!empty($form_state['values']['service_links_path_icons'])) {
+ if (!is_dir($form_state['values']['service_links_path_icons'])) {
+ form_set_error('service_links_path_icons', t('The path for custom icons is not valid'));
+ }
+ elseif (preg_match("/\/$/", $form_state['values']['service_links_path_icons'])) {
+ form_set_error('service_links_path_icons', t('No trailing slash!'));
+ }
+ }
+}
+
+/**
+ * Menu callback administration settings for services links list.
+ */
+function service_links_admin_services() {
+ $settings = array();
+
+ $services = service_links_get_links(NULL, TRUE);
+ $settings['show'] = variable_get('service_links_show', NULL);
+ $settings['weight'] = variable_get('service_links_weight', NULL);
+
+ $form['service_links'] = array('#theme' => 'service_links_drag_table');
+ $form['service_links']['service_links_show'] = array('#tree' => TRUE);
+ $form['service_links']['service_links_weight'] = array('#tree' => TRUE);
+
+ foreach ($services as $service_id => $service) {
+ $icon = array(
+ 'path' => isset($service['icon']) ? service_links_expand_path($service['icon'], 'preset') : service_links_expand_path("$service_id.png", 'preset'),
+ );
+ $weight = isset($settings['weight'][$service_id]) ? $settings['weight'][$service_id] : 0;
+
+ $form['service_links']['service_links_show'][$service_id] = array(
+ '#service' => ucwords(str_replace('_', ' ', $service['module'])),
+ '#weight' => $weight,
+ '#type' => 'checkbox',
+ '#title' => theme('image', $icon) . " " . t('Show %name link', array('%name' => $service['name'])),
+ '#return_value' => 1,
+ '#default_value' => isset($settings['show'][$service_id]) ? $settings['show'][$service_id] : 0,
+ );
+ $form['service_links']['service_links_weight'][$service_id] = array(
+ '#type' => 'weight',
+ '#delta' => 100,
+ '#default_value' => $weight,
+ );
+ }
+
+ if (empty($services)) {
+ drupal_set_message(t('You need to load at least one of XXX Services module, please enable them in admin > modules page', array('@url' => url('admin/modules'))), 'warning');
+ }
+
+ return system_settings_form($form);
+}
+
+/**
+ * Build an array of all taxonomy terms.
+ */
+function _service_links_get_terms($included_vocs = array()) {
+ $types = array();
+ $vocabularies = taxonomy_get_vocabularies();
+ foreach ($vocabularies as $vocabulary) {
+ if (in_array($vocabulary->vid, $included_vocs)) {
+ $tree = taxonomy_get_tree($vocabulary->vid);
+ foreach ($tree as $term) {
+ $types[$term->tid] = check_plain($term->name);
+ }
+ }
+ }
+
+ return $types;
+}
+
+/**
+ * Return a list of vocabularies generated by taxonomy module.
+ */
+function _service_links_get_vocabularies() {
+ $list_vocs = taxonomy_get_vocabularies();
+ $vocs = array();
+ foreach ($list_vocs as $vocabulary) {
+ if ($vocabulary->module == 'taxonomy') {
+ $vocs[$vocabulary->vid] = check_plain($vocabulary->name);
+ }
+ }
+
+ return $vocs;
+}
+
+/**
+ * Return the view modes availables for the node entity.
+ */
+function _service_links_get_view_modes() {
+ $view_modes = array();
+
+ $entity_info = entity_get_info('node');
+ foreach ($entity_info['view modes'] as $view => $info){
+ $view_modes[$view] = $info['label'];
+ }
+
+ return $view_modes;
+}
diff --git a/web/sites/all/modules/contrib/service_links/service_links.api.php b/web/sites/all/modules/contrib/service_links/service_links.api.php
new file mode 100644
index 0000000..189f59d
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/service_links.api.php
@@ -0,0 +1,84 @@
+ 'MyService',
+ // A short description for the link.
+ 'description' => t('Share this post on MyService'),
+ // The service URL and its params.
+ 'link' => 'http://example.com/?url=&title=&summary=',
+ // The service icon. The id name and .png extension is used as default.
+ 'icon' => drupal_get_path('module', 'myservice') .'/myservice.png',
+ // Any additional attributes to apply to the element.
+ 'attributes' => array(
+ 'class' => array('myservice-special-class'), // A special class.
+ 'style' => 'text-decoration: underline;', // Apply any special inline styles.
+ ),
+ // JavaScript to add when this link is processed, can be a string or an array.
+ 'javascript' => drupal_get_path('module', 'myservice') .'/myservice.js',
+ // CSS to add when this link is processed, can be a string or an array.
+ 'css' => drupal_get_path('module', 'myservice') .'/myservice.css',
+ // A PHP function invoked before the link is created, useful to add new tags.
+ 'preset' => 'myservice_preset',
+ // A PHP function callback that is invoked when the link is created.
+ 'callback' => 'myservice_callback',
+ );
+
+ return $links;
+}
+
+/**
+ * Example of preset function.
+ *
+ * @param $service
+ * The service that is being used.
+ * @param $settings
+ * An array containing all the settings used.
+ * @param $node
+ * An object containt the current node.
+ */
+function my_service_preset(&$service, &$settings, $node = NULL) {
+ $settings['tags']['new-tag'] = '';
+ $settings['subst']['new-tag'] = check_plain(variable_get('some_variable', 'default'));
+}
+
+/**
+ * Example callback from the Service Links.
+ *
+ * @param $service
+ * The service that is being used.
+ * @param $context
+ * An array containing all information about the item being shared.
+ */
+function myservice_callback($service, $context) {
+
+}
+
+/**
+ * Allows alteration of the Service Links.
+ *
+ * @param $links
+ * The constructed array of service links.
+ */
+function hook_service_links_alter(&$links) {
+ if (isset($links['myservice'])) {
+ // Change the icon of MyService.
+ $links['myservice']['icon'] = 'http://drupal.org/misc/favicon.ico';
+ }
+}
diff --git a/web/sites/all/modules/contrib/service_links/service_links.info b/web/sites/all/modules/contrib/service_links/service_links.info
new file mode 100644
index 0000000..cbcca81
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/service_links.info
@@ -0,0 +1,14 @@
+name = Service links
+description = Module engine for add various service links about sharing networks to nodes.
+core = 7.x
+package = Service Links
+
+files[] = service_links_handler_field_service_links.inc
+configure = admin/config/services/service-links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/service_links.install b/web/sites/all/modules/contrib/service_links/service_links.install
new file mode 100644
index 0000000..8896438
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/service_links.install
@@ -0,0 +1,90 @@
+condition('name', 'service_links_%', 'LIKE')
+ ->execute();
+}
+
+/**
+ * Update from Service Links 1.x.
+ */
+function service_links_update_6200() {
+ $new_var = variable_get('service_links_show', NULL);
+
+ if (!isset($new_var)) {
+ variable_set('service_links_show', array(
+ 'delicious' => variable_get('service_links_show_delicious', 0),
+ 'digg' => variable_get('service_links_show_digg', 0),
+ 'stumbleupon' => variable_get('service_links_show_stumbleupon', 0),
+ 'reddit' => variable_get('service_links_show_reddit', 0),
+ 'newsvine' => variable_get('service_links_show_newsvine', 0),
+ 'furl' => variable_get('service_links_show_furl', 0),
+ 'facebook' => variable_get('service_links_show_facebook', 0),
+ 'myspace' => variable_get('service_links_show_myspace', 0),
+ 'identica' => variable_get('service_links_show_identica', 0),
+ 'twitter' => variable_get('service_links_show_twitter', 0),
+ 'google' => variable_get('service_links_show_google', 0),
+ 'yahoo' => variable_get('service_links_show_yahoo', 0),
+ 'linkedin' => variable_get('service_links_show_linkedin', 0),
+ 'technorati' => variable_get('service_links_show_technorati', 0),
+ 'icerocket' => variable_get('service_links_show_icerocket', 0),
+ ));
+
+ module_enable(array('general_services'));
+ }
+
+ // delete old service variables
+ $result = db_query('SELECT name FROM {variable} v WHERE LOCATE("service_links_show_",v.name) > 0');
+ while ($row = db_fetch_object($result)) {
+ variable_del($row->name);
+ }
+
+ // Aggregator2 support
+ variable_del('service_links_agg2_link');
+}
+
+/**
+ * Switch the old variables to the news based on view modes.
+ */
+function _update_to_view_modes($old_var, $new_var) {
+ $modes = array_filter(variable_get($old_var, 0));
+ $new_var = variable_get($new_var, NULL);
+
+ if (!isset($new_var)) {
+ switch($modes) {
+ case 0:
+ $modes = array();
+ break;
+ case 1:
+ $modes = array('teaser' => 'teaser');
+ break;
+ case 2:
+ $modes = array('full' => 1);
+ break;
+ case 3:
+ $modes = array('teaser' => 1, 'full' => 1);
+ break;
+ }
+
+ variable_set($new_var, $modes);
+ }
+
+ variable_del($old_var);
+}
+
+/**
+ * Update to view mode display.
+ */
+function service_links_update_7201(&$sandbox) {
+ _update_to_view_modes('service_links_in_links', 'service_links_link_view_modes');
+ _update_to_view_modes('service_links_in_node', 'service_links_node_view_modes');
+}
\ No newline at end of file
diff --git a/web/sites/all/modules/contrib/service_links/service_links.module b/web/sites/all/modules/contrib/service_links/service_links.module
new file mode 100644
index 0000000..cc6643d
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/service_links.module
@@ -0,0 +1,1058 @@
+'. t('Display links to social sharing websites like Digg, del.icio.us, reddit, Technorati etc.') .'
';
+ break;
+ }
+}
+
+/**
+ * Implements hook_hook_info().
+ */
+function service_links_hook_info() {
+ $hooks = array(
+ 'service_links' => array(
+ 'group' => 'service_links',
+ ),
+ 'service_links_alter' => array(
+ 'group' => 'service_links',
+ ),
+ );
+
+ return $hooks;
+}
+
+/**
+ * Implements hook_permission().
+ */
+function service_links_permission() {
+ return array(
+ 'access service links' => array(
+ 'title' => t('Access to Service Links'),
+ //'description' => t('Allow users to act with the services loaded'),
+ ),
+ 'use PHP for service visibility' => array(
+ 'title' => t('Use PHP for Service visibility'),
+ ),
+ );
+}
+
+/**
+ * Implements hook_menu().
+ */
+function service_links_menu() {
+ $items = array();
+
+ $items['admin/config/services/service-links'] = array(
+ 'title' => 'Service Links',
+ 'description' => 'Control which and where service links should be active.',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('service_links_admin_settings'),
+ 'access arguments' => array('administer site configuration'),
+ 'type' => MENU_NORMAL_ITEM,
+ 'file' => 'service_links.admin.inc',
+ );
+
+ $items['admin/config/services/service-links/general'] = array(
+ 'title' => 'General Settings',
+ 'type' => MENU_DEFAULT_LOCAL_TASK,
+ 'weight' => -10,
+ );
+
+ $items['admin/config/services/service-links/services'] = array(
+ 'title' => 'Services',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('service_links_admin_services'),
+ 'access arguments' => array('administer site configuration'),
+ 'type' => MENU_LOCAL_TASK,
+ 'file' => 'service_links.admin.inc',
+ );
+
+ return $items;
+}
+
+/**
+ * Implements hook_node_view().
+ */
+function service_links_node_view($node, $view_mode) {
+ static $view_modes_allowed;
+
+ if (!isset($view_modes_allowed)) {
+ $view_modes_allowed = array_filter(variable_get('service_links_node_view_modes', array()));
+ }
+
+ if ((arg(2) != 'edit') && service_links_show($node) && user_access('access service links')) {
+
+ $node->service_links = service_links_render($node, TRUE);
+
+ if (!empty($view_modes_allowed) && (in_array($view_mode, $view_modes_allowed))) {
+
+ $node->service_links_rendered = theme('service_links_node_format', array(
+ 'links' => $node->service_links,
+ 'label' => variable_get('service_links_label_in_node', t('Bookmark/Search this post with')),
+ 'view_mode' => $view_mode,
+ 'node_type' => $node->type,
+ ));
+
+ $node->content['service_links'] = array(
+ '#markup' => $node->service_links_rendered,
+ '#weight' => variable_get('service_links_weight_in_node', 10),
+ );
+ }
+
+ _service_links_link($node, $view_mode);
+ }
+}
+
+/**
+ * Create an array of links for the link section.
+ */
+function _service_links_link($node, $view_mode) {
+ static $view_modes_allowed;
+
+ if (!isset($view_modes_allowed)) {
+ $view_modes_allowed = array_filter(variable_get('service_links_link_view_modes', array()));
+ }
+
+ if (in_array($view_mode, $view_modes_allowed)) {
+ $links = $node->service_links;
+ if (!empty($links)) {
+ $node->content['links']['node']['#links'] = array_merge($node->content['links']['node']['#links'], $links);
+ }
+ }
+}
+
+/**
+ * Implements hook_block_info().
+ */
+function service_links_block_info() {
+ $blocks['service_links'] = array(
+ 'info' => t('Service links'),
+ 'cache' => DRUPAL_NO_CACHE,
+ );
+ $blocks['service_links_fisheye'] = array(
+ 'info' => t('Service links with FishEye effect'),
+ 'cache' => DRUPAL_NO_CACHE,
+ );
+ $blocks['service_links_not_node'] = array(
+ 'info' => t('Service links for not-node pages'),
+ 'cache' => DRUPAL_NO_CACHE,
+ );
+
+ return $blocks;
+}
+
+/**
+ * Implements hook_block_view().
+ */
+function service_links_block_view($delta = '') {
+ $node = menu_get_object('node');
+ $block = array();
+
+ if (user_access('access service links') && (isset($node))) {
+ if (service_links_show($node)) {
+ switch ($delta) {
+ case 'service_links':
+ $block['subject'] = t('Bookmark/Search this post');
+ $style = variable_get('service_links_block_style', SERVICE_LINKS_STYLE_IMAGE_AND_TEXT);
+ $block['content'] = theme('service_links_block_format', array('items' => service_links_render($node, FALSE, $style), 'style' => $style));
+ break;
+ case 'service_links_fisheye':
+ $block['subject'] = t('Bookmark/Search this post');
+ $block['content'] = theme('service_links_fisheye_format', array('items' => service_links_render($node, FALSE, SERVICE_LINKS_STYLE_FISHEYE)));
+ break;
+ }
+ }
+ return $block;
+ }
+ elseif (user_access('access service links') && (!isset($node))) {
+ switch ($delta) {
+ case 'service_links_not_node':
+ $block['subject'] = t('Bookmark/Search this post');
+ $options = array(
+ 'style' => variable_get('service_links_block_not_node_style', SERVICE_LINKS_STYLE_IMAGE_AND_TEXT),
+ 'link_to_front' => variable_get('service_links_block_not_node_front', FALSE),
+ );
+ $block['content'] = theme('service_links_block_format', array(
+ 'items' => service_links_render(NULL, FALSE, $options),
+ 'style' => $options['style'],
+ ));
+ break;
+ }
+ return $block;
+ }
+}
+
+/**
+ * Implements hook_block_configure().
+ */
+function service_links_block_configure($delta = '') {
+ $form = array();
+ switch ($delta) {
+ case 'service_links':
+ $form['service_links_block_style'] = array(
+ '#type' => 'select',
+ '#title' => t('Style'),
+ '#description' => t('How the service links will appear in the block.'),
+ '#default_value' => variable_get('service_links_block_style', SERVICE_LINKS_STYLE_IMAGE_AND_TEXT),
+ '#options' => array(
+ SERVICE_LINKS_STYLE_TEXT => t('Text'),
+ SERVICE_LINKS_STYLE_IMAGE => t('Image'),
+ SERVICE_LINKS_STYLE_IMAGE_AND_TEXT => t('Image and Text'),
+ ),
+ );
+ break;
+ case 'service_links_fisheye':
+ $form['service_links_path_fisheye'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Alternative icon folder'),
+ '#size' => 60,
+ '#description' => t('If you have alternative icons write here the path without trailing slash'),
+ '#default_value' => service_links_expand_path(NULL, 'fisheye'),
+ );
+ break;
+ case 'service_links_not_node':
+ $form['service_links_block_not_node_style'] = array(
+ '#type' => 'select',
+ '#title' => t('Style'),
+ '#description' => t('How the service links will appear in the block.'),
+ '#default_value' => variable_get('service_links_block_not_node_style', SERVICE_LINKS_STYLE_IMAGE_AND_TEXT),
+ '#options' => array(
+ SERVICE_LINKS_STYLE_TEXT => t('Text'),
+ SERVICE_LINKS_STYLE_IMAGE => t('Image'),
+ SERVICE_LINKS_STYLE_IMAGE_AND_TEXT => t('Image and Text'),
+ ),
+ );
+
+ $form['service_links_block_not_node_front'] = array(
+ '#type' => 'checkbox',
+ '#title' => t('Link always to the front page'),
+ '#description' => t('If selected the services will link always to the front page %front.', array('%front' => url('', array('absolute' => TRUE)))),
+ '#default_value' => variable_get('service_links_block_not_node_front', FALSE),
+ );
+ break;
+ }
+
+ return $form;
+}
+
+/**
+ * Implements hook_block_save().
+ */
+function service_links_block_save($delta = '', $edit = array()) {
+ switch ($delta) {
+ case 'service_links':
+ variable_set('service_links_block_style', $edit['service_links_block_style']);
+ break;
+ case 'service_links_fisheye':
+ variable_set('service_links_path_fisheye', $edit['service_links_path_fisheye']);
+ break;
+ case 'service_links_not_node':
+ variable_set('service_links_block_not_node_style', $edit['service_links_block_not_node_style']);
+ variable_set('service_links_block_not_node_front', $edit['service_links_block_not_node_front']);
+ break;
+ }
+}
+
+/**
+ * Implements hook_theme().
+ */
+function service_links_theme() {
+ return array(
+ 'service_links_build_link' => array(
+ 'variables' => array(
+ 'text' => NULL,
+ 'url' => array(),
+ 'image' => NULL,
+ 'nodelink' => FALSE,
+ 'style' => NULL,
+ 'attributes' => array(),
+ ),
+ 'file' => 'service_links.theme.inc',
+ ),
+ 'service_links_node_format' => array(
+ 'variables' => array(
+ 'links' => NULL,
+ 'label' => NULL,
+ 'view_mode' => NULL,
+ 'node_type' => NULL
+ ),
+ 'file' => 'service_links.theme.inc',
+ ),
+ 'service_links_block_format' => array(
+ 'variables' => array('items' => NULL, 'style' => SERVICE_LINKS_STYLE_IMAGE_AND_TEXT),
+ 'file' => 'service_links.theme.inc',
+ ),
+ 'service_links_fisheye_format' => array(
+ 'variables' => array('items' => NULL),
+ 'file' => 'service_links.theme.inc',
+ ),
+ 'service_links_drag_table' => array(
+ 'render element' => 'form',
+ ),
+ );
+}
+
+/**
+ * Remove a service from the list if the related module is disabled
+ * and can't provide the correct values.
+ */
+function service_links_array_filter($services) {
+ $result = array();
+
+ foreach ($services as $service_id => $service) {
+ if ($service === 1) {
+ drupal_set_message(t('The service having id "@id" is missing, reactivate its module or save again the list of services.', array('@id' => $service_id)), 'warning', FALSE);
+ }
+ else {
+ $result[$service_id] = $service;
+ }
+ }
+
+ return $result;
+}
+
+/**
+ * Discover all available service links by invoking hook_service_links().
+ *
+ * @param $services
+ * If NULL, will retrieve all service link information. If an array is passed,
+ * will only obtain information for the given keyed links.
+ * @param $reset
+ * Resets the Service Links cache.
+ *
+ * @return
+ * An array containing information for all the requested services.
+ */
+function service_links_get_links($services = NULL, $reset = FALSE) {
+ $links = &drupal_static(__FUNCTION__, NULL);
+ if (!isset($links) || $reset) {
+ // Retrieve the links from the cache.
+ if (!$reset && ($cache = cache_get('service_links_get_links')) && !empty($cache->data)) {
+ $links = $cache->data;
+ }
+ else {
+ // Create the repository of links.
+ $links = array();
+ foreach (module_implements('service_links') as $module) {
+ $module_links = module_invoke($module, 'service_links');
+ foreach ($module_links as $name => $link) {
+ $link['module'] = $module;
+ $links[$name] = $link;
+ }
+ }
+ // Allow alteration of the links.
+ drupal_alter('service_links', $links);
+
+ // Save the links in the cache.
+ cache_set('service_links_get_links', $links);
+ }
+ }
+
+ // If desired, return only the wanted services.
+ if (isset($services)) {
+ // Detect a manual request and populate the array correctly.
+ if (is_numeric(key($services))) {
+ $services = array_combine($services, array_fill(0, count($services), 1));
+ }
+
+ // Provide only the services requested.
+ $services = array_merge($services, array_intersect_key($links, $services));
+
+ // Remove the unknown services.
+ $services = service_links_array_filter($services);
+ }
+
+ return isset($services) ? $services : $links;
+}
+
+/**
+ * Create short links using predefined settings.
+ */
+function service_links_short_url($url, $nid = NULL) {
+ switch (variable_get('service_links_short_links_type', SERVICE_LINKS_SHORT_URL_TYPE_NODE)) {
+ case SERVICE_LINKS_SHORT_URL_TYPE_NODE:
+ if (empty($nid)) {
+ return $url;
+ }
+ else {
+ // With alias = true doesn't change the path.
+ return url("node/$nid", array('absolute' => TRUE, 'alias' => TRUE));
+ }
+ case SERVICE_LINKS_SHORT_URL_TYPE_SERVICE:
+ if (module_exists('shorten')) {
+ $turl = shorten_url($url);
+ }
+ else {
+ $turl = drupal_http_request('http://tinyurl.com/api-create.php?url=' . urlencode($url));
+ $turl = (isset($turl->data) && ($turl->code == 200)) ? $turl->data : $url;
+ }
+ return $turl;
+ case SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_DOMAIN:
+ $burl = variable_get('service_links_domain_redirect', NULL);
+ return url($url, array('absolute' => TRUE, 'base_url' => $burl));
+ case SERVICE_LINKS_SHORT_URL_TYPE_REDIRECT_ALL:
+ $burl = variable_get('service_links_domain_redirect', NULL);
+ if (empty($nid)) {
+ return url($url, array('absolute' => TRUE, 'base_url' => $burl));
+ }
+ else {
+ return url("node/$nid", array('absolute' => TRUE, 'alias' => TRUE, 'base_url' => $burl));
+ }
+ }
+}
+
+/**
+ * Function that render all the selected services.
+ *
+ * @param $node
+ * Contains the content structured as a node object.
+ * Use the node_load() function to build one or set
+ * NULL this variable to consider the current page.
+ * @param $nodelink
+ * (optional) It determines the kind of render.
+ * If TRUE the function return an array of items
+ * compatible with the standard Drupal link section.
+ * If FALSE return an array of HTML links.
+ * Default is FALSE.
+ * @param $options
+ * (optional) Can assume the value of a valid service
+ * style either an array containing the settings
+ * to override (look at _service_links_load_settings()
+ * for more details).
+ *
+ * @return
+ * An array of HTML links if $nodelink = FALSE, an array
+ * of structured links to be themed with theme_links()
+ * if $nodelink = TRUE.
+ */
+function service_links_render($node, $nodelink = FALSE, $options = NULL) {
+ $links = array('weight' => array(), 'link' => array());
+ $settings = _service_links_load_settings();
+
+ if (empty($settings['link_show'])) {
+ return array();
+ }
+
+ if (isset($options)) {
+ if (!is_array($options)) {
+ $options = array('style' => $options);
+ }
+ $settings = array_merge($settings, $options);
+ }
+
+ _service_links_get_tags($node, $settings);
+
+ // Services are filtered in _service_links_load_settings().
+ $services = service_links_get_links($settings['link_show']);
+
+ foreach ($services as $service_id => $service) {
+ // Load the position.
+ $links['weight'][] = isset($settings['link_weight'][$service_id]) ? $settings['link_weight'][$service_id] : 0;
+
+ // Render the Service.
+ $links['link'] += _service_links_render($service_id, $service, $settings, $nodelink, $node);
+ }
+
+ if (!empty($links['link'])) {
+ array_multisort($links['weight'], $links['link']);
+ }
+
+ return !empty($links['link']) ? $links['link'] : array();
+}
+
+/**
+ * This function render only the services requested
+ * by their id.
+ *
+ * @param $service_ids
+ * The list of requested services, can be just a
+ * string, for a single services, or an array of
+ * id, don't need enable them on the admin page.
+ * @param $node
+ * Contains the content structured as a node object.
+ * Use the node_load() function to build one or set
+ * NULL this variable to consider the current page.
+ * @param $nodelink
+ * (optional) It determines the kind of render.
+ * If TRUE the function return an array of items
+ * compatible with the standard Drupal link section.
+ * If FALSE return an array of HTML links.
+ * Default is FALSE.
+ * @param $options
+ * (optional) Can assume the value of a valid service
+ * style either an array containing the settings
+ * to override (look at _service_links_load_settings()
+ * for more details).
+ *
+ * @return
+ * An array of HTML links if $nodelink = FALSE, an array
+ * of structured links to be themed with theme_links()
+ * if $nodelink = TRUE.
+ */
+function service_links_render_some($service_ids, $node = NULL, $nodelink = FALSE, $options = NULL) {
+ if (is_array($service_ids)) {
+ $services = service_links_get_links($service_ids);
+ }
+ else {
+ $services = service_links_get_links(array($service_ids));
+ }
+
+ if (empty($services)) {
+ return array();
+ }
+
+ $settings = _service_links_load_settings();
+ if (isset($options)) {
+ if (!is_array($options)) {
+ $options = array('style' => $options);
+ }
+ $settings = array_merge($settings, $options);
+ }
+
+ _service_links_get_tags($node, $settings);
+
+ $links = array();
+ foreach ($services as $service_id => $service) {
+ $links += _service_links_render($service_id, $service, $settings, $nodelink, $node);
+ }
+
+ return $links;
+}
+
+/**
+ * The common render function used privately.
+ */
+function _service_links_render($service_id, $service, $settings, $nodelink, $node = NULL) {
+ if (isset($service['preset'])) {
+ if (function_exists($function = $service['preset'])) {
+ $function($service, $settings, $node);
+ }
+ }
+
+ // On Drupal 7 this tag should be filled before the split otherwise will be lost.
+ $service['link'] = str_replace('', $settings['subst']['front-page'], $service['link']);
+
+ if (strpos($service['link'], '=') === FALSE) {
+ $service['url'] = array($service['link']);
+ }
+ else {
+ $service['url'] = preg_split('/\?/', $service['link']);
+ }
+
+ if (count($service['url']) > 1) {
+ $service['url'][1] = service_links_get_query($service['url'][1]);
+ $service['url'][1] = str_replace($settings['tag'], $settings['subst'], $service['url'][1]);
+ }
+ else {
+ $service['url'][0] = str_replace($settings['tag'], $settings['subst'], $service['url'][0]);
+ }
+
+ $service['attributes']['title'] = t($service['description']);
+ $class = str_replace(array('][', '_', ' '), '-', 'service_links-'. $service_id);
+ $service['attributes']['class'] = isset($service['attributes']['class']) ? array_merge($service['attributes']['class'], array($class)) : array($class);
+ $service['attributes'] += $settings['attributes'];
+
+ $service['icon'] = isset($service['icon']) ? $service['icon'] : "$service_id.png";
+
+ $service_id = str_replace('_', '-', 'service_links_'. $service_id);
+
+ // Check if a predefined style should be imposed.
+ if (empty($service['style'])) {
+ $service['style'] = $settings['style'];
+ }
+
+ // Add the related JavaScript and CSS.
+ if (isset($service['javascript'])) {
+ _service_links_add_js($service['javascript']);
+ }
+ if (isset($service['css'])) {
+ drupal_add_css(service_links_expand_path($service['css'], 'css'));
+ }
+
+ // Invoke callback function.
+ if (isset($service['callback'])) {
+ if (function_exists($function = $service['callback'])) {
+ $function($service, $settings['subst']);
+ }
+ }
+
+ // Create the HTML.
+ $link = theme('service_links_build_link', array(
+ 'text' => t($service['name']),
+ 'url' => $service['url'],
+ 'image' => $service['icon'],
+ 'nodelink' => $nodelink,
+ 'style' => $service['style'],
+ 'attributes' => $service['attributes'],
+ ));
+
+ return array($service_id => $link);
+}
+
+/**
+ * Load correctly the needed javascripts.
+ */
+function _service_links_add_js($javascript) {
+ global $is_https;
+ static $external_js;
+
+ if (!is_array($javascript)) {
+ $javascript = array($javascript);
+ }
+
+ if (!isset($external_js)) {
+ $external_js = array();
+ }
+
+ foreach ($javascript as $js) {
+ if (strpos($js, '://') !== FALSE) {
+ if ($is_https) {
+ // Ensure that we embed the https js library.
+ $js = str_replace('http://', 'https://', $js);
+ }
+
+ if (!in_array($js, $external_js)) {
+ drupal_add_js($js, array('type' => 'external'));
+ $external_js[] = $js;
+ }
+ }
+ else {
+ drupal_add_js(service_links_expand_path($js, 'javascript'));
+ }
+ }
+}
+
+/**
+ * Fill an array with tags and the content to substitute.
+ */
+function _service_links_get_tags($node, &$settings) {
+ if (!empty($node)) {
+ $title = _service_links_get_node_title($node, $settings);
+
+ $path = _service_links_get_node_path($node);
+ $url = url("$path", array('absolute' => TRUE, 'query' => service_links_get_query($settings['text_to_append'])));
+
+ $query = drupal_get_path_alias("node/{$node->nid}");
+
+ $body = field_get_items('node', $node, 'body');
+ $teaser = $body ? strip_tags(text_summary($body[0]['value'])) : '';
+
+ $nid = $node->nid;
+ }
+ elseif (isset($settings['data'])) {
+ $title = isset($settings['data']['title']) ? $settings['data']['title'] : '';
+ $url = isset($settings['data']['url']) ? $settings['data']['url'] : '';
+ $query = isset($settings['data']['query']) ? $settings['data']['query'] : '';
+ $teaser = isset($settings['data']['teaser']) ? $settings['data']['teaser'] : '';
+ $nid = isset($settings['data']['node_id']) ? $settings['data']['node_id'] : NULL;
+ }
+ else {
+ $title = drupal_get_title();
+
+ $url = _service_links_get_page_url(NULL, $settings);
+
+ // The query shouldn't follow the front_page alias but point the original page.
+ $query = drupal_get_normal_path($_GET['q']);
+
+ $teaser = '';
+ $nid = NULL;
+ }
+
+ $source = variable_get('site_name', 'Drupal');
+
+ $long_url = $url;
+
+ $front_page = url('', array('absolute' => TRUE));
+ if ((variable_get('clean_url', 0) == 0) && (strpos($front_page, '?q=') === FALSE)) {
+ $front_page .= '?q=';
+ }
+ else {
+ // Ensure a trailing slash on multilingual sites with clean url on.
+ $front_page = preg_replace('/([0-9a-z-_]+)$/i', '\1/', $front_page);
+ }
+
+ switch ($settings['short_links_use']) {
+ case SERVICE_LINKS_SHORT_URL_USE_NEVER:
+ $short_url = $url;
+ break;
+ case SERVICE_LINKS_SHORT_URL_USE_WHEN_REQUESTED:
+ $short_url = service_links_short_url($url, $nid);
+ break;
+ case SERVICE_LINKS_SHORT_URL_USE_ALWAYS:
+ $short_url = service_links_short_url($url, $nid);
+ $url = $short_url;
+ break;
+ }
+
+ $settings['tag'] = array(
+ 'raw-encoded-title' => '',
+ 'raw-encoded-url' => '',
+ 'raw-encoded-teaser' => '',
+ 'raw-encoded-short-url' => '',
+ 'raw-encoded-long-url' => '',
+ 'raw-encoded-query' => '',
+ 'raw-encoded-source' => '',
+ 'encoded-title' => '',
+ 'encoded-url' => '',
+ 'encoded-teaser' => '',
+ 'encoded-short-url' => '',
+ 'encoded-long-url' => '',
+ 'encoded-query' => '',
+ 'encoded-source' => '',
+ 'teaser' => '',
+ 'short-url' => '',
+ 'long-url' => '',
+ 'source' => '',
+ 'node-id' => '',
+ 'query' => '',
+ 'url' => '',
+ 'title' => '',
+ 'front-page' => '',
+ );
+ $settings['subst'] = array(
+ //'raw-encoded-title' => rawurlencode($title),
+ 'raw-encoded-title' => $title,
+ //'raw-encoded-url' => rawurlencode($url),
+ 'raw-encoded-url' => $url,
+ //'raw-encoded-teaser' => rawurlencode($teaser),
+ 'raw-encoded-teaser' => $teaser,
+ //'raw-encoded-short-url' => rawurlencode($short_url),
+ 'raw-encoded-short-url' => $short_url,
+ //'raw-encoded-long-url' => rawurlencode($long_url),
+ 'raw-encoded-long-url' => $long_url,
+ //'raw-encoded-query' => rawurlencode($query),
+ 'raw-encoded-query' => $query,
+ //'raw-encoded-source' => rawurlencode($source),
+ 'raw-encoded-source' => $source,
+ //'encoded-title' => urlencode($title),
+ 'encoded-title' => $title,
+ //'encoded-url' => urlencode($url),
+ 'encoded-url' => $url,
+ //'encoded-teaser' => urlencode($teaser),
+ 'encoded-teaser' => $teaser,
+ //'encoded-short-url' => urlencode($short_url),
+ 'encoded-short-url' => $short_url,
+ //'encoded-long-url' => urlencode($long_url),
+ 'encoded-long-url' => $long_url,
+ //'encoded-query' => urlencode($query),
+ 'encoded-query' => $query,
+ //'encoded-source' => urlencode($source),
+ 'encoded-source' => $source,
+ //Not needed
+ 'teaser' => $teaser,
+ 'short-url' => $short_url,
+ 'long-url' => $long_url,
+ 'source' => $source,
+ 'node-id' => $nid,
+ 'query' => $query,
+ 'url' => $url,
+ 'title' => $title,
+ 'front-page' => $front_page,
+ );
+}
+
+/**
+ * Return the url for not-node pages.
+ */
+function _service_links_get_page_url($node, $settings) {
+ if ($settings['link_to_front'] || drupal_is_front_page()) {
+ $url = url('', array('absolute' => TRUE, 'query' => service_links_get_query($settings['text_to_append'])));
+ }
+ else {
+ $url = url($_GET['q'], array('absolute' => TRUE, 'query' => service_links_get_query($settings['text_to_append'])));
+ }
+
+ return $url;
+}
+
+/**
+ * Return the properly title.
+ */
+function _service_links_get_node_title($node, $settings) {
+ $title = isset($node->title) ? $node->title : '';
+
+ switch ($settings['title_override']) {
+ case SERVICE_LINKS_TAG_TITLE_NODE:
+ break;
+ case SERVICE_LINKS_TAG_TITLE_OVERRIDE:
+ $title = str_replace('', $title, $settings['title_text']);
+ break;
+ case SERVICE_LINKS_TAG_TITLE_TOKEN:
+ $title = token_replace($settings['title_text'], array('node' => $node));
+ break;
+ }
+
+ return $title;
+}
+
+/**
+ * Detect if the node is used as front page and provide
+ * the path to use.
+ */
+function _service_links_get_node_path($node) {
+ static $front_page;
+
+ if (!isset($front_page)) {
+ $front_page = variable_get('site_frontpage', 'node');
+ }
+
+ $path = "node/$node->nid";
+ if (($path == $front_page) || (isset($node->uri) && ((object)$node->uri['path'] == $front_page))) {
+ $path = '';
+ }
+
+ return $path;
+}
+
+/**
+ * Check if the service links should be displayed for the content type,
+ * for category or one of the other selected options.
+ */
+function service_links_show($node) {
+ $links_show = FALSE;
+ $category_type = FALSE;
+ global $user;
+
+ if (!_service_links_match_path()) {
+ return FALSE;
+ }
+
+ if (in_array(strtolower(arg(0)), array('print', 'printpdf', 'printmail'))) {
+ return FALSE;
+ }
+
+ if (variable_get('service_links_hide_for_author', FALSE) && ($user->uid == $node->uid)) {
+ return FALSE;
+ }
+
+ if (variable_get('service_links_hide_if_unpublished', FALSE) && ($node->status == '0')) {
+ return FALSE;
+ }
+
+ $node_type = in_array($node->type, variable_get('service_links_node_types', array()), TRUE);
+ if (module_exists('taxonomy') && !empty($node->field_tags)) {
+ $categories_allowed = variable_get('service_links_category_types', array());
+ $language = isset($node->field_tags[$node->language]) ? $node->language : 'und';
+
+ foreach ($node->field_tags[$language] as $term) {
+ $category_type |= in_array($term['tid'], $categories_allowed, FALSE);
+ }
+ }
+ if ($node_type || $category_type) {
+ $links_show = TRUE;
+ }
+
+ return $links_show;
+}
+
+/**
+ * Match the current path with the list or the code
+ * inserted in the configuration page.
+ */
+function _service_links_match_path() {
+ static $page_match;
+
+ if (isset($page_match)) {
+ return $page_match;
+ }
+
+ $pages = variable_get('service_links_page_match_for_node', '');
+ $visibility = variable_get('service_links_visibility_for_node', SERVICE_LINKS_VISIBILITY_NOT_LISTED);
+ if (!empty($pages)) {
+ // Convert path to lowercase. This allows comparison of the same path
+ // with different case. Ex: /Page, /page, /PAGE.
+ $pages = drupal_strtolower($pages);
+
+ if ($visibility < SERVICE_LINKS_VISIBILITY_PHP) {
+ $path = drupal_strtolower(drupal_get_path_alias($_GET['q']));
+ // Compare with the internal and path alias (if any).
+ $page_match = drupal_match_path($path, $pages);
+ if ($path != $_GET['q']) {
+ $page_match = $page_match || drupal_match_path($_GET['q'], $pages);
+ }
+ // When $visibility has a value of 0, the links are displayed on
+ // all pages except those listed in $pages. When set to 1, it
+ // is displayed only on those pages listed in $pages.
+ $page_match = !($visibility xor $page_match);
+ }
+ elseif (module_exists('php')) {
+ $page_match = php_eval($pages);
+ }
+ else {
+ $page_match = FALSE;
+ }
+ }
+ else {
+ $page_match = TRUE;
+ }
+
+ return $page_match;
+}
+
+/**
+ * Load the static settings and keep clear the render function.
+ */
+function _service_links_load_settings() {
+ static $settings = NULL;
+
+ if (!isset($settings)) {
+ $settings['short_links_use'] = variable_get('service_links_short_links_use', SERVICE_LINKS_SHORT_URL_USE_NEVER);
+
+ $settings['attributes'] = array('rel' => 'nofollow');
+ if (variable_get('service_links_new_window', 0)) {
+ $settings['attributes'] += array('target' => '_blank');
+ }
+ $settings['style'] = variable_get('service_links_style', SERVICE_LINKS_STYLE_TEXT);
+
+ $settings['link_weight'] = variable_get('service_links_weight', array());
+ $settings['link_show'] = array_filter(variable_get('service_links_show', array()));
+
+ $settings['text_to_append'] = strip_tags(variable_get('service_links_append_to_url', ''));
+
+ $settings['title_override'] = variable_get('service_links_override_title', SERVICE_LINKS_TAG_TITLE_NODE);
+ $settings['title_text'] = variable_get('service_links_override_title_text', '');
+
+ $settings['link_to_front'] = FALSE;
+ }
+
+ return $settings;
+}
+
+/**
+ * Expand the path around a filename depending from the context.
+ *
+ * @param $filename
+ * If NULL the function return only the path with trailing slash.
+ * @param $context
+ * Define what path should consider this function.
+ * @param $default
+ * Concerning the image path is useful define a default path if
+ * the alternative is not set up.
+ *
+ * @return
+ * A string with the full filename or the path.
+ */
+function service_links_expand_path($filename = NULL, $context = 'icons', $default = 'preset') {
+ static $sl_paths;
+ static $sl_checkpath;
+
+ if (strpos($filename, '/') !== FALSE) {
+ return $filename;
+ }
+
+ if (!isset($sl_paths)) {
+ $sl_paths['base'] = drupal_get_path('module', 'service_links');
+
+ $sl_paths += array(
+ 'preset' => $sl_paths['base'] .'/images',
+ 'javascript' => $sl_paths['base'] .'/js',
+ 'css' => $sl_paths['base'] .'/css',
+ );
+
+ $sl_checkpath = array(
+ 'preset' => FALSE,
+ 'javascript' => FALSE,
+ 'css' => FALSE,
+ );
+ }
+
+ if (!isset($sl_paths[$context])) {
+ $sl_paths[$context] = variable_get("service_links_path_{$context}", '');
+ if (empty($sl_paths[$context])) {
+ $sl_paths[$context] = $sl_paths[$default];
+ }
+
+ $sl_checkpath[$context] = variable_get("service_links_check_{$context}", FALSE);
+ }
+
+ if (isset($filename)) {
+ if ($sl_checkpath[$context]) {
+ if (file_exists($sl_paths[$context] .'/'. $filename)) {
+ return $sl_paths[$context] .'/'. $filename;
+ }
+ else {
+ return $sl_paths[$default] .'/'. $filename;
+ }
+ }
+ else {
+ return $sl_paths[$context] .'/'. $filename;
+ }
+ }
+ else {
+ return $sl_paths[$context];
+ }
+}
+
+/**
+ * Split a query string in the properly array.
+ */
+function service_links_get_query($query_str) {
+ if (empty($query_str)) {
+ return NULL;
+ }
+ $result = array();
+
+ // parse_str() replaces dots and squares with underscores.
+ $query_str = explode('&', $query_str);
+ foreach($query_str as $q) {
+ $key_value = explode('=', $q);
+ $result[$key_value[0]] = isset($key_value[1]) ? $key_value[1] : '';
+ }
+
+ return $result;
+}
+
+/**
+ * Implements hook_views_api().
+ */
+function service_links_views_api() {
+ return array(
+ 'api' => 2,
+ 'path' => drupal_get_path('module', 'service_links'),
+ );
+}
diff --git a/web/sites/all/modules/contrib/service_links/service_links.theme.inc b/web/sites/all/modules/contrib/service_links/service_links.theme.inc
new file mode 100644
index 0000000..3e1e4f9
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/service_links.theme.inc
@@ -0,0 +1,161 @@
+ $text,
+ 'href' => $url[0],
+ 'query' => $query,
+ 'attributes' => $attributes,
+ );
+ break;
+ case SERVICE_LINKS_STYLE_IMAGE:
+ $alt_text = t('!name logo', array('!name' => $text));
+ $link = array(
+ 'title' => theme('image', array('path' => service_links_expand_path($image), 'alt' => $alt_text)),
+ 'href' => $url[0],
+ 'query' => $query,
+ 'attributes' => $attributes,
+ 'html' => TRUE,
+ );
+ break;
+ case SERVICE_LINKS_STYLE_IMAGE_AND_TEXT:
+ $alt_text = t('!name logo', array('!name' => $text));
+ $link = array(
+ 'title' => theme('image', array('path' => service_links_expand_path($image), 'alt' => $alt_text)) .' '. $text,
+ 'href' => $url[0],
+ 'query' => $query,
+ 'attributes' => $attributes,
+ 'html' => TRUE,
+ );
+ break;
+ case SERVICE_LINKS_STYLE_EMPTY:
+ $link = array(
+ 'title' => '' . $text . '',
+ 'href' => $url[0],
+ 'query' => $query,
+ 'attributes' => $attributes,
+ 'html' => TRUE,
+ );
+ break;
+ default:
+ $link = theme($style, $variables);
+ }
+ }
+ else {
+ $attributes = array('attributes' => $attributes);
+ if (isset($url[1])) {
+ $attributes['query'] = $url[1];
+ }
+
+ switch ($style) {
+ case SERVICE_LINKS_STYLE_TEXT:
+ $link = l($text, $url[0], $attributes);
+ break;
+ case SERVICE_LINKS_STYLE_IMAGE:
+ $attributes['html'] = TRUE;
+ $alt_text = t('!name logo', array('!name' => $text));
+ $link = l(theme('image', array('path' => service_links_expand_path($image), 'alt' => $alt_text)), $url[0], $attributes);
+ break;
+ case SERVICE_LINKS_STYLE_IMAGE_AND_TEXT:
+ $attributes['html'] = TRUE;
+ $alt_text = t('!name logo', array('!name' => $text));
+ $link = l(theme('image', array('path' => service_links_expand_path($image), 'alt' => $alt_text)) .' '. $text, $url[0], $attributes);
+ break;
+ case SERVICE_LINKS_STYLE_EMPTY:
+ $attributes['html'] = TRUE;
+ $link = l('' . $text . '', $url[0], $attributes);
+ break;
+ case SERVICE_LINKS_STYLE_FISHEYE:
+ $attributes['attributes']['class'] = isset($attributes['attributes']['class']) ? array_merge($attributes['attributes']['class'], array('fisheyeItem')) : array('fisheyeItem');
+ $attributes['html'] = TRUE;
+ $link = l(theme('image', array('path' => service_links_expand_path($image, 'fisheye'), 'alt' => $text, 'getsize' => FALSE)) .''. $text .'', $url[0], $attributes);
+ break;
+ default:
+ $link = theme($style, $variables);
+ }
+ }
+
+ return $link;
+}
+
+/**
+ * Format the items shown in the node.
+ */
+function theme_service_links_node_format($variables) {
+ $links = $variables['links'];
+ $label = $variables['label'];
+ $view_mode = $variables['view_mode'];
+ $node_type = $variables['node_type'];
+
+ if ($view_mode == 'rss') {
+ $result = array();
+ foreach($links as $l) {
+ $result[] = l($l['title'], $l['href'], $l);
+ }
+
+ return '' . implode(' ', $result) . '
';
+ }
+
+ if (isset($label) && !empty($label)) {
+ return ''. t('@label', array('@label' => $label)) .'
'. theme('links', array('links' => $links)) .'
';
+ }
+ else {
+ return ''. theme('links', array('links' => $links)) .'
';
+ }
+}
+
+/**
+ * Format the items shown in one of the provided blocks.
+ */
+function theme_service_links_block_format($variables) {
+ $items = $variables['items'];
+ $style = $variables['style'];
+
+ if (empty($items)) {
+ return;
+ }
+
+ switch ($style) {
+ case SERVICE_LINKS_STYLE_IMAGE:
+ $output = implode(' ', $items);
+ break;
+ default:
+ $output = theme('item_list', array('items' => array_values($items)));
+ break;
+ }
+
+ return '' . $output . '
';
+}
+
+/**
+ * Format the items shown in the Fisheye block.
+ */
+function theme_service_links_fisheye_format($variables) {
+ $items = $variables['items'];
+
+ drupal_add_js(service_links_expand_path('interface.js', 'javascript'), array('weight' => 90));
+ drupal_add_js(service_links_expand_path('service_links_fisheye.js', 'javascript'), array('weight' => 90));
+ drupal_add_css(service_links_expand_path('service_links_fisheye.css', 'css'));
+
+ return "\r\n". implode("\r\n", $items) ."\r\n
";
+}
diff --git a/web/sites/all/modules/contrib/service_links/service_links.variable.inc b/web/sites/all/modules/contrib/service_links/service_links.variable.inc
new file mode 100644
index 0000000..983c9ce
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/service_links.variable.inc
@@ -0,0 +1,15 @@
+ t('Print this label', array(), $options),
+ 'description' => t('Label for service links in nodes', array(), $options),
+ 'type' => 'string',
+ );
+
+ return $variable;
+}
diff --git a/web/sites/all/modules/contrib/service_links/service_links.views.inc b/web/sites/all/modules/contrib/service_links/service_links.views.inc
new file mode 100644
index 0000000..d80be92
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/service_links.views.inc
@@ -0,0 +1,38 @@
+ t('Service links'),
+ 'help' => t('Display links to social sharing websites like Digg, del.icio.us, reddit, Technorati etc..'),
+ 'field' => array(
+ 'handler' => 'service_links_handler_field_service_links',
+ ),
+ );
+
+ return $data;
+}
+
+/**
+ * Implements hook_views_handlers().
+ */
+function service_links_views_handlers() {
+ return array(
+ 'info' => array(
+ 'path' => drupal_get_path('module', 'service_links'),
+ ),
+ 'handlers' => array(
+ 'service_links_handler_field_service_links' => array(
+ 'parent' => 'views_handler_field',
+ ),
+ ),
+ );
+}
diff --git a/web/sites/all/modules/contrib/service_links/service_links_handler_field_service_links.inc b/web/sites/all/modules/contrib/service_links/service_links_handler_field_service_links.inc
new file mode 100644
index 0000000..6bda474
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/service_links_handler_field_service_links.inc
@@ -0,0 +1,42 @@
+ensure_my_table();
+ $this->add_additional_fields();
+ }
+
+ function option_definition() {
+ $options = parent::option_definition();
+
+ return $options;
+ }
+
+ function options_form(&$form, &$form_state) {
+ parent::options_form($form, $form_state);
+
+ // Remove the alteration stuff
+ unset($form['alter']);
+ }
+
+ function render($values) {
+ if (isset($values->_field_data['nid']['entity'])) {
+ $node = $values->_field_data['nid']['entity'];
+ }
+ else {
+ $node = NULL;
+ }
+
+ return theme('links', array('links' => service_links_render($node, TRUE)));
+ }
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/basque_services.info b/web/sites/all/modules/contrib/service_links/services/basque_services.info
new file mode 100644
index 0000000..d6063fe
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/basque_services.info
@@ -0,0 +1,12 @@
+name = Basque Services
+description = Provide the Basque Services: Zabaldu, Bildu, Aupatu
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/basque_services.module b/web/sites/all/modules/contrib/service_links/services/basque_services.module
new file mode 100644
index 0000000..01b7cfc
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/basque_services.module
@@ -0,0 +1,33 @@
+ 'Zabaldu',
+ 'description' => t('Add a new on Zabaldu'),
+ 'link' => 'http://zabaldu.com/api/zabaldu_edo_bozkatu.php?url=&title=',
+ );
+ $links['_eu_bildu'] = array(
+ 'name' => 'Bildu',
+ 'description' => t('Bookmark this post on Bildu'),
+ 'link' => 'http://www.bildu.net/bookmarks/bildu?action=add&address=&title=',
+ );
+ $links['_eu_aupatu'] = array(
+ 'name' => 'Aupatu',
+ 'description' => t('Add a new on Aupatu'),
+ 'link' => 'http://www.aupatu.com/eu/submit.php?url=&title=',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/dutch_services.info b/web/sites/all/modules/contrib/service_links/services/dutch_services.info
new file mode 100644
index 0000000..8da40e9
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/dutch_services.info
@@ -0,0 +1,12 @@
+name = Dutch Services
+description = Provide the Dutch Services: eKudos, Hyves, Nujij
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/dutch_services.module b/web/sites/all/modules/contrib/service_links/services/dutch_services.module
new file mode 100644
index 0000000..7a10fd9
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/dutch_services.module
@@ -0,0 +1,33 @@
+ 'Nujij',
+ 'description' => t('Add to nujij'),
+ 'link' => 'http://nujij.nl/jij.lynkx?t=&u=',
+ );
+ $links['_nl_ekudos'] = array(
+ 'name' => 'eKudos',
+ 'description' => t('Bookmark this post on eKudos'),
+ 'link' => 'http://www.ekudos.nl/artikel/nieuw?url=&title=',
+ );
+ $links['_nl_hyves'] = array(
+ 'name' => 'Hyves',
+ 'description' => t('Tip this on Hyves'),
+ 'link' => 'http://www.hyves-share.nl/button/tip/?tipcategoryid=12&rating=5&title=&body=Bron%3A%20%5Burl%3D%5D%5B%2Furl%5D',
+ );
+
+ return $links;
+}
\ No newline at end of file
diff --git a/web/sites/all/modules/contrib/service_links/services/farsi_services.info b/web/sites/all/modules/contrib/service_links/services/farsi_services.info
new file mode 100644
index 0000000..00d1928
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/farsi_services.info
@@ -0,0 +1,12 @@
+name = Farsi Services
+description = Provide the Farsi services: Balatarin, Donbaleh, Friendfa, Viwio.
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/farsi_services.module b/web/sites/all/modules/contrib/service_links/services/farsi_services.module
new file mode 100644
index 0000000..9bccc83
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/farsi_services.module
@@ -0,0 +1,38 @@
+ 'Balatarin',
+ 'description' => t('Bookmark this post on balatarin'),
+ 'link' => 'http://balatarin.com/links/submit?phase=2&url=&title=',
+ );
+ $links['_fa_donbaleh'] = array(
+ 'name' => 'Donbaleh',
+ 'description' => t('Bookmark this post on donbaleh'),
+ 'link' => 'http://donbaleh.com/submit.php?url=&subject=',
+ );
+ $links['_fa_friendfa'] = array(
+ 'name' => 'Friendfa',
+ 'description' => t('Bookmark this post on friendfa'),
+ 'link' => 'http://www.friendfa.com/share?status=&url=',
+ );
+ $links['_fa_viwio'] = array(
+ 'name' => 'Viwio',
+ 'description' => t('Share this on Viwio'),
+ 'link' => 'http://www.viwio.com/home/?status= ',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/favorite_services.info b/web/sites/all/modules/contrib/service_links/services/favorite_services.info
new file mode 100644
index 0000000..3cd1f99
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/favorite_services.info
@@ -0,0 +1,12 @@
+name = Favorite Services
+description = Add the page in your favorite, work with Chrome, Firefox, IE, Opera
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/favorite_services.module b/web/sites/all/modules/contrib/service_links/services/favorite_services.module
new file mode 100644
index 0000000..8f5fcf6
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/favorite_services.module
@@ -0,0 +1,23 @@
+ t('Favorite'),
+ 'description' => t('Add this page in your favorites'),
+ 'link' => '&favtitle=',
+ 'attributes' => array('style' => 'display:none;'),
+ 'javascript' => 'favorite_services.js',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/forward_services.info b/web/sites/all/modules/contrib/service_links/services/forward_services.info
new file mode 100644
index 0000000..aecb008
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/forward_services.info
@@ -0,0 +1,13 @@
+name = Forward Services
+description = Add the support for Forward module which send the link through email.
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+dependencies[] = forward
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/forward_services.module b/web/sites/all/modules/contrib/service_links/services/forward_services.module
new file mode 100644
index 0000000..983b09c
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/forward_services.module
@@ -0,0 +1,30 @@
+ 'Forward',
+ 'link' => (variable_get('clean_url', 0) == 1) ? 'forward?path=' : 'forward&path=',
+ 'description' => t('Send to a friend'),
+ 'preset' => 'forward_url_fix',
+ );
+
+ return $links;
+}
+
+function forward_url_fix(&$service, &$settings, $node = NULL) {
+ if (isset($node->nid)) {
+ $service['link'] = str_replace('', 'node/', $service['link']);
+ }
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/general_services.info b/web/sites/all/modules/contrib/service_links/services/general_services.info
new file mode 100644
index 0000000..043aa7d
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/general_services.info
@@ -0,0 +1,12 @@
+name = General Services
+description = Blinklist, Box, del.icio.us, Digg, Diigo, Facebook, Furl, Google Bookmark, Google Plus, Icerocket, Identi.ca, Linkedin, Mister Wong, Mixx, MySpace, Newsvine, Newskicks, Phing this, Reddit, StumbleUpon, Technorati, Twitter, Yahoo
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/general_services.module b/web/sites/all/modules/contrib/service_links/services/general_services.module
new file mode 100644
index 0000000..d6f14ad
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/general_services.module
@@ -0,0 +1,145 @@
+ 'del.icio.us',
+ 'description' => t('Bookmark this post on del.icio.us'),
+ 'link' => 'http://del.icio.us/post?url=&title=',
+ );
+ $links['digg'] = array(
+ 'name' => 'Digg',
+ 'description' => t('Digg this post on digg.com'),
+ 'link' => 'http://digg.com/submit?phase=2&url=&title=',
+ );
+ $links['stumbleupon'] = array(
+ 'name' => 'StumbleUpon',
+ 'description' => t('Thumb this up at StumbleUpon'),
+ 'link' => 'http://www.stumbleupon.com/submit?url=&title=',
+ 'icon' => 'stumbleit.png',
+ );
+ $links['twitter'] = array(
+ 'name' => 'Twitter',
+ 'description' => t('Share this on Twitter'),
+ 'link' => 'http://twitter.com/share?url=&text=',
+ );
+ $links['pingthis'] = array(
+ 'name' => 'Ping This!',
+ 'link' => 'http://ping.fm/ref/?link=&title=&body=',
+ 'description' => t('Submit to Ping.fm'),
+ );
+ $links['reddit'] = array(
+ 'name' => 'Reddit',
+ 'link' => 'http://reddit.com/submit?url=&title=',
+ 'description' => t('Submit this post on reddit.com'),
+ );
+ $links['slashdot'] = array(
+ 'name' => 'SlashDot',
+ 'link' => 'http://slashdot.org/bookmark.pl?url=&title=',
+ 'description' => t('Bookmark this post on SlashDot'),
+ );
+ $links['newsvine'] = array(
+ 'name' => 'Newsvine',
+ 'link' => 'http://www.newsvine.com/_tools/seed&save?u=&h=',
+ 'description' => t('Submit this post on newsvine.com'),
+ );
+ $links['furl'] = array(
+ 'name' => 'Furl',
+ 'link' => 'http://www.furl.net/storeIt.jsp?u=&t=',
+ 'description' => t('Submit this post on furl.net'),
+ );
+ $links['facebook'] = array(
+ 'name' => 'Facebook',
+ 'link' => 'http://www.facebook.com/sharer.php?u=&t=',
+ 'description' => t('Share on Facebook'),
+ );
+ $links['myspace'] = array(
+ 'name' => 'MySpace',
+ 'link' => 'http://www.myspace.com/index.cfm?fuseaction=postto&t=&u=',
+ 'description' => t('Share on MySpace'),
+ );
+ $links['google'] = array(
+ 'name' => 'Google',
+ 'link' => 'http://www.google.com/bookmarks/mark?op=add&bkmk=&title=',
+ 'description' => t('Bookmark this post on Google'),
+ );
+ $links['google_plus'] = array(
+ 'name' => 'Google+',
+ 'link' => 'https://plus.google.com/share?url=',
+ 'description' => t('Share this on Google+'),
+ );
+ $links['yahoo'] = array(
+ 'name' => 'Yahoo',
+ 'link' => 'http://bookmarks.yahoo.com/myresults/bookmarklet?u=&t=',
+ 'description' => t('Bookmark this post on Yahoo'),
+ );
+ $links['linkedin'] = array(
+ 'name' => 'LinkedIn',
+ 'link' => 'http://www.linkedin.com/shareArticle?mini=true&url=&title=&summary=&source=',
+ 'description' => t('Publish this post to LinkedIn'),
+ );
+ $links['technorati'] = array(
+ 'name' => 'Technorati',
+ 'link' => 'http://technorati.com/search/',
+ 'description' => t('Search Technorati for links to this post'),
+ );
+ $links['technorati_favorite'] = array(
+ 'name' => 'Favorite on Technorati',
+ 'link' => 'http://technorati.com/faves?sub=addfavbtn&add=',
+ 'description' => t('Add this post to your Technorati Favorites'),
+ 'icon' => 'technorati.png',
+ );
+ $links['icerocket'] = array(
+ 'name' => 'Icerocket',
+ 'link' => 'http://blogs.icerocket.com/search?q=',
+ 'description' => t('Search IceRocket for links to this post'),
+ );
+ $links['misterwong'] = array(
+ 'name' => 'Mister Wong',
+ 'link' => 'http://www.mister-wong.com/addurl/?bm_url=&bm_description=',
+ 'description' => t('Bookmark this post on Mister Wong'),
+ );
+ $links['mixx'] = array(
+ 'name' => 'Mixx',
+ 'link' => 'http://www.mixx.com/submit?page_url=&title=',
+ 'description' => t('Submit this post on mixx.com'),
+ );
+ $links['box'] = array(
+ 'name' => 'Box',
+ 'link' => 'https://www.box.net/api/1.0/import?url=&name=&description=&import_as=link',
+ 'description' => t('Box it!'),
+ );
+ $links['blinklist'] = array(
+ 'name' => 'Blinklist',
+ 'link' => 'http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=&Title=&Pop=yes',
+ 'description' => t('Add to Blinklist'),
+ );
+ $links['identica'] = array(
+ 'name' => 'identi.ca',
+ 'link' => 'http://identi.ca/?action=newnotice&status_textarea= ',
+ 'description' => t('Dent this on identi.ca'),
+ );
+ $links['newskicks'] = array(
+ 'name' => 'Newskicks',
+ 'link' => 'http://newskicks.com/submit.php?url=',
+ 'description' => t('Kicks this post on NewsKicks'),
+ );
+ $links['diigo'] = array(
+ 'name' => 'Diigo',
+ 'description' => t('Post on Diigo'),
+ 'link' => 'http://www.diigo.com/post?url=&title=&desc=',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/german_services.info b/web/sites/all/modules/contrib/service_links/services/german_services.info
new file mode 100644
index 0000000..87035e8
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/german_services.info
@@ -0,0 +1,12 @@
+name = German Services
+description = Provide the German Services: Alltagz, Colivia, Icio, InfoPirat, Linkarena, MeinVZ, Mister Wong, Netselektor, Oneview, Readster, seekXL, SeoIGG, Weblinkr, Webnews, Xing, Yigg
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/german_services.module b/web/sites/all/modules/contrib/service_links/services/german_services.module
new file mode 100644
index 0000000..559d30c
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/german_services.module
@@ -0,0 +1,99 @@
+ 'Alltagz',
+ 'description' => t('Add to Alltagz'),
+ 'link' => 'http://www.alltagz.de/bookmarks/?action=add&popup=1&address=&title=&description=',
+ );
+ $links['_de_misterwong'] = array(
+ 'name' => 'Mister Wong',
+ 'description' => t('Bookmark this post on Mister Wong'),
+ 'link' => 'http://www.mister-wong.de/index.php?action=addurl&bm_url=&bm_description=',
+ 'icon' => 'misterwong.png',
+ );
+ $links['_de_seoigg'] = array(
+ 'name' => 'SeoIGG',
+ 'description' => t('Bookmark this post on SeoIGG'),
+ 'link' => 'http://www.seoigg.de/node/add/storylink?edit[url]=&edit[title]=',
+ );
+ $links['_de_colivia'] = array(
+ 'name' => 'Colivia',
+ 'description' => t('Bookmark this post on Colivia'),
+ 'link' => 'http://www.colivia.de/submit.php?url=',
+ );
+ $links['_de_icio'] = array(
+ 'name' => 'Icio',
+ 'description' => t('Bookmark this post on Icio'),
+ 'link' => 'http://www.icio.de/add.php?url=',
+ );
+ $links['_de_infopirat'] = array(
+ 'name' => 'Infopirat',
+ 'description' => t('Add to Infopirat'),
+ 'link' => 'http://infopirat.com/node/add/userlink?edit[url]=&edit[title]=',
+ );
+ $links['_de_seekxl'] = array(
+ 'name' => 'seekXL',
+ 'description' => t('Bookmark this post on seekXL'),
+ 'link' => 'http://social-bookmarking.seekxl.de/?add_url=&title=',
+ );
+ $links['_de_linkarena'] = array(
+ 'name' => 'Linkarena',
+ 'description' => t('Add to Linkarena'),
+ 'link' => 'http://linkarena.com/bookmarks/addlink/?url=&title=',
+ );
+ $links['_de_netselektor'] = array(
+ 'name' => 'Netselektor',
+ 'description' => t('Bookmark this post on Netselektor'),
+ 'link' => 'http://netselektor.de/speichern/neu?title=&url=',
+ );
+ $links['_de_weblinkr'] = array(
+ 'name' => 'Weblinkr',
+ 'description' => t('Bookmark this post on Weblinkr'),
+ 'link' => 'http://weblinkr.com/weblinks/?action=add&address=&title=',
+ );
+ $links['_de_webnews'] = array(
+ 'name' => 'Webnews',
+ 'description' => t('Bookmark this post on Webnews'),
+ 'link' => 'http://www.webnews.de/einstellen?url=&title=',
+ );
+ $links['_de_readster'] = array(
+ 'name' => 'Readster',
+ 'description' => t('Bookmark this post on Readster'),
+ 'link' => 'http://www.readster.de/submit/?url=&title=',
+ );
+ $links['_de_oneview'] = array(
+ 'name' => 'Oneview',
+ 'description' => t('Bookmark this post on Oneview'),
+ 'link' => 'http://www.oneview.de/quickadd/neu/addBookmark.jsf?URL=&title=',
+ );
+ $links['_de_yigg'] = array(
+ 'name' => 'Yigg',
+ 'description' => t('Add to Yigg.de'),
+ 'link' => 'http://yigg.de/neu?exturl=&title=',
+ );
+ $links['_de_meinvz'] = array(
+ 'name' => 'MeinVZ',
+ 'description' => t('Share on MeinVZ, StudiVZ or SchuelerVZ'),
+ 'link' => 'http://www.studivz.net/Link/Selection/Url/?u=&desc=',
+ );
+ $links['_de_xing'] = array(
+ 'name' => 'Xing',
+ 'description' => t('Share on Xing'),
+ 'link' => 'https://www.xing.com/app/user?op=share&url=',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/hungarian_services.info b/web/sites/all/modules/contrib/service_links/services/hungarian_services.info
new file mode 100644
index 0000000..ea6cf27
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/hungarian_services.info
@@ -0,0 +1,12 @@
+name = Hungarian Services
+description = Provide the Hungarian Service: iWiW
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/hungarian_services.module b/web/sites/all/modules/contrib/service_links/services/hungarian_services.module
new file mode 100644
index 0000000..255feba
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/hungarian_services.module
@@ -0,0 +1,23 @@
+ 'IWIW',
+ 'description' => t('Add to iWiW'),
+ 'link' => 'http://iwiw.hu/pages/share/share.jsp?u=&t=',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/italian_services.info b/web/sites/all/modules/contrib/service_links/services/italian_services.info
new file mode 100644
index 0000000..82ef6ed
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/italian_services.info
@@ -0,0 +1,12 @@
+name = Italian Services
+description = Provide the Italian Services: Diggita, Meemi, OkNotizie, Segnalo.com, TechNotizie, Wikio, ZicZac
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/italian_services.module b/web/sites/all/modules/contrib/service_links/services/italian_services.module
new file mode 100644
index 0000000..dec6992
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/italian_services.module
@@ -0,0 +1,53 @@
+ 'Diggita',
+ 'description' => t('Add a news on Diggita'),
+ 'link' => 'http://www.diggita.it/submit.php?url=&title=',
+ );
+ $links['_it_ziczac'] = array(
+ 'name' => 'ZicZac',
+ 'description' => t('Add a news on ZicZac'),
+ 'link' => 'http://ziczac.it/a/segnala/?url=&title=',
+ );
+ $links['_it_oknotizie'] = array(
+ 'name' => 'OkNotizie',
+ 'description' => t('Add a news on OkNotizie'),
+ 'link' => 'http://oknotizie.alice.it/post.html.php?url=&title=',
+ );
+ $links['_it_segnalo'] = array(
+ 'name' => 'Segnalo.com',
+ 'description' => t('Add a news on Segnalo.com'),
+ 'link' => 'http://segnalo.alice.it/post.html.php?url=&title=',
+ );
+ $links['_it_technotizie'] = array(
+ 'name' => 'TechNotizie',
+ 'description' => t('Post it on TechNotizie'),
+ 'link' => 'http://www.technotizie.it/posta_ok?action=f2&url=&title=',
+ );
+ $links['_it_meemi'] = array(
+ 'name' => 'meemi',
+ 'description' => t('Add a noise on meemi'),
+ 'link' => 'http://meemi.com/s/?p/3&u=&s=',
+ );
+ $links['_it_wikio'] = array(
+ 'name' => 'Wikio',
+ 'description' => t('Vote on Wikio'),
+ 'link' => 'http://www.wikio.it/vote?url=',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/polish_services.info b/web/sites/all/modules/contrib/service_links/services/polish_services.info
new file mode 100644
index 0000000..a5cf3ac
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/polish_services.info
@@ -0,0 +1,12 @@
+name = Polish Services
+description = Provide the Polish Services: Blip, Wykop, Sledzik
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/polish_services.module b/web/sites/all/modules/contrib/service_links/services/polish_services.module
new file mode 100644
index 0000000..a19e806
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/polish_services.module
@@ -0,0 +1,33 @@
+ 'Wykop',
+ 'description' => t('Add to Wykop'),
+ 'link' => 'http://www.wykop.pl/dodaj?url=&title=',
+ );
+ $links['_pl_blip'] = array(
+ 'name' => 'Blip',
+ 'description' => t('Add to Blip'),
+ 'link' => 'http://blip.pl/dashboard?body=%20--%20',
+ );
+ $links['_pl_sledzik'] = array(
+ 'name' => 'Sledzik',
+ 'description' => t('Add to Sledzik'),
+ 'link' => 'http://nasza-klasa.pl/sledzik?shout=%20--%20',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/print_services.info b/web/sites/all/modules/contrib/service_links/services/print_services.info
new file mode 100644
index 0000000..bd770a2
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/print_services.info
@@ -0,0 +1,13 @@
+name = Print Services
+description = Add the support for Print module which render the page as PDF or printable HTML
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+dependencies[] = print
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/print_services.module b/web/sites/all/modules/contrib/service_links/services/print_services.module
new file mode 100644
index 0000000..c04dd41
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/print_services.module
@@ -0,0 +1,41 @@
+ 'Print HTML',
+ 'link' => 'print/',
+ 'description' => t('Printable version'),
+ );
+
+ if (module_exists('print_pdf')) {
+ $links['printpdf'] = array(
+ 'name' => 'Print PDF',
+ 'link' => 'printpdf/',
+ 'description' => t('PDF version'),
+ );
+ }
+
+ if (module_exists('print_mail')) {
+ $links['printmail'] = array(
+ 'name' => 'Print Mail',
+ 'link' => 'printmail/',
+ 'description' => t('Send to a friend'),
+ );
+ }
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/russian_services.info b/web/sites/all/modules/contrib/service_links/services/russian_services.info
new file mode 100644
index 0000000..a579a78
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/russian_services.info
@@ -0,0 +1,12 @@
+name = Russian Services
+description = Provide the Russian Services (12+3): 100zakladok, Ruspace, Mister Wong, Memori, Moemesto, MyScoop, Vaau, Yandex, LinkStore, Bobrdobr, Lopas, Communizm, Newsland, News2, Smi2
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/russian_services.module b/web/sites/all/modules/contrib/service_links/services/russian_services.module
new file mode 100644
index 0000000..fe625c8
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/russian_services.module
@@ -0,0 +1,109 @@
+
+ */
+
+/**
+ * Implements hook_service_links()
+ */
+function russian_services_service_links() {
+ $links = array();
+
+ $links['_ru_100zakladok'] = array(
+ 'link' => 'http://www.100zakladok.ru/save/?bmurl=&bmtitle=',
+ 'name' => '100zakladok',
+ 'description' => t('Bookmark this post on 100zakladok'),
+ );
+ $links['_ru_ruspace'] = array(
+ 'link' => 'http://www.ruspace.ru/index.php?link=bookmark&action=bookmarkNew&bm=1&url=&title=',
+ 'name' => 'Ruspace',
+ 'description' => t('Bookmark this post on Ruspace'),
+ );
+ $links['_ru_misterwong'] = array(
+ 'link' => 'http://www.mister-wong.ru/index.php?action=addurl&bm_url=&bm_description=',
+ 'name' => 'Mister Wong',
+ 'description' => t('Bookmark this post on Mister Wong'),
+ 'icon' => 'misterwong.png',
+ );
+ $links['_ru_memori'] = array(
+ 'link' => 'http://memori.ru/link/?sm=1&u_data[url]=&u_data[name]=',
+ 'name' => 'Memori',
+ 'description' => t('Bookmark this post on Memori'),
+ );
+ $links['_ru_moemesto'] = array(
+ 'link' => 'http://moemesto.ru/post.php?url=&title=',
+ 'name' => 'Moemesto',
+ 'description' => t('Bookmark this post on Moemesto.ru'),
+ );
+ $links['_ru_myscoop'] = array(
+ 'link' => 'http://myscoop.ru/add/?URL=&title=',
+ 'name' => 'MyScoop',
+ 'description' => t('Bookmark this post on MyScoop'),
+ );
+ $links['_ru_vaau'] = array(
+ 'link' => 'http://www.vaau.ru/submit/?action=step2&url=',
+ 'name' => 'Vaau',
+ 'description' => t('Bookmark this post on Vaau'),
+ );
+ $links['_ru_yandex'] = array(
+ 'link' => 'http://zakladki.yandex.ru/newlink.xml?url=&name=',
+ 'name' => 'Yandex',
+ 'description' => t('Bookmark this post on Yandex'),
+ );
+ $links['_ru_linkstore'] = array(
+ 'link' => 'http://www.linkstore.ru/servlet/LinkStore?a=add&url=&title=',
+ 'name' => 'LinkStore',
+ 'description' => t('Bookmark this post on LinkStore'),
+ );
+ $links['_ru_bobrdobr'] = array(
+ 'link' => 'http://bobrdobr.ru/addext.html?url=&title=',
+ 'name' => 'Bobrdobr',
+ 'description' => t('Bookmark this post on Bobrdobr'),
+ );
+ $links['_ru_lopas'] = array(
+ 'link' => 'http://www.lopas.ru/add_story.php?story_url=',
+ 'name' => 'Lopas',
+ 'description' => t('Bookmark this post on Lopas'),
+ );
+ $links['_ru_communizm'] = array(
+ 'link' => 'http://communizm.ru/index.php?mode=addstory&title=&link=&description=',
+ 'name' => 'Communizm',
+ 'description' => t('Bookmark this post on Communizm'),
+ );
+ $links['_ru_linksiua'] = array(
+ 'link' => 'http://links.i.ua/mark/?url=&ename=',
+ 'name' => 'Linksiua',
+ 'description' => t('Bookmark this post on Links.i.ua'),
+ );
+ $links['_ru_vkontakte'] = array(
+ 'link' => 'http://vkontakte.ru/share.php?url=&title=',
+ 'name' => 'VKontakte',
+ 'description' => t('Share this on VKontakte'),
+ );
+
+/* news todo
+
+ $links['_ru_newsland'] = array(
+ 'link' => 'http://www.newsland.ru/News/Add/',
+ 'name' => 'Newsland',
+ 'description' => t('Bookmark this post on Newsland'),
+ );
+
+ $links['_ru_news2'] = array(
+ 'link' => 'http://news2.ru/add_story.php?url=',
+ 'name' => 'News2',
+ 'description' => t('Bookmark this post on News2'),
+ );
+
+ $links['_ru_smi2'] = array(
+ 'link' => 'http://smi2.ru/add',
+ 'name' => 'Smi2',
+ 'description' => t('Bookmark this post on Smi2'),
+ );
+*/
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/spanish_services.info b/web/sites/all/modules/contrib/service_links/services/spanish_services.info
new file mode 100644
index 0000000..1b9ab6a
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/spanish_services.info
@@ -0,0 +1,12 @@
+name = Spanish Services
+description = Provide the Spanish Services: Barrapunto, Fresqui, Latafanera, Meneame, Tuenti
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/spanish_services.module b/web/sites/all/modules/contrib/service_links/services/spanish_services.module
new file mode 100644
index 0000000..6101231
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/spanish_services.module
@@ -0,0 +1,43 @@
+ 'Meneame',
+ 'description' => t('Add to Meneame'),
+ 'link' => 'http://www.meneame.net/submit.php?url=',
+ );
+ $links['_es_latafanera'] = array(
+ 'name' => 'La Tafanera',
+ 'description' => t('Add to La Tafanera'),
+ 'link' => 'http://latafanera.cat/submit.php?url=',
+ );
+ $links['_es_fresqui'] = array(
+ 'name' => 'Fresqui',
+ 'description' => t('Submit this post on tec.fresqui.com'),
+ 'link' => 'http://tec.fresqui.com/post?url=&title=',
+ );
+ $links['_es_barrapunto'] = array(
+ 'name' => 'Barrapunto',
+ 'description' => t('Publish this post on Barrapunto.com'),
+ 'link' => 'http://barrapunto.com/submit.pl?story=He leido en el articulo &subj=',
+ );
+ $links['_es_tuenti'] = array(
+ 'name' => 'Tuenti',
+ 'description' => t('Share on Tuenti'),
+ 'link' => 'http://www.tuenti.com/share?url=',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/swedish_services.info b/web/sites/all/modules/contrib/service_links/services/swedish_services.info
new file mode 100644
index 0000000..4040171
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/swedish_services.info
@@ -0,0 +1,15 @@
+name = Swedish Services
+description = Provide the Swedish Services: Bloggy, Pusha
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+version = VERSION
+files[] = swedish_services.module
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/swedish_services.module b/web/sites/all/modules/contrib/service_links/services/swedish_services.module
new file mode 100644
index 0000000..7f68734
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/swedish_services.module
@@ -0,0 +1,28 @@
+ 'Bloggy',
+ 'description' => t('Share this on Bloggy'),
+ 'link' => 'http://bloggy.se/home/?status= -- ',
+ );
+ $links['_se_pusha'] = array(
+ 'name' => 'Pusha',
+ 'description' => t('Share this on Pusha'),
+ 'link' => 'http://pusha.se/posta?url=&title=',
+ );
+
+ return $links;
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/widget_services.admin.inc b/web/sites/all/modules/contrib/service_links/services/widget_services.admin.inc
new file mode 100644
index 0000000..b045d4a
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/widget_services.admin.inc
@@ -0,0 +1,262 @@
+ 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Twitter Widget'),
+ );
+ $form['twitter_widget']['service_links_tw_data_count'] = array(
+ '#type' => 'select',
+ '#title' => t('Counter'),
+ '#default_value' => variable_get('service_links_tw_data_count', 'horizontal'),
+ '#options' => array(
+ 'horizontal' => t('Horizontal'),
+ 'vertical' => t('Vertical'),
+ 'none' => t('None'),
+ ),
+ );
+ $form['twitter_widget']['service_links_tw_data_via'] = array(
+ '#type' => 'textfield',
+ '#field_prefix' => '@',
+ '#title' => t('Via user'),
+ '#description' => t('Add here your screen name.'),
+ '#default_value' => variable_get('service_links_tw_data_via', ''),
+ '#size' => 40,
+ );
+
+ $form['facebook_like'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Facebook Like'),
+ );
+ $form['facebook_like']['service_links_fl_layout'] = array(
+ '#type' => 'select',
+ '#title' => t('Layout'),
+ '#default_value' => variable_get('service_links_fl_layout', 'button_count'),
+ '#options' => array(
+ 'standard' => t('Standard'),
+ 'button_count' => t('Button Count'),
+ 'box_count' => t('Box Count'),
+ ),
+ );
+ $form['facebook_like']['service_links_fl_width'] = array(
+ '#title' => t('Width'),
+ '#type' => 'textfield',
+ '#default_value' => variable_get('service_links_fl_width', 100),
+ '#description' => t('A good value for button layout is 100, for box layout is 80 and for standard layout 450'),
+ '#size' => 10,
+ );
+ $form['facebook_like']['service_links_fl_height'] = array(
+ '#title' => t('Height'),
+ '#type' => 'textfield',
+ '#default_value' => variable_get('service_links_fl_height', 21),
+ '#description' => t('A good value for button layout is 21, for box layout is 65 and for standard layout is 80'),
+ '#size' => 10,
+ );
+ $form['facebook_like']['service_links_fl_font'] = array(
+ '#title' => t('Font'),
+ '#type' => 'select',
+ '#default_value' => variable_get('service_links_fl_font', ''),
+ '#options' => array(
+ '' => t('None'),
+ 'arial' => t('Arial'),
+ 'lucida grande' => t('Lucida Grande'),
+ 'segoe ui' => t('Segoe Ui'),
+ 'tahoma' => t('Tahoma'),
+ 'trebuchet ms' => t('Trebuchet Ms'),
+ 'verdana' => t('Verdana'),
+ ),
+ );
+ $form['facebook_like']['service_links_fl_show_faces'] = array(
+ '#title' => t('Show Faces'),
+ '#type' => 'radios',
+ '#default_value' => variable_get('service_links_fl_show_faces', 'false'),
+ '#options' => array(
+ 'true' => t('Yes'),
+ 'false' => t('No'),
+ ),
+ '#attributes' => array('class' => array('container-inline')),
+ '#description' => t('This works only when the standard layout is set on'),
+ );
+ $form['facebook_like']['service_links_fl_colorscheme'] = array(
+ '#title' => t('Color Scheme'),
+ '#type' => 'radios',
+ '#default_value' => variable_get('service_links_fl_colorscheme', 'light'),
+ '#options' => array(
+ 'light' => t('Light'),
+ 'dark' => t('Dark'),
+ ),
+ '#attributes' => array('class' => array('container-inline')),
+ );
+ $form['facebook_like']['service_links_fl_action'] = array(
+ '#title' => t('Action'),
+ '#type' => 'radios',
+ '#default_value' => variable_get('service_links_fl_action', 'like'),
+ '#options' => array(
+ 'like' => t('Like'),
+ 'recommend' => t('Recommend'),
+ ),
+ '#attributes' => array('class' => array('container-inline')),
+ );
+ $form['facebook_like']['service_links_fl_locale'] = array(
+ '#title' => t('Locale'),
+ '#type' => 'textfield',
+ '#default_value' => variable_get('service_links_fl_locale', ''),
+ '#description' => t('Enter the language code and the country code separated by an underscore (i.e. es_ES, en_GB, en_US, it_IT, fr_FR, pt_BR, pt_PT)'),
+ '#size' => 5,
+ '#attributes' => array('class' => array('container-inline')),
+ );
+
+ $form['facebook_share'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Facebook Share'),
+ );
+ $form['facebook_share']['service_links_fs_type'] = array(
+ '#type' => 'select',
+ '#title' => t('Type'),
+ '#default_value' => variable_get('service_links_fs_type', 'button_count'),
+ '#options' => array(
+ 'button' => t('Button'),
+ 'button_count' => t('Button Count'),
+ 'box_count' => t('Box Count'),
+ 'icon_link' => t('Icon Link'),
+ ),
+ );
+ $form['facebook_share']['service_links_fs_app_id'] = array(
+ '#type' => 'textfield',
+ '#title' => t('App ID'),
+ '#default_value' => variable_get('service_links_fs_app_id', '150123828484431'),
+ '#description' => t('You may generate your app ID at the Facebook apps page', array('@url' => 'https://developers.facebook.com/apps')),
+ '#size' => 40,
+ );
+ $form['facebook_share']['service_links_fs_css'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Style'),
+ '#default_value' => variable_get('service_links_fs_css', ''),
+ '#description' => t('Apply a CSS style providing a single string (i.e. %style)', array('%style' => 'text-align:left;vertical-align:top;margin-top:4px')),
+ '#size' => 80,
+ );
+
+ $form['google_plus_one'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Google Plus One'),
+ );
+ $form['google_plus_one']['service_links_gpo_size'] = array(
+ '#title' => t('Size'),
+ '#type' => 'select',
+ '#default_value' => variable_get('service_links_gpo_size', ''),
+ '#options' => array(
+ '' => t('Standard'),
+ 'small' => t('Small'),
+ 'medium' => t('Medium'),
+ 'tall' => t('Tall'),
+ ),
+ );
+ $form['google_plus_one']['service_links_gpo_annotation'] = array(
+ '#title' => t('Annotation'),
+ '#type' => 'select',
+ '#default_value' => variable_get('service_links_gpo_annotation', ''),
+ '#options' => array(
+ '' => t('Bubble'),
+ 'none' => t('None'),
+ 'inline' => t('Inline'),
+ ),
+ );
+ $form['google_plus_one']['service_links_gpo_width'] = array(
+ '#title' => t('Max width'),
+ '#type' => 'textfield',
+ '#default_value' => variable_get('service_links_gpo_width', 300),
+ '#description' => t('If annotation is set to "inline", this parameter sets the width in pixels to use for the button and its inline annotation. If the width is omitted, a button and its inline annotation use 450px. A minimum value of 120 is required.
+See Inline annotation widths for examples of how the annotation is displayed for various width settings', array('@url' => 'https://developers.google.com/+/web/+1button/?hl=it#inline-annotation')),
+ '#size' => 10,
+ );
+ $form['google_plus_one']['service_links_gpo_lang'] = array(
+ '#title' => t('Language'),
+ '#type' => 'textfield',
+ '#default_value' => variable_get('service_links_gpo_lang', ''),
+ '#description' => t('Sets the language to use for the +1 buttons on the page when annotation is set to "inline". For available language code values, see the list of supported language codes', array('@url' => 'https://developers.google.com/+/web/+1button/?hl=it#available-languages')),
+ '#size' => 5,
+ );
+ $form['google_plus_one']['service_links_gpo_callback'] = array(
+ '#title' => t('Callback function'),
+ '#type' => 'textfield',
+ '#default_value' => variable_get('service_links_gpo_callback', ''),
+ '#description' => t('If specified, this function is called after the user clicks the +1 button.'),
+ '#size' => 40,
+ );
+
+ $form['linkedin_share_button'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Linkedin Share Button'),
+ );
+ $form['linkedin_share_button']['service_links_lsb_countmode'] = array(
+ '#title' => t('Count Mode'),
+ '#type' => 'select',
+ '#default_value' => variable_get('service_links_lsb_countmode', 'right'),
+ '#options' => array(
+ 'top' => t('Vertical'),
+ 'right' => t('Horizontal'),
+ '' => t('No Count'),
+ ),
+ );
+
+ $form['pinterest_button'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => FALSE,
+ '#title' => t('Pinterest Button'),
+ );
+ $form['pinterest_button']['service_links_pb_countlayout'] = array(
+ '#title' => t('Pin Count'),
+ '#type' => 'select',
+ '#default_value' => variable_get('service_links_pb_countlayout', 'horizontal'),
+ '#options' => array(
+ 'horizontal' => t('Horizontal'),
+ 'vertical' => t('Vertical'),
+ 'none' => t('No Count'),
+ ),
+ );
+ $form['pinterest_button']['service_links_pb_mediatoken'] = array(
+ '#title' => t('Media parameter'),
+ '#type' => 'textfield',
+ '#default_value' => variable_get('service_links_pb_mediatoken', ''),
+ '#description' => t('Fill the media parameter with a token which will be evaluated by Token module.', array('@url' => 'http://www.drupal.org/project/token')),
+ '#size' => 40,
+ );
+ $form['pinterest_button']['service_links_pb_descriptiontoken'] = array(
+ '#title' => t('Description parameter'),
+ '#type' => 'textfield',
+ '#default_value' => variable_get('service_links_pb_descriptiontoken', ''),
+ '#description' => t('Fill the description parameter with a token which will be evaluated by Token module, if left blank will be replaced by the node teaser.', array('@url' => 'http://www.drupal.org/project/token')),
+ '#size' => 40,
+ );
+ if (module_exists('token')) {
+ $form['pinterest_button']['token_help'] = array(
+ '#type' => 'fieldset',
+ '#collapsible' => TRUE,
+ '#collapsed' => TRUE,
+ '#title' => t('Token help'),
+ '#theme' => 'token_tree',
+ '#token_types' => array('node'),
+ );
+ }
+
+ return system_settings_form($form);
+}
diff --git a/web/sites/all/modules/contrib/service_links/services/widget_services.info b/web/sites/all/modules/contrib/service_links/services/widget_services.info
new file mode 100644
index 0000000..dbc9ee0
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/widget_services.info
@@ -0,0 +1,12 @@
+name = Widget Services
+description = Facebook Like, Facebook Share, Google Plus One, Linkedin Share Button, Pinterest, Twitter
+core = 7.x
+package = Service Links - Services
+dependencies[] = service_links
+
+; Information added by drupal.org packaging script on 2013-06-10
+version = "7.x-2.2"
+core = "7.x"
+project = "service_links"
+datestamp = "1370849155"
+
diff --git a/web/sites/all/modules/contrib/service_links/services/widget_services.install b/web/sites/all/modules/contrib/service_links/services/widget_services.install
new file mode 100644
index 0000000..09612b4
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/services/widget_services.install
@@ -0,0 +1,39 @@
+ t('Share on Facebook'),
+ 'link' => 'http://www.facebook.com/sharer.php',
+ 'description' => t('Share this post on Facebook'),
+ 'javascript' => 'facebook_share.js',
+ 'icon' => 'facebook.png',
+ 'style' => SERVICE_LINKS_STYLE_EMPTY,
+ 'callback' => 'ws_facebook_share_data',
+ );
+ $links['twitter_widget'] = array(
+ 'name' => 'Tweet Widget',
+ 'link' => 'http://twitter.com/share?url=&count=&via=&text=&counturl=',
+ 'icon' => 'twitter.png',
+ 'description' => t('Tweet This'),
+ 'attributes' => array('class' => array('twitter-share-button')),
+ 'javascript' => 'twitter_button.js',
+ 'style' => SERVICE_LINKS_STYLE_EMPTY,
+ 'callback' => 'ws_twitter_widget_data',
+ );
+ $links['facebook_like'] = array(
+ 'name' => 'Facebook Like',
+ 'link' => 'http://www.facebook.com/plugins/like.php?href=&layout=&show_faces=&action=&colorscheme=&width=&height=&font=&locale=',
+ 'icon' => 'facebook.png',
+ 'description' => t('I Like it'),
+ 'javascript' => 'facebook_like.js',
+ 'style' => SERVICE_LINKS_STYLE_EMPTY,
+ 'callback' => 'ws_facebook_like_data',
+ );
+ $links['google_plus_one'] = array(
+ 'name' => 'Google Plus One',
+ 'link' => '',
+ 'description' => t('Plus it'),
+ 'javascript' => 'google_plus_one.js',
+ 'style' => SERVICE_LINKS_STYLE_EMPTY,
+ 'callback' => 'ws_google_plus_one_data',
+ );
+ $links['linkedin_share_button'] = array(
+ 'name' => 'Linkedin Share Button',
+ 'link' => '',
+ 'icon' => 'linkedin.png',
+ 'description' => t('Share on Linkedin'),
+ 'javascript' => array(
+ 'http://platform.linkedin.com/in.js?async=true',
+ 'linkedin_share_button.js',
+ ),
+ 'style' => SERVICE_LINKS_STYLE_EMPTY,
+ 'callback' => 'ws_linkedin_share_button_data',
+ );
+ $links['pinterest_button'] = array(
+ 'name' => 'Pinterest',
+ //'link' => 'http://pinterest.com/pin/create/button/?url=&description=&media=',
+ 'link' => 'http://pinterest.com/pin/create/button/?url=&description=&media=',
+ 'icon' => 'pinterest.png',
+ 'description' => t('Pin It'),
+ 'javascript' => array(
+ 'pinterest_button.js',
+ //'http://assets.pinterest.com/js/pinit.js',
+ ),
+ 'style' => SERVICE_LINKS_STYLE_EMPTY,
+ 'attributes' => array('class' => array('pin-it-button')),
+ 'callback' => 'ws_pinterest_button_data',
+ 'preset' => 'ws_pinterest_button_tags',
+ );
+
+ return $links;
+}
+
+/**
+ * Callback function for Twitter Widget.
+ */
+function ws_twitter_widget_data(&$service, $subst) {
+ static $params;
+
+ if (!isset($params)) {
+ $params = array(
+ 'count' => check_plain(variable_get('service_links_tw_data_count', 'horizontal')),
+ 'via' => check_plain(variable_get('service_links_tw_data_via' , '')),
+ );
+ }
+
+ $service['url'][1] = array_merge($service['url'][1], $params);
+}
+
+/**
+ * Callback function for Facebook Share.
+ */
+function ws_facebook_share_data(&$service, $subst) {
+ static $fs_settings;
+
+ if (!isset($fs_settings)) {
+ $fs_settings = array(
+ 'type' => check_plain(variable_get('service_links_fs_type', 'button_count')),
+ 'app_id' => check_plain(variable_get('service_links_fs_app_id', '150123828484431')),
+ 'css' => check_plain(preg_replace('/[^0-9a-z\-:;]/', '', variable_get('service_links_fs_css', ''))),
+ );
+
+ drupal_add_js(array('ws_fs' => $fs_settings), 'setting');
+ }
+
+ $service['attributes']['rel'] = $subst['url'];
+}
+
+/**
+ * Callback function for Facebook Like.
+ */
+function ws_facebook_like_data(&$service, $subst) {
+ static $params;
+
+ if (!isset($params)) {
+ $params = array(
+ 'layout' => check_plain(variable_get('service_links_fl_layout', 'button_count')),
+ 'show_faces' => check_plain(variable_get('service_links_fl_show_faces', 'false')),
+ 'action' => check_plain(variable_get('service_links_fl_action', 'like')),
+ 'colorscheme' => check_plain(variable_get('service_links_fl_colorscheme', 'light')),
+ 'font' => check_plain(variable_get('service_links_fl_font', '')),
+ 'width' => (int) variable_get('service_links_fl_width', 100),
+ 'height' => (int) variable_get('service_links_fl_height', 21),
+ 'locale' => check_plain(variable_get('service_links_fl_locale', '')),
+ );
+
+ $fl_settings = array(
+ 'width' => $params['width'],
+ 'height' => $params['height'],
+ );
+
+ drupal_add_js(array('ws_fl' => $fl_settings), 'setting');
+ }
+
+ $service['url'][1] = array_merge($service['url'][1], $params);
+}
+
+/**
+ * Callback function for Google Plus One.
+ */
+function ws_google_plus_one_data(&$service, $subst) {
+ static $gpo_settings;
+
+ if (!isset($gpo_settings)) {
+ $gpo_settings = array(
+ 'size' => check_plain(variable_get('service_links_gpo_size', '')),
+ 'annotation' => check_plain(variable_get('service_links_gpo_annotation', '')),
+ 'lang' => check_plain(variable_get('service_links_gpo_lang', '')),
+ 'callback' => check_plain(variable_get('service_links_gpo_callback', '')),
+ 'width' => (int) variable_get('service_links_gpo_width', 300),
+ );
+
+ drupal_add_js(array('ws_gpo' => $gpo_settings), 'setting');
+ }
+}
+
+/**
+ * Callback function for Linkedin Share Button.
+ */
+function ws_linkedin_share_button_data(&$service, $subst) {
+ static $lsb_settings;
+
+ if (!isset($lsb_settings)) {
+ $lsb_settings = array(
+ 'countmode' => check_plain(variable_get('service_links_lsb_countmode', 'right')),
+ );
+
+ drupal_add_js(array('ws_lsb' => $lsb_settings), 'setting');
+ }
+}
+
+/**
+ * Preset function for Pinterest Button, which fill the media tag.
+ */
+function ws_pinterest_button_tags(&$service, &$settings, $node = NULL) {
+ static $tokens;
+
+ if (!isset($tokens)) {
+ $tokens['media'] = variable_get('service_links_pb_mediatoken', '');
+ $tokens['description'] = variable_get('service_links_pb_descriptiontoken', '');
+ }
+
+ $settings['tag']['pinterest-media'] = '';
+
+ if (module_exists('token')) {
+ $settings['subst']['pinterest-media'] = check_plain(@token_replace($tokens['media'], array('node' => $node)));
+ if (empty($tokens['description'])) {
+ $service['link'] = str_replace('pinterest-description', 'raw-encoded-teaser', $service['link']);
+ }
+ else {
+ $settings['tag']['pinterest-description'] = '';
+ $settings['subst']['pinterest-description'] = check_plain(@token_replace($tokens['description'], array('node' => $node)));
+ }
+ }
+ else {
+ $settings['subst']['pinterest-media'] = '';
+ $service['link'] = str_replace('pinterest-description', 'raw-encoded-teaser', $service['link']);
+ }
+}
+
+/**
+ * Callback function for Pinterest Button.
+ */
+function ws_pinterest_button_data(&$service, $subst) {
+ static $pb_settings;
+
+ if (!isset($pb_settings)) {
+ $pb_settings = array(
+ 'countlayout' => check_plain(variable_get('service_links_pb_countlayout', 'horizontal')),
+ );
+
+ drupal_add_js(array('ws_pb' => $pb_settings), 'setting');
+ }
+}
+
+/**
+ * Implements hook_menu().
+ */
+function widget_services_menu() {
+ $items = array();
+
+ $items['admin/config/services/service-links/widgets'] = array(
+ 'title' => 'Widgets',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('widget_services_admin'),
+ 'access arguments' => array('administer site configuration'),
+ 'type' => MENU_LOCAL_TASK,
+ //'parent' => 'admin/config/services/service-links',
+ 'file' => 'widget_services.admin.inc',
+ );
+
+ return $items;
+}
diff --git a/web/sites/all/modules/contrib/service_links/template.php b/web/sites/all/modules/contrib/service_links/template.php
new file mode 100644
index 0000000..8d72b56
--- /dev/null
+++ b/web/sites/all/modules/contrib/service_links/template.php
@@ -0,0 +1,66 @@
+
+ * in your file 'node.tpl.php' and disable the other visualization options
+ * under the configuration page.
+ *
+ * If you need other transformation add 'template.php' under your theme folder
+ * either integrate the functions below in your 'template.php' replacing 'themename'
+ * with the name of your theme, clean the cache if some changes are not well updated.
+ *
+ * More examples are available on the online help.
+ */
+
+/**
+ * Example 1: Creating the variable '$service_links_rendered'
+ * for the template file 'page.tpl.php' containing all the
+ * selected services.
+ */
+function themename_preprocess_page(&$vars) {
+ if (module_exists('service_links')) {
+ // Works also for not-node pages
+ if (user_access('access service links') && service_links_show($vars['node'])) {
+ $vars['service_links_rendered'] = theme('links', array('links' => service_links_render($vars['node'])));
+ }
+ }
+}
+
+/**
+ * Example 2: Creating the variable '$twitter' for the template file
+ * 'node.tpl.php' containing the services specified by their ids
+ * (i.e. twitter).
+ */
+function themename_preprocess_node(&$vars) {
+ if (module_exists('service_links')) {
+ if (user_access('access service links') && service_links_show($vars['node'])) {
+ $vars['twitter'] = theme('links', array('links' => service_links_render_some('twitter', $vars['node'])));
+ }
+ }
+}
+
+/**
+ * If something doesn't work well try this.
+ */
+function themename_preprocess(&$vars, $hook) {
+ switch ($hook) {
+ case 'node':
+ if (module_exists('service_links')) {
+ if (user_access('access service links') && service_links_show($vars['node'])) {
+ $vars['twitter'] = theme('links', array('links' => service_links_render_some('twitter', $vars['node'])));
+ }
+ }
+ break;
+ case 'page':
+ if (module_exists('service_links')) {
+ if (user_access('access service links') && service_links_show($vars['node'])) {
+ $vars['service_links'] = theme('links', array('links' => service_links_render($vars['node'])));
+ }
+ }
+ break;
+ }
+}
diff --git a/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.inc b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.inc
new file mode 100644
index 0000000..1bcf1b7
--- /dev/null
+++ b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.inc
@@ -0,0 +1,14 @@
+ "1");
+ }
+}
diff --git a/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.user_permission.inc b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.user_permission.inc
new file mode 100644
index 0000000..34e50cf
--- /dev/null
+++ b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.features.user_permission.inc
@@ -0,0 +1,23 @@
+ 'access service links',
+ 'roles' => array(
+ 'anonymous user' => 'anonymous user',
+ ),
+ 'module' => 'service_links',
+ );
+
+ return $permissions;
+}
diff --git a/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.info b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.info
new file mode 100644
index 0000000..8534efb
--- /dev/null
+++ b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.info
@@ -0,0 +1,18 @@
+name = Service links social sharing
+description = Social media sharing links for content
+core = 7.x
+package = drupalfi
+version = 7.x-1.0
+project = service_links_social_sharing
+dependencies[] = ctools
+dependencies[] = features
+dependencies[] = general_services
+dependencies[] = service_links
+dependencies[] = strongarm
+features[ctools][] = strongarm:strongarm:1
+features[features_api][] = api:2
+features[user_permission][] = access service links
+features[variable][] = service_links_link_view_modes
+features[variable][] = service_links_node_types
+features[variable][] = service_links_show
+features[variable][] = service_links_style
diff --git a/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.module b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.module
new file mode 100644
index 0000000..fb6f1ed
--- /dev/null
+++ b/web/sites/all/modules/features/service_links_social_sharing/service_links_social_sharing.module
@@ -0,0 +1,7 @@
+disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'service_links_link_view_modes';
+ $strongarm->value = array(
+ 'full' => 'full',
+ 'teaser' => 0,
+ 'rss' => 0,
+ 'diff_standard' => 0,
+ 'token' => 0,
+ );
+ $export['service_links_link_view_modes'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'service_links_node_types';
+ $strongarm->value = array(
+ 'basic_page' => 'basic_page',
+ 'company' => 'company',
+ 'event' => 'event',
+ 'news' => 'news',
+ 'liftup' => 0,
+ );
+ $export['service_links_node_types'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'service_links_show';
+ $strongarm->value = array(
+ 'delicious' => 0,
+ 'digg' => 0,
+ 'stumbleupon' => 0,
+ 'twitter' => 1,
+ 'pingthis' => 0,
+ 'reddit' => 0,
+ 'slashdot' => 0,
+ 'newsvine' => 0,
+ 'furl' => 0,
+ 'facebook' => 1,
+ 'myspace' => 0,
+ 'google' => 0,
+ 'google_plus' => 1,
+ 'yahoo' => 0,
+ 'linkedin' => 1,
+ 'technorati' => 0,
+ 'technorati_favorite' => 0,
+ 'icerocket' => 0,
+ 'misterwong' => 0,
+ 'mixx' => 0,
+ 'box' => 0,
+ 'blinklist' => 0,
+ 'identica' => 0,
+ 'newskicks' => 0,
+ 'diigo' => 0,
+ 'facebook_share' => 0,
+ 'twitter_widget' => 0,
+ 'facebook_like' => 0,
+ 'google_plus_one' => 0,
+ 'linkedin_share_button' => 0,
+ 'pinterest_button' => 0,
+ );
+ $export['service_links_show'] = $strongarm;
+
+ $strongarm = new stdClass();
+ $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+ $strongarm->api_version = 1;
+ $strongarm->name = 'service_links_style';
+ $strongarm->value = '3';
+ $export['service_links_style'] = $strongarm;
+
+ return $export;
+}