changeset 523:fe7e720bd778

merged main
author Reimar Bauer <rb.proj AT googlemail DOT com>
date Fri, 23 Apr 2010 22:38:00 +0200
parents 0d5369896835 (current diff) 64d08878782b (diff)
children 1414a0d200ec
files data/plugin/macro/DictColumns.py htdocs/svg-edit/build/yuicompressor.jar htdocs/svg-edit/editor/ext-connector.js htdocs/svg-edit/editor/jgraduate/css/jGraduate-0.2.0.css htdocs/svg-edit/editor/jquery-ui/jquery-ui-1.7.2.custom.min.js htdocs/svg-edit/editor/locale/lang.zh.js
diffstat 109 files changed, 10341 insertions(+), 6285 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/plugin/action/RecommendPage.py	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,108 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - RecommendPage Action Macro
+
+    By this action one user can point another one to an usefully interesting page.
+    The hint becomes written to a page named user/RecommendedPage and the user
+    becomes subscribed to that page.
+
+    @copyright: 2005-2010 by MoinMoin:ReimarBauer
+    @license: GNU GPL, see COPYING for details.
+"""
+from MoinMoin import wikiutil, user
+from MoinMoin.Page import Page
+from MoinMoin.PageEditor import PageEditor
+
+def RecommendPage(request, pagename, username):
+    err = None
+    name = "%(username)s/RecommendedPage" % {"username": username}
+    page = PageEditor(request, name)
+    if request.user.may.write(name):
+        if user.getUserId(request, username) is not None:
+            uid = user.getUserId(request, username)
+            recom_user = user.User(request, id=uid)
+            subscription_list = recom_user.getSubscriptionList()
+            if name not in subscription_list:
+                recom_user.subscribe(name)
+                recom_user.save()
+
+        newtext = u" * [[%(pagename)s]]  <<ShortText(%(pagename)s)>> ...\n %(username)s\n" % {
+                 "pagename": pagename,
+                 "username": "@SIG@"}
+        if not page.exists():
+            return True, PageEditor.saveText(page, newtext, 0)
+        else:
+            body = page.get_data()
+            meta = page.get_meta()
+            text_meta = ''
+            for command, attrib in meta:
+                text_meta = '#%s %s\n%s' % (command, attrib, text_meta)
+
+            text = "%s\n%s\n%s\n" % (text_meta, newtext, body)
+            return True, PageEditor.saveText(page, text, 0)
+    else:
+        return False, "You are not allowed to edit this page."
+
+def execute(pagename, request):
+    _ = request.getText
+    actname = __name__.split('.')[-1]
+    thispage = Page(request, pagename)
+    if not (request.user.valid and request.user.may.read(pagename)):
+        msg = _("You are not allowed to do %(action_name)s on this page.") % {"action_name": actname}
+        request.theme.add_msg(msg, "warning")
+        return thispage.send_page()
+
+    if request.method == 'POST' and request.form.has_key('button'):
+        if not wikiutil.checkTicket(request, request.form.get('ticket', '')):
+            msg=_('Please use the interactive user interface to recommend pages!')
+            request.theme.add_msg(msg, "warning")
+            return thispage.send_page()
+
+        selected_users = request.values.getlist('username') or  [request.user.name]
+        recommendation_send_to = []
+        for username in selected_users:
+            status, msg = RecommendPage(request, pagename, username)
+            if status:
+                recommendation_send_to.append(username)
+
+        no_recommendation_for = set(selected_users) - set(recommendation_send_to)
+        msg = []
+        msg.append("recommended to read %(pagename)s for %(username)s" % {
+              "pagename": pagename,
+              "username": ', '.join(recommendation_send_to)})
+        if no_recommendation_for:
+            msg.append("You can't send a recommendation to %(username)s" % {
+              "username": ', '.join(no_recommendation_for)})
+
+        request.theme.add_msg('<br>'.join(msg), "info")
+        thispage.send_page()
+        return
+
+    users = user.getUserList(request)
+    html = ["<OPTION>%s</OPTION>" % user.User(request, id=uid).name for uid in users]
+    html.sort()
+
+    formhtml = """
+<form method="post" >
+<strong>%(querytext)s</strong><BR>
+<select name="username" size="%(len)s" multiple>
+%(option)s
+</select>
+<input type="hidden" name="action" value="%(actname)s">
+<input type="submit" name="button" value="%(button)s">
+<br>
+(no selection recommends to: %(user)s)
+<input type="hidden" name="ticket" value="%(ticket)s">
+<p>
+</form>""" % {
+'querytext': 'Recommend page to',
+'actname': 'RecommendPage',
+'ticket': wikiutil.createTicket(request),
+'option': ' '.join(html),
+'user': request.user.name,
+'len': min([3, len(html)]),
+'button': 'Recommend'}
+
+    request.theme.add_msg(formhtml, "info")
+    thispage.send_page()
+    return
--- a/data/plugin/action/SlideShow.py	Fri Apr 23 22:29:49 2010 +0200
+++ b/data/plugin/action/SlideShow.py	Fri Apr 23 22:38:00 2010 +0200
@@ -37,9 +37,11 @@
 
 from MoinMoin import wikiutil, i18n, error
 from MoinMoin.Page import Page
+from MoinMoin.version import release
 
 Dependencies = ['language']
 
+actname = __name__.split('.')[-1]
 
 class Error(error.Error):
     """ Raised for errors in this module """
@@ -468,6 +470,10 @@
 
 
 def execute(pagename, request):
+    if not release.startswith('1.8'):
+        msg = 'This local extension action "%(action_name)s" requires moin 1.8.' % {"action_name": actname}
+        request.theme.add_msg(msg, "warning")
+        return Page(request, pagename).send_page()
     """ Glue to current plugin system """
     SlideshowAction(request, pagename, template).execute()
 
--- a/data/plugin/macro/DictColumns.py	Fri Apr 23 22:29:49 2010 +0200
+++ b/data/plugin/macro/DictColumns.py	Fri Apr 23 22:38:00 2010 +0200
@@ -139,7 +139,7 @@
         request = self.request
         # use selection and order
         if self.names:
-            names = self.names
+            return self.names
         # use keys from template page, no order
         elif Page(request, self.template_page).exists():
             page_dict = self.get_dict(self.template_page)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/plugin/macro/ShortText.py	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,26 @@
+# -*- coding: iso-8859-1 -*-
+"""
+    MoinMoin - ShortText macro
+
+    It shows the first 180 chars of a wiki page without any processing instructions
+    and only if the user is allowed to read that page.
+
+    @copyright: 2005-2010 by MoinMoin:ReimarBauer
+    @license: GNU GPL, see COPYING for details.
+"""
+Dependencies = ["pages"]
+
+from MoinMoin.Page import Page
+from MoinMoin import wikiutil
+
+def macro_ShortText(macro, pagename=unicode, length=180):
+    request = macro.request
+    _ = request.getText
+    if request.user.may.read(pagename):
+        raw = Page(request, pagename).get_data()
+        return request.formatter.text(raw[:length])
+    else:
+        return _("You are not allowed to view this page.")
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/CHANGES.current	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,47 @@
+
+SVG-edit is a lightweight, web-based, Javascript-driven SVG editor that works in any modern browser: version of svg-edit Revision r1502, 2.5alpha (http://code.google.com/p/svg-edit/) for moin-1.9
+
+htdocs/svg-edit must be linked into MoinMoin/web/static/htdocs
+--------------------------------------------------------------
+
+
+Status current svg-edit r1502:
+==============================
+
+Since the svg-edit editor could be called by an url parameter pointing to an existing drawing I changed the deploying from sending the html data by the action to calling the svg-editor.html by an object data tag.
+
+The reason for this change is that it becomes much easier to update to a newer svg-edit version as by the other method.
+
+By this currently only the modifcation of svg-editor.js is necessary to save to the wiki instead to a new window.
+
+ToDo:
+ * Link Syntax for attachments
+
+Known Issues:
+ * changing locale to a different language than english does not work, see 
+   http://code.google.com/p/svg-edit/issues/detail?id=451
+
+
+Status svg-edit r1200:
+======================
+ 
+ * css adapted for moinmoin
+ * action SVG-Editor added
+   This action can currenly save to the page where it is called
+ * target parameter addded
+   by adding the target name a file could be saved to this name
+   e.g. http://localhost:8080/Test?action=SvgEditor&target=example.svg
+   or <<Action(SvgEditor,target=test.svg)>>{{attachment:test.svg}}
+   and go to the page after saving
+
+ToDo
+ * url_prefix paramter needs to be used in some more js functions 
+   of locale.js, svgcanvas.js and svg-edit.js instead of hardcoding it.
+   (search for '/moin_static191/svg-edit/editor')
+ * Link Syntax for attachments
+
+Known Issues in svg-edit
+ * after changing locale in svg-edit properties a mysterious word
+   translated from "page" appears on the upper and bottom left corner.
+   see http://code.google.com/p/svg-edit/issues/detail?id=418
+
--- a/htdocs/svg-edit/AUTHORS	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/AUTHORS	Fri Apr 23 22:38:00 2010 +0200
@@ -14,7 +14,9 @@
 fr: wormsxulla <wormsxulla@yahoo.com> (Français)
 fy: Wander Nauta <info@wandernauta.nl> (Frysk)
 hi: Tavish Naruka <tavishnaruka@gmail.com> (हिन्दी)
+ja: Dong <iwadon@yarhalla.jpn.org> (日本語)
 nl: Jaap Blom <jaap.blom@gmail.com> (Nederlands)
 ro: Christian Tzurcanu <christian.tzurcanu@gmail.com> (Româneşte)
-ru: Laurent Dufloux <laurent.dufloux@etu.upmc.fr> (Русский язык)
-sk: Pavol Rusnak <rusnakp@gmail.com> (Slovenčina)
\ No newline at end of file
+ru: Laurent Dufloux <laurent.dufloux@etu.upmc.fr> (Русский)
+sk: Pavol Rusnak <rusnakp@gmail.com> (Slovenčina)
+zh-TW: 黃瀚生(han sheng Huang) <zenixls2@gmail.com> (台灣正體)
--- a/htdocs/svg-edit/CHANGES.current	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/CHANGES.current	Fri Apr 23 22:38:00 2010 +0200
@@ -4,6 +4,10 @@
 htdocs/svg-edit must be linked into MoinMoin/web/static/htdocs
 --------------------------------------------------------------
 
+Status current svg-edit r1502:
+==============================
+small modification on svg-editor.js for loading from url (cs 516:2b7a77acc967) and save (cs 517:aed9bccfe159) to moin-1.9
+
 
 Status current svg-edit r1310:
 ==============================
--- a/htdocs/svg-edit/Makefile	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/Makefile	Fri Apr 23 22:38:00 2010 +0200
@@ -1,8 +1,9 @@
 NAME=svg-edit
 VERSION=2.5
+PACKAGE=$(NAME)-$(VERSION)
 MAKEDOCS=naturaldocs/NaturalDocs
-PACKAGE=$(NAME)-$(VERSION)
-YUI=build/yuicompressor.jar
+CLOSURE=build/tools/closure-compiler.jar
+YUICOMPRESS=build/tools/yuicompressor.jar
 ZIP=zip
 
 all: release firefox opera
@@ -10,18 +11,21 @@
 build/$(PACKAGE):
 	rm -rf config
 	mkdir config
-	$(MAKEDOCS) -i editor/ -o html docs/ -p config/ -oft -r
+	if [ -x $(MAKEDOCS) ] ; then $(MAKEDOCS) -i editor/ -o html docs/ -p config/ -oft -r ; fi
 	mkdir -p build/$(PACKAGE)
 	cp -r editor/* build/$(PACKAGE)
 	-find build/$(PACKAGE) -name .svn -type d -exec rm -rf {} \;
 # minify spin button
-	java -jar $(YUI) build/$(PACKAGE)/spinbtn/JQuerySpinBtn.js > build/$(PACKAGE)/spinbtn/JQuerySpinBtn.min.js
+	java -jar $(YUICOMPRESS)  build/$(PACKAGE)/spinbtn/JQuerySpinBtn.js                > build/$(PACKAGE)/spinbtn/JQuerySpinBtn.min.js
+	java -jar $(CLOSURE) --js build/$(PACKAGE)/spinbtn/JQuerySpinBtn.js --js_output_file build/$(PACKAGE)/spinbtn/JQuerySpinBtn.min-closure.js
 # minify SVG-edit files
-	java -jar $(YUI) build/$(PACKAGE)/svg-editor.js > build/$(PACKAGE)/svg-editor.min.js
-	java -jar $(YUI) build/$(PACKAGE)/svgcanvas.js > build/$(PACKAGE)/svgcanvas.min.js
+	java -jar $(YUICOMPRESS)  build/$(PACKAGE)/svg-editor.js                > build/$(PACKAGE)/svg-editor.min.js
+	java -jar $(CLOSURE) --js build/$(PACKAGE)/svg-editor.js --js_output_file build/$(PACKAGE)/svg-editor.min-closure.js
+	java -jar $(YUICOMPRESS)  build/$(PACKAGE)/svgcanvas.js                 > build/$(PACKAGE)/svgcanvas.min.js
+	java -jar $(CLOSURE) --js build/$(PACKAGE)/svgcanvas.js  --js_output_file build/$(PACKAGE)/svgcanvas.min-closure.js
 # CSS files do not work remotely
-# java -jar $(YUI) build/$(PACKAGE)/spinbtn/JQuerySpinBtn.css > build/$(PACKAGE)/spinbtn/JQuerySpinBtn.min.css
-# java -jar $(YUI) build/$(PACKAGE)/svg-editor.css > build/$(PACKAGE)/svg-editor.min.css
+# java -jar $(YUICOMPRESS) build/$(PACKAGE)/spinbtn/JQuerySpinBtn.css > build/$(PACKAGE)/spinbtn/JQuerySpinBtn.min.css
+# java -jar $(YUICOMPRESS) build/$(PACKAGE)/svg-editor.css > build/$(PACKAGE)/svg-editor.min.css
 
 release: build/$(PACKAGE)
 	cd build ; $(ZIP) $(PACKAGE).zip -r $(PACKAGE) ; cd ..
Binary file htdocs/svg-edit/build/tools/closure-compiler.jar has changed
Binary file htdocs/svg-edit/build/tools/yuicompressor.jar has changed
Binary file htdocs/svg-edit/build/yuicompressor.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/clipart/moon.svg	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="100" xmlns="http://www.w3.org/2000/svg" height="100" viewBox="0 0 205.5 255.87">
+ <g display="inline">
+  <title>Layer 1</title>
+  <path id="svg_1" d="m10.671,231.42c89.543,56.086,188.11-10.029,193.33-94.559-1.7286-101.53-92.171-150.4-160.16-128.01,35.129,15.844,73.4,62.729,73.871,88.013-3.4428,7.5157-5.8714,16.373,1.5286,18.844-2,12.857-18.486,33.571-21.043,40.643-2.5571,7.0714,2.2143,9.8443,5.4429,10.357,0.2,6.0586-4.4429,8.3572-5.3572,12.156-7.9,3.13-8.4714,9.9872-7.3286,14.844-19.714,18.571-20.571,27.143-80.286,37.714z" stroke="#000" stroke-width="5" fill="#f6c700"/>
+  <path id="svg_3" d="m98.193,180.83c2.5851-3.421,7.4852,2.5632,7.1642,5.1572-0.32201,2.594-0.67928,4.0227-3.7143,5.2857" stroke="#000" stroke-width="5" fill="none"/>
+  <path id="svg_4" d="m104.11,166.92c5.5357-0.49998,14.643,3.8472,17.75,2.37,3.1072-1.4771,3.3929-4.6686,2.3572-6.5129" stroke="#000" stroke-width="5" fill="none"/>
+  <path id="svg_5" d="m125.64,171.49c-3.9286,8.2143-3.8572,18.987,4.2143,33.286" stroke="#000" stroke-width="2" fill="none"/>
+  <path id="svg_6" d="m117.91,97.816c9.572,1.8,16.143-9.0571,20.8-10.101,3.057-1.0986,14.057,27.473,21.057,35.616" stroke="#000" stroke-width="5" fill="none"/>
+  <path id="svg_7" d="m129.49,105.78c7.6428-3.6429,11.179,6.5357,12.607,10.929,1.4286,4.3928,7.1428,5.1071,10.857,5.5" stroke="#000" stroke-width="2" fill="none"/>
+  <path id="svg_8" d="m133.91,114.75c0.87856-0.13215,1.6214,4.3107,2.5143,6.8236,1.2857-0.90571,0.82143-1.5129,1.3928-1.9771,0.96429-0.82143,1.6071,3.6657,2.3572,5.1429,4.8572-0.00001,5.4643,0.89286,5.4286,1.9286-3.25,0.21429-5.1786,0.67857-7.5,1.6071-3.7857,2.3214-6.0357,6.6072-7,5.4286-0.32143-1.5,3.3571-4.5357,4-5.4286-3.0714-5.1428-2.0714-13.393-1.1929-13.525z" stroke="#000" fill="#000"/>
+ </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/clipart/star.svg	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="100" width="100">
+ <path id="svg_1" stroke-linejoin="round" d="M36.536,32.822c12.699-31.856,13.17-31.734,26.356-1.061,34.15,2.198,39.388,9.622,6.513,23.932,19.821,46.047-0.792,28.383-19.842,13.178-22.358,25.013-29.541,22.639-18.782-12.118-7.282-8.501-45.095-18.741,5.755-23.931z" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-miterlimit="4" stroke-width="5" fill="#FF0"/>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/clipart/sun.svg	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg id="svg4562" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="330.42" width="309.18" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata id="metadata4567"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata><defs id="defs4565"/><g id="g4569" fill-rule="nonzero" transform="matrix(1.25,0,0,-1.25,-2.8758105,798.03929)" fill="#f9a749"><path id="path4595" d="M160.13,603.66h0.09-0.09"/><g id="g5207" transform="matrix(2.30724,0,0,2.30724,-136.436,314.961)"><path id="path4735" d="M118.02,123.06c0.15,0,0.31-0.05,0.41,0.11,0.11-0.58,0.21-1.15,0.37-1.78l-0.16-0.1-0.21,0.52c-0.57-1.57,0.37-3.14,0.63-4.65,0.52-0.68,0.52-1.62,0.47-2.51-0.63,0.11-0.31-0.68-0.73-0.78,0.1-0.26,0.31-0.47,0.26-0.84-0.94-0.42-1.62,0.63-1.78,1.26-0.15,0.31-0.15,0.73-0.52,0.99-0.16-0.84-0.78-0.05-1.25-0.16-1.15,5.7-0.84,11.65-0.73,17.71,0.42,1.2,0,2.3,0.1,3.61,0.32-0.79,0-1.78,0.26-2.62,0.11,0.68,0.37,1.26,0.26,1.99l0.26-2.35h0.11v6.74c-0.11-6.06,2.14-11.34,2.25-17.14"/><path id="path4761" d="M115.93,131.06l-0.16,2.14,0.16-1.78v-0.36"/><path id="path4763" d="M131.08,114.13c-0.89-0.89-1.83-1.83-2.77-2.25-0.11,3.19,1.62,6.22,2.66,9.3,1.88,3.5,3.03,7.42,5.75,10.66l0.36,0.99c-2.14-6.16-3.6-12.64-6-18.7"/><path id="path4765" d="M102.5,114.76c0.21-0.11,0.31,0.15,0.47,0.26-0.05-1.36,0.73-1.31-0.1-2.51-0.37-0.26-0.74-0.42-1.26-0.37-3.864,3.56-5.222,8.73-6.633,13.01l1.097-2.61c-0.627,2.87-1.619,5.9-2.508,8.88,2.195-5.85,5.486-11.39,8.934-16.66"/><path id="path4767" d="M115.51,126.2l0.15-2.67-0.15,2.67"/><path id="path4769" d="M157.51,118.52c-5.59-4.18-12.07-8.83-15.78-15.41-2.09-0.58-3.86-1.94-6.27-1.78,0.58,0.26-0.26,0.84,0,1.25h-0.52c0.42,0.47,1.2,0.58,1.26,1.26-0.47,0.15-0.21,1.51-1.36,1.04,0.26,0.63,0.89,0.79,1.51,0.84,0.58,1.36,2.15,0.89,3.14,1.51,5.53,3.82,10.29,9.56,16.56,11.81,0.52-0.1,1.36,0.26,1.46-0.52"/><path id="path4771" d="M79.148,110.26l0.261,0.26c3.03-1.98,5.694-5.01,9.142-5.9,0.732,0.16,1.045,0.11,1.776,0.11,0.105-0.27,0-0.68,0.366-0.89,0.627,0.36,0.731-0.37,0.993-0.73-0.209-0.32-0.679,0.1-0.836-0.37,0.313-0.63,1.567-0.31,1.462-1.25-0.574-0.94-2.507-0.05-1.723-1.884l-0.366-1.515c-5.329,1.358-8.254,6.739-12.068,10.399l1.619-1.1c-0.104-0.05-0.156,0.05-0.209,0.11l-0.261-0.27c0.888-0.26,1.097-1.35,2.142-1.35-0.209,1.04-1.724,1.56-2.298,2.61,0.783-0.16,1.514-1.1,2.298-1.62-0.47,1.04-1.515,1.93-2.664,2.77l-2.612,3.13c1.045-1.04,1.828-1.88,2.978-2.51"/><path id="path4773" d="M116.55,111.88c5.38,0.58,10.03-1.62,14.16-4.28-6.11,1.57-12.69,4.07-18.96,0.78-1-0.15-2.09-0.62-2.51-1.62l0.16-0.42-0.89-0.36c0,0.16,0.05,0.31-0.11,0.36-0.42-0.41-1.36-0.1-1.77-0.73l0.1-0.1c-0.52-0.31-1.77-1.05-2.71-0.78-4.184-3.29-7.476-7.005-9.409-11.759,0.471,0,1.097,0.888,1.097,1.359,0.157,0.104,0.209,0.313,0.366,0.261l0.157-0.157c-0.314,0.731,0.731,0.94,0.888,1.515-0.157-0.575-1.202-1.672-0.627-2.508l-2.142-3.395c-0.679,0.261-0.522-0.575-0.784-0.836,0.418-1.829-1.097-4.232-1.097-6.53,0.052-1.672-0.992-2.56-0.261-4.023l0.104,0.104c0.105-0.156,0.418-1.358-0.208-0.992-0.157-0.314,0.261-0.314,0.208-0.366-0.208-0.418-0.104-1.045,0.262-1.358l0.156,0.104c0.314-0.679,0.889-1.828,0.471-2.612,0.731,0,0.679-1.097,0.992-1.672,0.418-2.298,1.568-4.597,3.292-6.478,0.261-0.783,1.201-1.306,1.619-2.037,0.836,0.261,1.676-1.306,2.406-0.732l-0.16,0.105c1.46-0.418,1.1-2.09,2.87-1.985,1.94-1.15,4.29-0.418,6.43-0.627,2.77-0.679,5.12,1.253,7.63,0.731,1.67,0.522,3.29,1.568,5.01,1.515,2.98,1.463,6.32,2.926,8.41,6.165,4.24,5.538,6.22,12.381,5.28,19.8-1.46,6.164-7.26,12.538-13.79,13.268-7.42,1.62-13.43-2.402-17.29-8.41-2.62-4.336-3.3-11.18-0.42-15.672,2.35-4.545,7.62-5.747,12.54-5.225,2.71,0.418,5.59,1.463,6.89,4.127,2.46,3.762,0.79,8.934,0,12.904-0.63,1.359-2.04,1.933-3.24,2.508-2.77-0.052-5.43-0.157-7.42-2.142,0.42-2.926-0.15-6.374,2.93-8.15,1.1-0.261,1.93-1.045,3.24-0.731,0.36-1.045-1.15-0.575-1.62-0.993-2.04,0.784-4.02,1.933-4.55,4.232l-0.62,6.53c0.78,3.448,4.75,3.291,7.52,3.866,3.19-0.47,5.85-2.09,7.78-4.754,0.58-1.881,1.52-3.761,1.15-5.903,0.84-2.09,0-4.336-0.26-6.635-1.15-2.978-2.92-6.008-5.9-7.889-4.02-0.783-8.2-1.567-12.17,0-5.12,1.358-9.35,6.478-10.03,11.65-1.41,8.464,3.13,15.986,9.92,20.427,6.2,3.96,14.76,3.11,20.69-1.463,6.63-5.224,10.55-12.747,9.67-21.471-0.32-7.732-5.23-14.576-12.07-18.285-3.19-0.888-6.53-2.873-9.62-2.665-2.66-0.157-5.01-0.783-7.94-0.365l-1.09-0.366,0.1-0.522c0.47,0.104,0.89,0.156,1.41,0.156-4.49-0.365-9.51,0.523-13.059,2.978-0.679,0.94-1.829,0.94-2.508,1.515-4.545,2.09-5.694,7.157-7.522,11.18l-0.105,1.254c0.209-0.627,0.47-1.254,0.731-1.881,0.575,1.359-0.522,2.299-0.522,3.762-1.724,4.231-0.418,9.874,0,13.792,0.105,0.94,0.94,2.194,0.522,2.612,0.262,1.253,0.68,2.351,1.254,3.5,1.149-0.209,0.731,1.097,1.149,1.672,1.359,1.515,1.725,3.447,3.501,5.017,0.94,0.21,0.992-0.58,1.724,0-0.523-0.68-0.784-0.21-1.463-0.52,0.313,0.1,0.47-0.68,0.836-0.53-0.105-0.15-0.523-0.15-0.366-0.47,0.314-0.15,0.627,0.26,0.888,0.47-0.052,0.32,0.261,0.63,0.523,1.05,0.731-0.05,1.515,0.94,1.619,1.36-0.313,0.41-0.47-0.32-0.783-0.27l0.417,0.37-0.522,0.16,0.732,0.73v-0.11c0.414-0.26,0.884,0,1.144,0.37l-0.52,0.37c2.98,1.09,4.81,4.85,8.15,5.27,2.25,1.41,5.07,1.94,7.94,1.99v-0.11"/><path id="path4775" d="M114.78,110.37c-0.53-0.16-0.94-0.68-1.62-0.47,0.47,0.31,1.09,0.31,1.62,0.47"/><path id="path4777" d="M112.01,110.26h0.52-0.52"/><path id="path4779" d="M101.25,103.73l-0.63-0.62,0.63,0.62"/><path id="path4781" d="M98.582,102.74l-0.105,0.26h0.366l-0.261-0.26"/><path id="path4783" d="M98.843,102.58l-0.627-0.47,0.627,0.47"/><path id="path4785" d="M96.231,100.96l-0.366-0.36,0.366,0.36"/><path id="path4787" d="M91.842,98.718l-0.156-0.627,0.156,0.627"/><path id="path4789" d="M163.41,97.725c0-0.156,0.06-0.209,0.16-0.261-6.43-2.09-12.33-5.485-19.33-6.269-0.36,0.261-0.94,0.105-1.25,0.522,0.21,0.575,0.42,1.15,0.99,1.62-0.36,0.784-2.14-0.052-1.52,1.097,1.68,0.261,3.14,0.94,4.55,1.672,5.01,0.522,10.19,0.313,15.05,1.619h1.35"/><path id="path4791" d="M70.893,91.456c4.441,0.105,8.202-0.731,12.643-0.261,0.313,1.097,1.828-0.104,1.776,0.993,1.202-0.418-0.261-0.941,0.366-1.724,0.731-0.47,1.724-0.679,2.037-1.411-0.104-0.575-1.358-0.731-0.522-1.358-2.873-0.209-6.74-0.105-9.665-0.157-3.552,0.418-7,1.045-10.135,2.403,1.097,0.157,2.403-0.261,3.5-0.104-3.813,0.679-7.261,2.403-10.762,3.866l10.762-2.247"/><path id="path4793" d="M94.35,93.703l-0.157-0.366,0.157,0.366"/><path id="path4795" d="M151.87,79.806c5.12-0.679,10.92,0.157,14.83-3.134-0.2-0.627,0.27-0.889,0.63-1.254l-1.67,0.627c-7.36,0.836-16.46-1.881-21.42,4.231,0.52,0.47,0.94,0.627,1.62,0.888,2.25,0.105,3.97-1.097,6.01-1.358"/><path id="path4797" d="M88.447,79.649h0.105v-0.47h-0.105v0.47z"/><path id="path4799" d="M85.835,76.672c0.47,0,0.835-0.575,1.097-0.784l0.156-0.627c-0.313,0.157-0.418-0.261-0.627-0.366-0.104-0.209,0.157-0.261,0.209-0.365,0.262,0.104,0.366,0.313,0.627,0.261,0.366-0.575,0.366-0.888,0.523-1.515-0.209,0-0.366-0.261-0.523-0.366,0.627-0.47-0.052-1.097,0.157-1.515-1.881-1.881-4.702-1.463-6.792-2.769-3.552-1.41-7.261-2.873-11.127-3.134l-3.761-0.732c1.149,0.471,2.507,0.784,3.5,1.359-2.038,0.157-4.127-0.888-6.008-0.627,1.776,0.784,3.03,1.933,4.754,2.873-0.105,0.209-0.366,0.105-0.523,0.157l0.157,0.104h-0.888l1.358,0.262-0.104,0.104c-0.052,0,0.679-0.052,0.888,0.261-0.105,0.888,2.403,0.314,1.097,0.993,0.314,0.313,0.732,0.261,1.15,0.261l-0.366-0.261c1.41,0,2.351,1.149,3.761,1.619,0.94,0.471,1.985,0.575,2.717,1.515l-0.105,0.157c1.568,0.366,3.03,2.351,4.911,2.508,0.627,1.045,2.194,0.052,3.344,0.365l0.418,0.262"/><path id="path4801" d="M91.215,74.634l0.105,0.157,0.261-0.418c-0.783-0.313-0.104-1.41-0.104-1.724-0.47,1.202-0.732,2.351-0.784,3.605,0.366-0.157-0.209-1.306,0.522-1.62"/><path id="path4803" d="M90.85,71.029c-0.157-0.104-0.157-0.261-0.157-0.418l-0.261,0.784,0.418-0.366"/><path id="path4805" d="M90.954,70.507l0.105-0.522-0.105,0.522"/><path id="path4807" d="M149.15,62.88c2.2-1.62,3.97-3.866,4.76-6.27-4.76,2.561-10.35,4.128-14.32,8.621,0.16,0.731,0.99,0.156,1.41,0.522l-0.26,0.261c3.4,1.15,5.59-2.142,8.41-3.134"/><path id="path4809" d="M94.35,60.738c-1.149-1.254,1.776-2.299-0.157-3.292-4.858-4.701-10.291-10.239-15.672-14.889l2.298,2.508c-0.783,0.209-1.41-0.836-2.037-1.149l-2.247-2.142c0.836,0.836,1.829,1.724,1.986,2.664-1.463-0.992-2.978-2.037-4.493-3.03,0.836,1.202,1.881,1.515,2.612,2.508-0.052,0.156-0.209,0.156-0.366,0.156,4.545,6.113,9.769,12.538,16.038,17.397-0.156,0.366,0.262,0.68,0.523,0.784,0.731,0,1.149-0.94,1.515-1.515"/><path id="path4811" d="M97.223,60.477l1.515-1.15c-1.149,0.261-2.142,0.784-3.03,1.672,0.627,0.052,0.732-0.888,1.515-0.522"/><path id="path4813" d="M125.54,57.864c-0.16-0.104-0.37-0.156-0.63-0.156,0.21,0.052,0.42,0.156,0.63,0.156"/><path id="path4815" d="M129.93,53.685c1.25,0.157,0.21-1.045,0.52-1.463l-0.37-0.784c1.15-4.336,1.88-9.037,1.73-13.791-3.4,4.858-4.39,10.866-6.9,16.195h0.16c0.26,0.261-0.05,0.574-0.26,0.731,1.25,0.941,3.5,1.463,5.01,0.523l0.11-1.411"/><path id="path4817" d="M110.49,51.7c-0.36-0.523,0.53-0.836,0.79-1.254-1.1-0.104-0.21-1.619-1.41-1.359-4.45-6.373-7.16-13.478-10.139-20.478-0.731-1.045-1.463-2.403-2.612-2.978l-0.261,0.366c3.134,9.037,5.802,18.336,10.032,26.957l-0.37,0.731,1.26,0.784c1.09-0.732,1.93-1.568,2.71-2.769"/></g></g></svg>
--- a/htdocs/svg-edit/editor/ext-connector.js	Fri Apr 23 22:29:49 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-$(function() {
-	svgCanvas.addExtension("Connector", function(vars) {
-		var svgcontent = vars.content,
-			svgroot = vars.root,
-			getNextId = vars.getNextId,
-			getElem = vars.getElem,
-			addElem = vars.addSvgElementFromJson,
-			selManager = vars.selectorManager,
-			started = false,
-			start_x,
-			start_y,
-			cur_line,
-			start_elem,
-			end_elem,
-			connections = [],
-			conn_class = "se_connect",
-			connect_str = "-SE_CONNECT-",
-			selElems;
-			
-		var lang_list = {
-			"en":[
-				{"id": "mode_connect", "title": "Connect two objects" },
-				{"id": "conn_arrow_none", "textContent": "No arrow" },
-				{"id": "conn_arrow_arrow", "textContent": "Arrow" }
-			],
-			"fr":[
-				{"id": "mode_connect", "title": "Connecter deux objets"},
-				{"id": "conn_arrow_none", "textContent": "Sans flèche" },
-				{"id": "conn_arrow_arrow", "textContent": "Flèche" }
-			]
-		};
-		
-		function showPanel(on) {
-			var conn_rules = $('#connector_rules');
-			if(!conn_rules.length) {
-				conn_rules = $('<style id="connector_rules"><\/style>').appendTo('head');
-			} 
-			conn_rules.text(!on?"":"#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }");
-			$('#connector_panel').toggle(on);
-			
-			if(on) {
-				var has_arrow = selElems[0].getAttribute("marker-mid");
-				$("#connector_arrow").val(has_arrow?"arrow":"none");
-			}
-		}
-		
-		function setPoint(elem, pos, x, y, setMid) {
-			var pts = elem.points;
-			var pt = svgroot.createSVGPoint();
-			pt.x = x;
-			pt.y = y;
-			if(pos === 'end') pos = pts.numberOfItems-1;
-			// TODO: Test for this on init, then use alt only if needed
-			try {
-				pts.replaceItem(pt, pos);
-			} catch(err) {
-				// Should only occur in FF which formats points attr as "n,n n,n", so just split
-				var pt_arr = elem.getAttribute("points").split(" ");
-				for(var i=0; i< pt_arr.length; i++) {
-					if(i == pos) {
-						pt_arr[i] = x + ',' + y;
-					}
-				}
-				elem.setAttribute("points",pt_arr.join(" ")); 
-			}
-			
-			if(setMid) {
-				// Add center point
-				var pt_start = pts.getItem(0);
-				var pt_end = pts.getItem(pts.numberOfItems-1);
-				setPoint(elem, 1, (pt_end.x + pt_start.x)/2, (pt_end.y + pt_start.y)/2);
-			}
-		}
-		
-		function addArrow() {
-			var defs = vars.findDefs();
-			var m_id = "se_connector_arrow";
-			var marker = getElem(m_id);
-			
-			if(!marker) {
-				marker = addElem({
-					"element": "marker",
-					"attr": {
-						"viewBox": "0 0 10 10",
-						"id": m_id,
-						"refX": 5,
-						"refY": 5,
-						"markerUnits": "strokeWidth",
-						"markerWidth": 16,
-						"markerHeight": 14,
-						"orient": "auto"
-					}
-				});
-				var arrow = addElem({
-					"element": "path",
-					"attr": {
-						"d": "M0,0 L10,5 L0,10 z",
-						"fill": "#000"
-					}
-				});
-				
-				marker.appendChild(arrow);
-				defs.appendChild(marker);
-			}
-			
-			selElems[0].setAttribute("marker-mid", "url(#" + m_id + ")");
-		}
-
-		function remArrow() {
-			selElems[0].removeAttribute("marker-mid");
-		}
-		
-		// Init code
-		(function() {
-			var conn_tools = $('<div id="connector_panel">\
-			<label><select id="connector_arrow">\
-			<option id="conn_arrow_none" value="none">No arrow</option>\
-			<option id="conn_arrow_arrow" value="arrow">Arrow</option>\
-			</select></label></div>"').hide().appendTo("#tools_top");
-			
-			$('#connector_arrow').change(function() {
-				switch ( this.value ) {
-					case "arrow":
-						addArrow();
-						break;
-					case "none":
-						remArrow();
-						break;
-				}
-			});
-
-			vars.extendWhitelist({
-				"marker": ["viewBox", "id", "refX", "refY", "markerUnits", "markerWidth", "markerHeight", "orient"],
-				"polyline": ["class", "marker-mid"]
-			});
-		}());
-		
-		return {
-			name: "Connector",
-			svgicons: "images/conn.svg",
-			buttons: [{
-				id: "mode_connect",
-				type: "mode",
-				icon: "images/cut.png",
-				title: "Connect two objects",
-				key: "L",
-				includeWith: {
-					button: '#tool_line',
-					isDefault: false,
-					position: 1
-				},
-				events: {
-					'click': function() {
-						svgCanvas.setMode("connector");
-					}
-				}
-			}],
-			addLangData: function(lang) {
-				return {
-					data: lang_list[lang]
-				};
-			},
-			mouseDown: function(opts) {
-				var e = opts.event;
-				
-				start_x = opts.start_x,
-				start_y = opts.start_y;
-				var mode = svgCanvas.getMode();
-				
-				if(mode == "connector") {
-					
-					if(started) return;
-					
-					if(e.target.parentNode.parentNode == svgcontent) {
-						// Connectable element
-						start_elem = e.target;
-						
-						// Get center of source element
-						var bb = svgCanvas.getStrokedBBox([start_elem]);
-						var x = bb.x + bb.width/2;
-						var y = bb.y + bb.height/2;
-						
-						started = true;
-						cur_line = addElem({
-							"element": "polyline",
-							"attr": {
-								"points": (x+','+y+' '+x+','+y+' '+start_x+','+start_y),
-								"stroke": '#000',
-								"stroke-width": 1,
-								"fill": "none",
-								"opacity": .5,
-								"style": "pointer-events:none"
-							}
-						});
-					}
-					return {
-						started: true
-					};
-				} else if(mode == "select") {
-					
-					// Check if selected elements have connections
-					var elems = opts.selectedElements;
-					var i = elems.length;
-					var connectors = $(svgcontent).find("." + conn_class);
-					if(!connectors.length) return;
-					connections = [];
-					
-					while(i--) {
-						var elem = elems[i];
-						if(!elem) continue;
-						if(elem.getAttribute('class') == conn_class) continue;
-						var elem_id = elem.id;
-						connectors.each(function() {
-							var con_id = this.id;
-							if(con_id.indexOf(elem_id) != -1) {
-								var is_start = true;
-								if(con_id.indexOf(connect_str + elem_id) != -1) {
-									// Found connector (selected is end elem)
-									is_start = false;
-								}
-								
-								var bb = svgCanvas.getStrokedBBox([elem]);
-								var x = bb.x + bb.width/2;
-								var y = bb.y + bb.height/2;
-								connections.push({
-									elem: elem,
-									connector: this,
-									is_start: is_start,
-									start_x: x,
-									start_y: y
-								});	
-							}
-						});
-					}
-				}
-			},
-			mouseMove: function(opts) {
-				var zoom = svgCanvas.getZoom();
-				var e = opts.event;
-				var x = opts.mouse_x/zoom;
-				var y = opts.mouse_y/zoom;
-				
-				var	diff_x = x - start_x,
-					diff_y = y - start_y;
-									
-				var mode = svgCanvas.getMode();
-				
-				if(mode == "connector" && started) {
-					// Set middle point for marker
-					setPoint(cur_line, 'end', x, y, true);
-				} else if(mode == "select") {
-					var slen = selElems.length;
-					
-					while(slen--) {
-						var elem = selElems[slen];
-						// Look for selected connector elements
-						if(elem && elem.getAttribute('class') == conn_class) {
-							// Remove the "translate" transform given to move
-							svgCanvas.getTransformList(elem).clear();
-						}
-					}
-					if(connections.length) {
-						// Update line with element
-						var i = connections.length;
-						while(i--) {
-							var conn = connections[i];
-							var line = conn.connector;
-							var elem = conn.elem;
-							var pt_x = conn.start_x + diff_x;
-							var pt_y = conn.start_y + diff_y;
-							setPoint(line, conn.is_start?0:'end', pt_x, pt_y, true);
-						}
-					}
-				} 
-			},
-			mouseUp: function(opts) {
-				var zoom = svgCanvas.getZoom();
-				var e = opts.event,
-					x = opts.mouse_x/zoom,
-					y = opts.mouse_y/zoom;
-				
-				if(svgCanvas.getMode() == "connector") {
-					if(e.target.parentNode.parentNode != svgcontent) {
-						// Not a valid target element, so remove line
-						$(cur_line).remove();
-						started = false;
-						return {
-							keep: false,
-							element: null,
-							started: started
-						}
-					} else if(e.target == start_elem) {
-						// Start line through click
-						started = true;
-						return {
-							keep: true,
-							element: null,
-							started: started
-						}						
-					} else {
-						// Valid end element
-						end_elem = e.target;
-						var line_id = start_elem.id + connect_str + end_elem.id;
-						var alt_line_id = end_elem.id + connect_str + start_elem.id;
-						
-						// Don't create connector if one already exists
-						if($('#'+line_id + ', #' + alt_line_id).length) {
-							$(cur_line).remove();
-							return {
-								keep: false,
-								element: null,
-								started: false
-							}
-						}
-						
-						var bb = svgCanvas.getStrokedBBox([end_elem]);
-						var x = bb.x + bb.width/2;
-						var y = bb.y + bb.height/2;
-						setPoint(cur_line, 'end', x, y, true);
-						cur_line.id = line_id;
-						cur_line.setAttribute("class", conn_class);
-						svgCanvas.addToSelection([cur_line]);
-						svgCanvas.moveToBottomSelectedElement();
-						
-						started = false;
-						return {
-							keep: true,
-							element: cur_line,
-							started: started
-						}
-					}
-				}
-			},
-			selectedChanged: function(opts) {
-				
-				// Use this to update the current selected elements
-				selElems = opts.elems;
-				
-				var i = selElems.length;
-				
-				while(i--) {
-					var elem = selElems[i];
-					if(elem && elem.getAttribute('class') == conn_class) {
-						selManager.requestSelector(elem).showGrips(false);
-						
-						if(opts.selectedElement && !opts.multiselected) {
-							// TODO: Set up context tools and hide most regular line tools
-							showPanel(true);
-						} else {
-							showPanel(false);
-						}
-					} else {
-						showPanel(false);
-					}
-				}
-			},
-			elementChanged: function(opts) {
-				var elem = opts.elems[0];
-				if (elem && elem.tagName == 'svg' && elem.id == "svgcontent") {
-					// Update svgcontent (can change on import)
-					svgcontent = elem;
-				}
-				
-			}
-		};
-	});
-});
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/closepath_icons.svg	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,41 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<g id="tool_closepath">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <title>Layer 1</title>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/>
+  <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/>
+  <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+  <circle r="30" cy="41" cx="123"/>
+  <circle r="30" cy="146" cx="40"/>
+  <circle r="30" cy="260" cx="69"/>
+  <circle r="30" cy="260" cx="228"/>
+  <circle r="30" cy="148" cx="260"/>
+  </g>
+ </g>
+</svg>
+</g>
+<g id="tool_openpath">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <title>Layer 1</title>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/>
+  <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+   <circle r="30" cy="41" cx="123"/>
+   <circle r="30" cy="146" cx="40"/>
+   <circle r="30" cy="260" cx="69"/>
+   <circle r="30" cy="260" cx="228"/>
+   <circle r="30" cy="148" cx="260"/>
+  </g>
+  <g  stroke="#A00" stroke-width="15" fill="none">
+   <line x1="168" y1="24" x2="210" y2="150"/>
+   <line x1="210" y1="24" x2="168" y2="150"/>
+  </g>
+ </g>
+</svg>
+</g>
+
+<g id="svg_eof"/>
+</svg>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/ext-arrows.js	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,296 @@
+/*
+ * ext-arrows.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+ 
+svgEditor.addExtension("Arrows", function(S) {
+		var svgcontent = S.svgcontent,
+			addElem = S.addSvgElementFromJson,
+			nonce = S.nonce,
+			randomize_ids = S.randomize_ids,
+			selElems;
+
+		svgCanvas.bind('setarrownonce', setArrowNonce);
+		svgCanvas.bind('unsetsetarrownonce', unsetArrowNonce);
+			
+		var lang_list = {
+			"en":[
+				{"id": "arrow_none", "textContent": "No arrow" }
+			],
+			"fr":[
+				{"id": "arrow_none", "textContent": "Sans flèche" }
+			]
+		};
+		
+		var prefix = 'se_arrow_';
+		if (randomize_ids) {
+		  var arrowprefix = prefix + nonce + '_';
+		} else {
+		  var arrowprefix = prefix;
+		}
+
+		var pathdata = {
+			fw: {d:"m0,0l10,5l-10,5l5,-5l-5,-5z", refx:8,  id: arrowprefix + 'fw'},
+			bk: {d:"m10,0l-10,5l10,5l-5,-5l5,-5z", refx:2, id: arrowprefix + 'bk'}
+		}
+		
+		function setArrowNonce(window, n) {
+		    randomize_ids = true;
+		    arrowprefix = prefix + n + '_';
+ 			pathdata.fw.id = arrowprefix + 'fw';
+			pathdata.bk.id = arrowprefix + 'bk';
+		}
+
+		function unsetArrowNonce(window) {
+		    randomize_ids = false;
+		    arrowprefix = prefix;
+ 			pathdata.fw.id = arrowprefix + 'fw';
+			pathdata.bk.id = arrowprefix + 'bk';
+		}
+
+		function getLinked(elem, attr) {
+			var str = elem.getAttribute(attr);
+			if(!str) return null;
+			var m = str.match(/\(\#(.*)\)/);
+			if(!m || m.length !== 2) {
+				return null;
+			}
+			return S.getElem(m[1]);
+		}
+		
+		function showPanel(on) {
+			$('#arrow_panel').toggle(on);
+			
+			if(on) {
+				var el = selElems[0];
+				var end = el.getAttribute("marker-end");
+				var start = el.getAttribute("marker-start");
+				var mid = el.getAttribute("marker-mid");
+				var val;
+				
+				if(end && start) {
+					val = "both";
+				} else if(end) {
+					val = "end";
+				} else if(start) {
+					val = "start";
+				} else if(mid) {
+					val = "mid";
+					if(mid.indexOf("bk") != -1) {
+						val = "mid_bk";
+					}
+				}
+				
+				if(!start && !mid && !end) {
+					val = "none";
+				}
+				
+				$("#arrow_list").val(val);
+			}
+		}
+		
+		function resetMarker() {
+			var el = selElems[0];
+			el.removeAttribute("marker-start");
+			el.removeAttribute("marker-mid");
+			el.removeAttribute("marker-end");
+		}
+		
+		function addMarker(dir, type, id) {
+			// TODO: Make marker (or use?) per arrow type, since refX can be different
+			id = id || arrowprefix + dir;
+			
+			var marker = S.getElem(id);
+
+			var data = pathdata[dir];
+			
+			if(type == "mid") {
+				data.refx = 5;
+			}
+
+			if(!marker) {
+				marker = addElem({
+					"element": "marker",
+					"attr": {
+						"viewBox": "0 0 10 10",
+						"id": id,
+						"refY": 5,
+						"markerUnits": "strokeWidth",
+						"markerWidth": 5,
+						"markerHeight": 5,
+						"orient": "auto",
+						"style": "pointer-events:none" // Currently needed for Opera
+					}
+				});
+				var arrow = addElem({
+					"element": "path",
+					"attr": {
+						"d": data.d,
+						"fill": "#000000"
+					}
+				});
+				marker.appendChild(arrow);
+				S.findDefs().appendChild(marker);
+			} 
+			
+			marker.setAttribute('refX', data.refx);
+			
+			return marker;
+		}
+		
+		function setArrow() {
+			var type = this.value;
+			resetMarker();
+		
+			if(type == "none") {
+				return;
+			}
+		
+			// Set marker on element
+			var dir = "fw";
+			if(type == "mid_bk") {
+				type = "mid";
+				dir = "bk";
+			} else if(type == "both") {
+				addMarker("bk", type);
+				svgCanvas.changeSelectedAttribute("marker-start", "url(#" + pathdata.bk.id + ")");
+				type = "end";
+				dir = "fw";
+			} else if (type == "start") {
+				dir = "bk";
+			}
+			
+			addMarker(dir, type);
+			svgCanvas.changeSelectedAttribute("marker-"+type, "url(#" + pathdata[dir].id + ")");
+			S.call("changed", selElems);
+		}
+		
+		function colorChanged(elem) {
+			var color = elem.getAttribute('stroke');
+			
+			var mtypes = ['start','mid','end'];
+			var defs = S.findDefs();
+			
+			$.each(mtypes, function(i, type) {
+				var marker = getLinked(elem, 'marker-'+type);
+				if(!marker) return;
+				
+				var cur_color = $(marker).children().attr('fill');
+				var cur_d = $(marker).children().attr('d');
+				var new_marker = null;
+				if(cur_color === color) return;
+				
+				var all_markers = $(defs).find('marker');
+				// Different color, check if already made
+				all_markers.each(function() {
+					var attrs = $(this).children().attr(['fill', 'd']);
+					if(attrs.fill === color && attrs.d === cur_d) {
+						// Found another marker with this color and this path
+						new_marker = this;
+					}
+				});
+				
+				if(!new_marker) {
+					// Create a new marker with this color
+					var last_id = marker.id;
+					var dir = last_id.indexOf('_fw') !== -1?'fw':'bk';
+					
+					new_marker = addMarker(dir, type, arrowprefix + dir + all_markers.length);
+
+					$(new_marker).children().attr('fill', color);
+				}
+				
+				$(elem).attr('marker-'+type, "url(#" + new_marker.id + ")");
+				
+				// Check if last marker can be removed
+				var remove = true;
+				$(S.svgcontent).find('line, polyline, path, polygon').each(function() {
+					var elem = this;
+					$.each(mtypes, function(j, mtype) {
+						if($(elem).attr('marker-' + mtype) === "url(#" + marker.id + ")") {
+							return remove = false;
+						}
+					});
+					if(!remove) return false;
+				});
+				
+				// Not found, so can safely remove
+				if(remove) {
+					$(marker).remove();
+				}
+
+			});
+			
+		}
+		
+		return {
+			name: "Arrows",
+			context_tools: [{
+				type: "select",
+				panel: "arrow_panel",
+				title: "Select arrow type",
+				id: "arrow_list",
+				options: {
+					none: "No arrow",
+					end: "----&gt;",
+					start: "&lt;----",
+					both: "&lt;---&gt;",
+					mid: "--&gt;--",
+					mid_bk: "--&lt;--"
+				},
+				defval: "none",
+				events: {
+					change: setArrow
+				}
+			}],
+			callback: function() {
+				$('#arrow_panel').hide();
+			},
+			addLangData: function(lang) {
+				return {
+					data: lang_list[lang]
+				};
+			},
+			selectedChanged: function(opts) {
+				
+				// Use this to update the current selected elements
+				selElems = opts.elems;
+				
+				var i = selElems.length;
+				var marker_elems = ['line','path','polyline','polygon'];
+				
+				while(i--) {
+					var elem = selElems[i];
+					if(elem && $.inArray(elem.tagName, marker_elems) != -1) {
+						if(opts.selectedElement && !opts.multiselected) {
+							showPanel(true);
+						} else {
+							showPanel(false);
+						}
+					} else {
+						showPanel(false);
+					}
+				}
+			},
+			elementChanged: function(opts) {
+				var elem = opts.elems[0];
+				if(elem && (
+					elem.getAttribute("marker-start") ||
+					elem.getAttribute("marker-mid") ||
+					elem.getAttribute("marker-end")
+				)) {
+	// 								var start = elem.getAttribute("marker-start");
+	// 								var mid = elem.getAttribute("marker-mid");
+	// 								var end = elem.getAttribute("marker-end");
+					// Has marker, so see if it should match color
+					colorChanged(elem);
+				}
+				
+			}
+		};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/ext-closepath.js	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,92 @@
+/*
+ * ext-closepath.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+// This extension adds a simple button to the contextual panel for paths
+// The button toggles whether the path is open or closed
+svgEditor.addExtension("ClosePath", function(S) {
+		var selElems,
+			updateButton = function(path) {
+				var seglist = path.pathSegList,
+					closed = seglist.getItem(seglist.numberOfItems - 1).pathSegType==1,
+					showbutton = closed ? '#tool_openpath' : '#tool_closepath',
+					hidebutton = closed ? '#tool_closepath' : '#tool_openpath';
+					$(hidebutton).hide();
+					$(showbutton).show();
+			},
+			showPanel = function(on) {
+				$('#closepath_panel').toggle(on);
+				if (on) {
+					var path = selElems[0];
+					if (path) updateButton(path);
+				}
+			},
+		
+			toggleClosed = function() {
+				var path = selElems[0];
+				if (path) {
+					var seglist = path.pathSegList,
+						last = seglist.numberOfItems - 1;					
+					// is closed
+					if(seglist.getItem(last).pathSegType == 1) {
+						seglist.removeItem(last);
+					}
+					else {
+						seglist.appendItem(path.createSVGPathSegClosePath());
+					}
+					updateButton(path);
+				}
+			};
+		
+		return {
+			name: "ClosePath",
+			svgicons: "extensions/closepath_icons.svg",
+			buttons: [{
+				id: "tool_openpath",
+				type: "context",
+				panel: "closepath_panel",
+				title: "Open path",
+				events: {
+					'click': function() {
+						toggleClosed();
+					}
+				}
+			},
+			{
+				id: "tool_closepath",
+				type: "context",
+				panel: "closepath_panel",
+				title: "Close path",
+				events: {
+					'click': function() {
+						toggleClosed();
+					}
+				}
+			}],
+			callback: function() {
+				$('#closepath_panel').hide();
+			},
+			selectedChanged: function(opts) {
+				selElems = opts.elems;
+				var i = selElems.length;
+				
+				while(i--) {
+					var elem = selElems[i];
+					if(elem && elem.tagName == 'path') {
+						if(opts.selectedElement && !opts.multiselected) {
+							showPanel(true);
+						} else {
+							showPanel(false);
+						}
+					} else {
+						showPanel(false);
+					}
+				}
+			}
+		};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/ext-connector.js	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,555 @@
+/*
+ * ext-connector.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+ 
+svgEditor.addExtension("Connector", function(S) {
+	var svgcontent = S.svgcontent,
+		svgroot = S.svgroot,
+		getNextId = S.getNextId,
+		getElem = S.getElem,
+		addElem = S.addSvgElementFromJson,
+		selManager = S.selectorManager,
+		curConfig = svgEditor.curConfig,
+		started = false,
+		start_x,
+		start_y,
+		cur_line,
+		start_elem,
+		end_elem,
+		connections = [],
+		conn_sel = ".se_connector",
+		se_ns,
+// 			connect_str = "-SE_CONNECT-",
+		selElems = [];
+		
+	var lang_list = {
+		"en":[
+			{"id": "mode_connect", "title": "Connect two objects" }
+		],
+		"fr":[
+			{"id": "mode_connect", "title": "Connecter deux objets"}
+		]
+	};
+	
+	function showPanel(on) {
+		var conn_rules = $('#connector_rules');
+		if(!conn_rules.length) {
+			conn_rules = $('<style id="connector_rules"><\/style>').appendTo('head');
+		} 
+		conn_rules.text(!on?"":"#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }");
+		$('#connector_panel').toggle(on);
+	}
+	
+	function setPoint(elem, pos, x, y, setMid) {
+		var pts = elem.points;
+		var pt = svgroot.createSVGPoint();
+		pt.x = x;
+		pt.y = y;
+		if(pos === 'end') pos = pts.numberOfItems-1;
+		// TODO: Test for this on init, then use alt only if needed
+		try {
+			pts.replaceItem(pt, pos);
+		} catch(err) {
+			// Should only occur in FF which formats points attr as "n,n n,n", so just split
+			var pt_arr = elem.getAttribute("points").split(" ");
+			for(var i=0; i< pt_arr.length; i++) {
+				if(i == pos) {
+					pt_arr[i] = x + ',' + y;
+				}
+			}
+			elem.setAttribute("points",pt_arr.join(" ")); 
+		}
+		
+		if(setMid) {
+			// Add center point
+			var pt_start = pts.getItem(0);
+			var pt_end = pts.getItem(pts.numberOfItems-1);
+			setPoint(elem, 1, (pt_end.x + pt_start.x)/2, (pt_end.y + pt_start.y)/2);
+		}
+	}
+	
+	function findConnectors() {
+		var elems = selElems;
+		var connectors = $(svgcontent).find(conn_sel);
+		connections = [];
+
+		// Loop through connectors to see if one is connected to the element
+		connectors.each(function() {
+			var start = $(this).data("c_start");
+			var end = $(this).data("c_end");
+			
+			var parts = [getElem(start), getElem(end)];
+			for(var i=0; i<2; i++) {
+				var c_elem = parts[i];
+				var add_this = false;
+				// The connected element might be part of a selected group
+				$(c_elem).parents().each(function() {
+					if($.inArray(this, elems) !== -1) {
+						// Pretend this element is selected
+						add_this = true;
+					}
+				});
+				
+				if(!c_elem || !c_elem.parentNode) {
+					$(this).remove();
+					continue;
+				}
+				
+				if($.inArray(c_elem, elems) !== -1 || add_this) {
+					var bb = svgCanvas.getStrokedBBox([c_elem]);
+					connections.push({
+						elem: c_elem,
+						connector: this,
+						is_start: (i === 0),
+						start_x: bb.x,
+						start_y: bb.y
+					});	
+				}
+			}
+		});
+	}
+	
+	function updateConnectors() {
+		// Updates connector lines based on selected elements
+		// Is not used on mousemove, as it runs getStrokedBBox every time,
+		// which isn't necessary there.
+		findConnectors();
+		if(connections.length) {
+			// Update line with element
+			var i = connections.length;
+			while(i--) {
+				var conn = connections[i];
+				var line = conn.connector;
+				var elem = conn.elem;
+
+				var sw = line.getAttribute('stroke-width');
+				var pre = conn.is_start?'start':'end';
+				
+				// Update bbox for this element
+				var bb = svgCanvas.getStrokedBBox([elem]);
+				bb.x = conn.start_x;
+				bb.y = conn.start_y;
+				$(line).data(pre+'_bb', bb);
+				var add_offset = $(line).data(pre+'_off');
+			
+				var alt_pre = conn.is_start?'end':'start';
+				
+				// Get center pt of connected element
+				var bb2 = $(line).data(alt_pre+'_bb');
+				var src_x = bb2.x + bb2.width/2;
+				var src_y = bb2.y + bb2.height/2;
+				
+				// Set point of element being moved
+				var pt = getBBintersect(src_x, src_y, bb, add_offset?sw:0);
+				setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
+				
+				// Set point of connected element
+				var pt2 = getBBintersect(pt.x, pt.y, $(line).data(alt_pre + '_bb'), $(line).data(alt_pre + '_off')?sw:0);
+				setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
+				
+				// Update points attribute manually for webkit
+				if(navigator.userAgent.indexOf('AppleWebKit') != -1) {
+					var pts = line.points;
+					var len = pts.numberOfItems;
+					var pt_arr = Array(len);
+					for(var j=0; j< len; j++) {
+						var pt = pts.getItem(j);
+						pt_arr[j] = pt.x + ',' + pt.y;
+					}	
+					line.setAttribute("points",pt_arr.join(" ")); 
+				}
+
+			}
+		}
+	}
+	
+	function getBBintersect(x, y, bb, offset) {
+		if(offset) {
+			offset -= 0;
+			bb = $.extend({}, bb);
+			bb.width += offset;
+			bb.height += offset;
+			bb.x -= offset/2;
+			bb.y -= offset/2;
+		}
+	
+		var mid_x = bb.x + bb.width/2;
+		var mid_y = bb.y + bb.height/2;
+		var len_x = x - mid_x;
+		var len_y = y - mid_y;
+		
+		var slope = Math.abs(len_y/len_x);
+		
+		var ratio;
+		
+		if(slope < bb.height/bb.width) {
+			ratio = (bb.width/2) / Math.abs(len_x);
+		} else {
+			ratio = (bb.height/2) / Math.abs(len_y);
+		}
+		
+		
+		return {
+			x: mid_x + len_x * ratio,
+			y: mid_y + len_y * ratio
+		}
+	}
+	
+	// Do once
+	(function() {
+		var gse = svgCanvas.groupSelectedElements;
+		
+		svgCanvas.groupSelectedElements = function() {
+			svgCanvas.removeFromSelection($(conn_sel).toArray());
+			gse();
+		}
+		
+		var mse = svgCanvas.moveSelectedElements;
+		
+		svgCanvas.moveSelectedElements = function() {
+			svgCanvas.removeFromSelection($(conn_sel).toArray());
+			mse.apply(this, arguments);
+			updateConnectors();
+		}
+		
+		se_ns = svgCanvas.getEditorNS();
+	}());
+	
+	// Do on reset
+	function init() {
+		// Make sure all connectors have data set
+		$(svgcontent).find('*').each(function() { 
+			var conn = this.getAttributeNS(se_ns, "connector");
+			if(conn) {
+				this.setAttribute('class', conn_sel.substr(1));
+				var conn_data = conn.split(' ');
+				var sbb = svgCanvas.getStrokedBBox([getElem(conn_data[0])]);
+				var ebb = svgCanvas.getStrokedBBox([getElem(conn_data[1])]);
+				$(this).data('c_start',conn_data[0])
+					.data('c_end',conn_data[1])
+					.data('start_bb', sbb)
+					.data('end_bb', ebb);
+				svgCanvas.getEditorNS(true);
+			}
+		});
+// 			updateConnectors();
+	}
+	
+// 		$(svgroot).parent().mousemove(function(e) {
+// // 			if(started 
+// // 				|| svgCanvas.getMode() != "connector"
+// // 				|| e.target.parentNode.parentNode != svgcontent) return;
+// 			
+// 			console.log('y')
+// // 			if(e.target.parentNode.parentNode === svgcontent) {
+// // 					
+// // 			}
+// 		});
+	
+	return {
+		name: "Connector",
+		svgicons: "images/conn.svg",
+		buttons: [{
+			id: "mode_connect",
+			type: "mode",
+			icon: "images/cut.png",
+			title: "Connect two objects",
+			key: "Shift+3",
+			includeWith: {
+				button: '#tool_line',
+				isDefault: false,
+				position: 1
+			},
+			events: {
+				'click': function() {
+					svgCanvas.setMode("connector");
+				}
+			}
+		}],
+		addLangData: function(lang) {
+			return {
+				data: lang_list[lang]
+			};
+		},
+		mouseDown: function(opts) {
+			var e = opts.event;
+			start_x = opts.start_x,
+			start_y = opts.start_y;
+			var mode = svgCanvas.getMode();
+			
+			if(mode == "connector") {
+				
+				if(started) return;
+				
+				var mouse_target = e.target;
+				
+				var parents = $(mouse_target).parents();
+				
+				if($.inArray(svgcontent, parents) != -1) {
+					// Connectable element
+					
+					// If child of foreignObject, use parent
+					var fo = $(mouse_target).closest("foreignObject");
+					start_elem = fo.length ? fo[0] : mouse_target;
+					
+					// Get center of source element
+					var bb = svgCanvas.getStrokedBBox([start_elem]);
+					var x = bb.x + bb.width/2;
+					var y = bb.y + bb.height/2;
+					
+					started = true;
+					cur_line = addElem({
+						"element": "polyline",
+						"attr": {
+							"id": getNextId(),
+							"points": (x+','+y+' '+x+','+y+' '+start_x+','+start_y),
+							"stroke": '#' + curConfig.initStroke.color,
+							"stroke-width": (!start_elem.stroke_width || start_elem.stroke_width == 0) ? curConfig.initStroke.width : start_elem.stroke_width,
+							"fill": "none",
+							"opacity": curConfig.initStroke.opacity,
+							"style": "pointer-events:none"
+						}
+					});
+					$(cur_line).data('start_bb', bb);
+				}
+				return {
+					started: true
+				};
+			} else if(mode == "select") {
+				findConnectors();
+			}
+		},
+		mouseMove: function(opts) {
+			var zoom = svgCanvas.getZoom();
+			var e = opts.event;
+			var x = opts.mouse_x/zoom;
+			var y = opts.mouse_y/zoom;
+			
+			var	diff_x = x - start_x,
+				diff_y = y - start_y;
+								
+			var mode = svgCanvas.getMode();
+			
+			if(mode == "connector" && started) {
+
+				// Set start point (adjusts based on bb)
+				var pt = getBBintersect(x, y, $(cur_line).data('start_bb'));
+				start_x = pt.x;
+				start_y = pt.y;
+				
+				setPoint(cur_line, 0, pt.x, pt.y, true);
+				
+				// Set end point
+				setPoint(cur_line, 'end', x, y, true);
+			} else if(mode == "select") {
+				var slen = selElems.length;
+				
+				while(slen--) {
+					var elem = selElems[slen];
+					// Look for selected connector elements
+					if(elem && $(elem).data('c_start')) {
+						// Remove the "translate" transform given to move
+						svgCanvas.removeFromSelection([elem]);
+						svgCanvas.getTransformList(elem).clear();
+
+					}
+				}
+				if(connections.length) {
+					// Update line with element
+					var i = connections.length;
+					while(i--) {
+						var conn = connections[i];
+						var line = conn.connector;
+						var elem = conn.elem;
+						
+						var pre = conn.is_start?'start':'end';
+						var sw = line.getAttribute('stroke-width');
+						
+						// Update bbox for this element
+						var bb = $(line).data(pre+'_bb');
+						bb.x = conn.start_x + diff_x;
+						bb.y = conn.start_y + diff_y;
+						$(line).data(pre+'_bb', bb);
+						
+						var alt_pre = conn.is_start?'end':'start';
+						
+						// Get center pt of connected element
+						var bb2 = $(line).data(alt_pre+'_bb');
+						var src_x = bb2.x + bb2.width/2;
+						var src_y = bb2.y + bb2.height/2;
+						
+						// Set point of element being moved
+						var pt = getBBintersect(src_x, src_y, bb, $(line).data(pre+'_off')?sw:0);
+						setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
+						
+						// Set point of connected element
+						var pt2 = getBBintersect(pt.x, pt.y, $(line).data(alt_pre + '_bb'), $(line).data(alt_pre+'_off')?sw:0);
+						setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
+
+					}
+					
+				}
+			} 
+		},
+		mouseUp: function(opts) {
+			var zoom = svgCanvas.getZoom();
+			var e = opts.event,
+				x = opts.mouse_x/zoom,
+				y = opts.mouse_y/zoom,
+				mouse_target = e.target;
+			
+			if(svgCanvas.getMode() == "connector") {
+				var fo = $(mouse_target).closest("foreignObject");
+				if(fo.length) mouse_target = fo[0];
+				if(mouse_target.parentNode.parentNode != svgcontent) {
+					// Not a valid target element, so remove line
+					$(cur_line).remove();
+					started = false;
+					return {
+						keep: false,
+						element: null,
+						started: started
+					}
+				} else if(mouse_target == start_elem) {
+					// Start line through click
+					started = true;
+					return {
+						keep: true,
+						element: null,
+						started: started
+					}						
+				} else {
+					// Valid end element
+					end_elem = mouse_target;
+					
+					var start_id = start_elem.id, end_id = end_elem.id;
+					var conn_str = start_id + " " + end_id;
+					var alt_str = end_id + " " + start_id;
+					// Don't create connector if one already exists
+					var dupe = $(svgcontent).find(conn_sel).filter(function() {
+						var conn = this.getAttributeNS(se_ns, "connector");
+						if(conn == conn_str || conn == alt_str) return true;
+					});
+					if(dupe.length) {
+						$(cur_line).remove();
+						return {
+							keep: false,
+							element: null,
+							started: false
+						}
+					}
+					
+					var bb = svgCanvas.getStrokedBBox([end_elem]);
+					
+					var pt = getBBintersect(start_x, start_y, bb);
+					setPoint(cur_line, 'end', pt.x, pt.y, true);
+					$(cur_line)
+						.data("c_start", start_id)
+						.data("c_end", end_id)
+						.data("end_bb", bb);
+					se_ns = svgCanvas.getEditorNS(true);
+					cur_line.setAttributeNS(se_ns, "se:connector", conn_str);
+					cur_line.setAttribute('class', conn_sel.substr(1));
+					cur_line.setAttribute('opacity', 1);
+					svgCanvas.addToSelection([cur_line]);
+					svgCanvas.moveToBottomSelectedElement();
+					selManager.requestSelector(cur_line).showGrips(false);
+					started = false;
+					return {
+						keep: true,
+						element: cur_line,
+						started: started
+					}
+				}
+			}
+		},
+		selectedChanged: function(opts) {
+			
+			// Use this to update the current selected elements
+			selElems = opts.elems;
+			
+			var i = selElems.length;
+			
+			while(i--) {
+				var elem = selElems[i];
+				if(elem && $(elem).data('c_start')) {
+					selManager.requestSelector(elem).showGrips(false);
+					if(opts.selectedElement && !opts.multiselected) {
+						// TODO: Set up context tools and hide most regular line tools
+						showPanel(true);
+					} else {
+						showPanel(false);
+					}
+				} else {
+					showPanel(false);
+				}
+			}
+		},
+		elementChanged: function(opts) {
+			var elem = opts.elems[0];
+			if (elem && elem.tagName == 'svg' && elem.id == "svgcontent") {
+				// Update svgcontent (can change on import)
+				svgcontent = elem;
+				init();
+			}
+			
+			// Has marker, so change offset
+			if(elem && (
+				elem.getAttribute("marker-start") ||
+				elem.getAttribute("marker-mid") ||
+				elem.getAttribute("marker-end")
+			)) {
+				var start = elem.getAttribute("marker-start");
+				var mid = elem.getAttribute("marker-mid");
+				var end = elem.getAttribute("marker-end");
+				cur_line = elem;
+				$(elem)
+					.data("start_off", !!start)
+					.data("end_off", !!end);
+				
+				if(elem.tagName == "line" && mid) {
+					// Convert to polyline to accept mid-arrow
+					
+					var x1 = elem.getAttribute('x1')-0;
+					var x2 = elem.getAttribute('x2')-0;
+					var y1 = elem.getAttribute('y1')-0;
+					var y2 = elem.getAttribute('y2')-0;
+					var id = elem.id;
+					
+					var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
+					var pline = addElem({
+						"element": "polyline",
+						"attr": {
+							"points": (x1+','+y1+ mid_pt +x2+','+y2),
+							"stroke": elem.getAttribute('stroke'),
+							"stroke-width": elem.getAttribute('stroke-width'),
+							"marker-mid": mid,
+							"fill": "none",
+							"opacity": elem.getAttribute('opacity') || 1
+						}
+					});
+					$(elem).after(pline).remove();
+					svgCanvas.clearSelection();
+					pline.id = id;
+					svgCanvas.addToSelection([pline]);
+				}
+					
+			}
+			updateConnectors();
+		},
+		toolButtonStateUpdate: function(opts) {
+			if(opts.nostroke) {
+				if ($('#mode_connect').hasClass('tool_button_current')) {
+					clickSelect();
+				}
+			}
+			$('#mode_connect')
+				.toggleClass('disabled',opts.nostroke);
+		}
+	};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/ext-eyedropper.js	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,90 @@
+/*
+ * ext-eyedropper.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+svgEditor.addExtension("eyedropper", function(S) {
+		var svgcontent = S.svgcontent,
+			svgns = "http://www.w3.org/2000/svg",
+			svgdoc = S.svgroot.parentNode.ownerDocument,
+			ChangeElementCommand = svgCanvas.getPrivateMethods().ChangeElementCommand,
+			addToHistory = svgCanvas.getPrivateMethods().addCommandToHistory,
+			currentStyle = {fillPaint: "red", fillOpacity: 1.0,
+							strokePaint: "black", strokeOpacity: 1.0, 
+							strokeWidth: 5, strokeDashArray: null,
+							opacity: 1.0 };
+		
+		return {
+			name: "eyedropper",
+			svgicons: "extensions/eyedropper-icon.xml",
+			buttons: [{
+				id: "tool_eyedropper",
+				type: "mode",
+				title: "Eye Dropper Tool",
+				events: {
+					"click": function() {
+						svgCanvas.setMode("eyedropper");
+					}
+				}
+			}],
+			
+			// if we have selected an element, grab its paint and enable the eye dropper button
+			selectedChanged: function(opts) {
+				// if we are in eyedropper mode, we don't want to disable the eye-dropper tool
+				var mode = svgCanvas.getMode();
+				if (mode == "eyedropper") return;
+
+				var elem = null;
+				var tool = $('#tool_eyedropper');
+				// enable-eye-dropper if one element is selected
+				if (opts.elems.length == 1 && opts.elems[0] && 
+					$.inArray(opts.elems[0].nodeName, ['svg', 'g', 'use']) == -1) 
+				{
+					elem = opts.elems[0];
+					tool.removeClass('disabled');
+					// grab the current style
+					currentStyle.fillPaint = elem.getAttribute("fill") || "black";
+					currentStyle.fillOpacity = elem.getAttribute("fill-opacity") || 1.0;
+					currentStyle.strokePaint = elem.getAttribute("stroke");
+					currentStyle.strokeOpacity = elem.getAttribute("stroke-opacity") || 1.0;
+					currentStyle.strokeWidth = elem.getAttribute("stroke-width");
+					currentStyle.strokeDashArray = elem.getAttribute("stroke-dasharray");
+					currentStyle.opacity = elem.getAttribute("opacity") || 1.0;
+				}
+				// disable eye-dropper tool
+				else {
+					tool.addClass('disabled');
+				}
+			},
+			
+			mouseDown: function(opts) {
+				var mode = svgCanvas.getMode();
+				if (mode == "eyedropper") {
+					var e = opts.event;
+					var target = e.target;
+					if ($.inArray(target.nodeName, ['svg', 'g', 'use']) == -1) {
+						var changes = {};
+
+						var change = function(elem, attrname, newvalue) {
+							changes[attrname] = elem.getAttribute(attrname);
+							elem.setAttribute(attrname, newvalue);
+						};
+						
+						if (currentStyle.fillPaint) 		change(target, "fill", currentStyle.fillPaint);
+						if (currentStyle.fillOpacity) 		change(target, "fill-opacity", currentStyle.fillOpacity);
+						if (currentStyle.strokePaint) 		change(target, "stroke", currentStyle.strokePaint);
+						if (currentStyle.strokeOpacity) 	change(target, "stroke-opacity", currentStyle.strokeOpacity);
+						if (currentStyle.strokeWidth) 		change(target, "stroke-width", currentStyle.strokeWidth);
+						if (currentStyle.strokeDashArray) 	change(target, "stroke-dasharray", currentStyle.strokeDashArray);
+						if (currentStyle.opacity) 			change(target, "opacity", currentStyle.opacity);
+						
+						addToHistory(new ChangeElementCommand(target, changes));
+					}
+				}
+			},
+		};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/ext-foreignobject.js	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,277 @@
+/*
+ * ext-foreignobject.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jacques Distler 
+ * Copyright(c) 2010 Alexis Deveria 
+ *
+ */
+
+svgEditor.addExtension("foreignObject", function(S) {
+		var svgcontent = S.svgcontent,
+			addElem = S.addSvgElementFromJson,
+			selElems,
+			svgns = "http://www.w3.org/2000/svg",
+			xlinkns = "http://www.w3.org/1999/xlink",
+			xmlns = "http://www.w3.org/XML/1998/namespace",
+			xmlnsns = "http://www.w3.org/2000/xmlns/",
+			se_ns = "http://svg-edit.googlecode.com",
+			htmlns = "http://www.w3.org/1999/xhtml",
+			mathns = "http://www.w3.org/1998/Math/MathML",
+			editingforeign = false,
+			svgdoc = S.svgroot.parentNode.ownerDocument,
+			started,
+			newFO;
+			
+			
+		var properlySourceSizeTextArea = function(){
+			// TODO: remove magic numbers here and get values from CSS
+			var height = $('#svg_source_container').height() - 80;
+			$('#svg_source_textarea').css('height', height);
+		};
+
+		function showPanel(on) {
+			var fc_rules = $('#fc_rules');
+			if(!fc_rules.length) {
+				fc_rules = $('<style id="fc_rules"><\/style>').appendTo('head');
+			} 
+			fc_rules.text(!on?"":" #tool_topath { display: none !important; }");
+			$('#foreignObject_panel').toggle(on);
+		}
+
+		function toggleSourceButtons(on) {
+			$('#tool_source_save, #tool_source_cancel').toggle(!on);
+			$('#foreign_save, #foreign_cancel').toggle(on);
+		}
+		
+			
+		// Function: setForeignString(xmlString, elt)
+		// This function sets the content of element elt to the input XML.
+		//
+		// Parameters:
+		// xmlString - The XML text.
+		// elt - the parent element to append to
+		//
+		// Returns:
+		// This function returns false if the set was unsuccessful, true otherwise.
+		function setForeignString(xmlString) {
+			var elt = selElems[0];
+			try {
+				// convert string into XML document
+				var newDoc = Utils.text2xml('<svg xmlns="'+svgns+'" xmlns:xlink="'+xlinkns+'">'+xmlString+'</svg>');
+				// run it through our sanitizer to remove anything we do not support
+				S.sanitizeSvg(newDoc.documentElement);
+				elt.parentNode.replaceChild(svgdoc.importNode(newDoc.documentElement.firstChild, true), elt);
+				S.call("changed", [elt]);
+				svgCanvas.clearSelection();
+			} catch(e) {
+				console.log(e);
+				return false;
+			}
+	
+			return true;
+		};
+
+		function showForeignEditor() {
+			var elt = selElems[0];
+			if (!elt || editingforeign) return;
+			editingforeign = true;
+			toggleSourceButtons(true);
+			elt.removeAttribute('fill');
+
+			var str = S.svgToString(elt, 0);
+			$('#svg_source_textarea').val(str);
+			$('#svg_source_editor').fadeIn();
+			properlySourceSizeTextArea();
+			$('#svg_source_textarea').focus();
+		}
+		
+		function setAttr(attr, val) {
+			svgCanvas.changeSelectedAttribute(attr, val);
+			S.call("changed", selElems);
+		}
+		
+		
+		return {
+			name: "foreignObject",
+			svgicons: "extensions/foreignobject-icons.xml",
+			buttons: [{
+				id: "tool_foreign",
+				type: "mode",
+				title: "Foreign Object Tool",
+				events: {
+					'click': function() {
+						svgCanvas.setMode('foreign')
+					}
+				}
+			},{
+				id: "edit_foreign",
+				type: "context",
+				panel: "foreignObject_panel",
+				title: "Edit ForeignObject Content",
+				events: {
+					'click': function() {
+						showForeignEditor();
+					}
+				}
+			}],
+			
+			context_tools: [{
+				type: "input",
+				panel: "foreignObject_panel",
+				title: "Change foreignObject's width",
+				id: "foreign_width",
+				label: "w",
+				size: 3,
+				events: {
+					change: function() {
+						setAttr('width', this.value);
+					}
+				}
+			},{
+				type: "input",
+				panel: "foreignObject_panel",
+				title: "Change foreignObject's height",
+				id: "foreign_height",
+				label: "h",
+				events: {
+					change: function() {
+						setAttr('height', this.value);
+					}
+				}
+			}, {
+				type: "input",
+				panel: "foreignObject_panel",
+				title: "Change foreignObject's font size",
+				id: "foreign_font_size",
+				label: "font-size",
+				size: 2,
+				defval: 16,
+				events: {
+					change: function() {
+						setAttr('font-size', this.value);
+					}
+				}
+			}
+			
+			
+			],
+			callback: function() {
+				$('#foreignObject_panel').hide();
+
+				var endChanges = function() {
+					$('#svg_source_editor').hide();
+					editingforeign = false;
+					$('#svg_source_textarea').blur();
+					toggleSourceButtons(false);
+				}
+
+				// TODO: Needs to be done after orig icon loads
+				setTimeout(function() {				
+					// Create source save/cancel buttons
+					var save = $('#tool_source_save').clone()
+						.hide().attr('id', 'foreign_save').unbind()
+						.appendTo("#tool_source_back").click(function() {
+							
+							if (!editingforeign) return;
+
+							if (!setForeignString($('#svg_source_textarea').val())) {
+								$.confirm("Errors found. Revert to original?", function(ok) {
+									if(!ok) return false;
+									endChanges();
+								});
+							} else {
+								endChanges();
+							}
+							// setSelectMode();	
+						});
+						
+					var cancel = $('#tool_source_cancel').clone()
+						.hide().attr('id', 'foreign_cancel').unbind()
+						.appendTo("#tool_source_back").click(function() {
+							endChanges();
+						});
+					
+				}, 3000);
+			},
+			mouseDown: function(opts) {
+				var e = opts.event;
+				
+				if(svgCanvas.getMode() == "foreign") {
+
+					started = true;
+					newFO = S.addSvgElementFromJson({
+						"element": "foreignObject",
+						"attr": {
+							"x": opts.start_x,
+							"y": opts.start_y,
+							"id": S.getNextId(),
+							"font-size": 16, //cur_text.font_size,
+							"width": "48",
+							"height": "20",
+							"style": "pointer-events:inherit"
+						}
+					});
+					var m = svgdoc.createElementNS(mathns, 'math');
+					m.setAttributeNS(xmlnsns, 'xmlns', mathns);
+					m.setAttribute('display', 'inline');
+					var mi = svgdoc.createElementNS(mathns, 'mi');
+					mi.setAttribute('mathvariant', 'normal');
+					mi.textContent = "\u03A6";
+					var mo = svgdoc.createElementNS(mathns, 'mo');
+					mo.textContent = "\u222A";
+					var mi2 = svgdoc.createElementNS(mathns, 'mi');
+					mi2.textContent = "\u2133";
+					m.appendChild(mi);
+					m.appendChild(mo);
+					m.appendChild(mi2);
+					newFO.appendChild(m);
+					return {
+						started: true
+					}
+				}
+			},
+			mouseUp: function(opts) {
+				var e = opts.event;
+				if(svgCanvas.getMode() == "foreign" && started) {
+					var attrs = $(newFO).attr(["width", "height"]);
+					keep = (attrs.width != 0 || attrs.height != 0);
+					svgCanvas.addToSelection([newFO], true);
+
+					return {
+						keep: keep,
+						element: newFO
+					}
+
+				}
+				
+			},
+			selectedChanged: function(opts) {
+				// Use this to update the current selected elements
+				selElems = opts.elems;
+				
+				var i = selElems.length;
+				
+				while(i--) {
+					var elem = selElems[i];
+					if(elem && elem.tagName == "foreignObject") {
+						if(opts.selectedElement && !opts.multiselected) {
+							$('#foreign_font_size').val(elem.getAttribute("font-size"));
+							$('#foreign_width').val(elem.getAttribute("width"));
+							$('#foreign_height').val(elem.getAttribute("height"));
+						
+							showPanel(true);
+						} else {
+							showPanel(false);
+						}
+					} else {
+						showPanel(false);
+					}
+				}
+			},
+			elementChanged: function(opts) {
+				var elem = opts.elems[0];
+			}
+		};
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/ext-helloworld.js	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,78 @@
+/*
+ * ext-helloworld.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+ 
+/* 
+	This is a very basic SVG-Edit extension. It adds a "Hello World" button in
+	the left panel. Clicking on the button, and then the canvas will show the
+ 	user the point on the canvas that was clicked on.
+*/
+ 
+svgEditor.addExtension("Hello World", function() {
+
+		return {
+			name: "Hello World",
+			// For more notes on how to make an icon file, see the source of
+			// the hellorworld-icon.xml
+			svgicons: "extensions/helloworld-icon.xml",
+			
+			// Multiple buttons can be added in this array
+			buttons: [{
+				// Must match the icon ID in helloworld-icon.xml
+				id: "hello_world", 
+				
+				// This indicates that the button will be added to the "mode"
+				// button panel on the left side
+				type: "mode", 
+				
+				// Tooltip text
+				title: "Say 'Hello World'", 
+				
+				// Events
+				events: {
+					'click': function() {
+						// The action taken when the button is clicked on.
+						// For "mode" buttons, any other button will 
+						// automatically be de-pressed.
+						svgCanvas.setMode("hello_world");
+					}
+				}
+			}],
+			// This is triggered when the main mouse button is pressed down 
+			// on the editor canvas (not the tool panels)
+			mouseDown: function() {
+				// Check the mode on mousedown
+				if(svgCanvas.getMode() == "hello_world") {
+				
+					// The returned object must include "started" with 
+					// a value of true in order for mouseUp to be triggered
+					return {started: true};
+				}
+			},
+			
+			// This is triggered from anywhere, but "started" must have been set
+			// to true (see above). Note that "opts" is an object with event info
+			mouseUp: function(opts) {
+				// Check the mode on mouseup
+				if(svgCanvas.getMode() == "hello_world") {
+					var zoom = svgCanvas.getZoom();
+					
+					// Get the actual coordinate by dividing by the zoom value
+					var x = opts.mouse_x / zoom;
+					var y = opts.mouse_y / zoom;
+					
+					var text = "Hello World!\n\nYou clicked here: " 
+						+ x + ", " + y;
+						
+					// Show the text using the custom alert function
+					$.alert(text);
+				}
+			}
+		};
+});
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/eyedropper-icon.xml	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,34 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+
+<g id="tool_eyedropper">
+<svg viewBox="0 0 320 320" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+  <radialGradient id="eyedropper_svg_6" cx="0.5" cy="0.5" r="0.5">
+   <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+   <stop offset="1" stop-color="#e5e5e5" stop-opacity="0.38"/>
+  </radialGradient>
+  <linearGradient id="eyedropper_svg_15" x1="0" y1="0" x2="0.58594" y2="0.55078">
+   <stop offset="0" stop-color="#ffffff" stop-opacity="0.57"/>
+   <stop offset="1" stop-color="#000056" stop-opacity="1"/>
+  </linearGradient>
+  <linearGradient id="eyedropper_svg_19" x1="0" y1="0" x2="1" y2="1">
+   <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+   <stop offset="1" stop-color="#ffffff" stop-opacity="0"/>
+  </linearGradient>
+ </defs>
+ <g display="inline">
+  <title>Layer 1</title>
+  <path d="m193.899994,73l-119.899979,118l-15,39.5l10.25,4.5l43.750015,-20l108.999969,-112l-28.100006,-30z" id="svg_3" fill="none" stroke="#000000" stroke-width="5"/>
+  <path d="m58.649994,232c-2.75,28.200012 -26.399994,28.950012 -21.899994,59c4.5,30.049988 55,28 55.5,-1.25c0.5,-29.25 -20.25,-28.75 -22.25,-54.75l-11.350006,-3z" id="svg_4" fill="#aa56ff" stroke="#000000" stroke-width="7"/>
+  <path d="m45.474976,269.275024l13.775024,0.474976l-0.75,16.75l-14.25,-1.25l1.224976,-15.974976z" id="svg_5" fill="url(#eyedropper_svg_6)" stroke-width="5" fill-opacity="0.73"/>
+  <path d="m217.899994,46c21.5,-101.549999 141.600006,20.449997 28.100006,33l-5,44l-63,-66l39.899994,-11z" id="svg_2" fill="#000000" stroke-width="5"/>
+  <path d="m206.825012,61.075008c3.712494,-2.46249 7.637482,-3.53751 14.424988,-5.575008c10.125,-16.5 32.875,-41.5 40.5,-35c7.625,6.5 -21.25,35.625 -37.5,39.25c-5.5,10.125 -8,13.875 -17.25,16.5c-2.837494,-8.162514 -4.262482,-12.337486 -0.174988,-15.174992z" id="svg_7" fill="url(#eyedropper_svg_15)" stroke-width="5"/>
+  <path d="m133.049988,134.75l46.950012,9.25l-66,70l-42.5,20.5l-11.5,-5l14,-37.5l59.049988,-57.25z" id="svg_11" fill="#aa56ff" stroke="#000000" stroke-width="7"/>
+  <path d="m71.425034,212.350006l9.050888,-20.022537l51.516724,-49.327469l8.507355,0.97197l-69.074966,68.378036z" id="svg_16" fill="url(#eyedropper_svg_19)" stroke-width="5"/>
+ </g>
+</svg>
+</g>
+	
+	<g id="svg_eof"/>
+</svg>
\ No newline at end of file
Binary file htdocs/svg-edit/editor/extensions/eyedropper.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/foreignobject-icons.xml	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,96 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+	<g id="tool_foreign">
+		<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 84 84">
+		  <g fill="#444" opacity="0.2" transform="translate(6,6)">
+		  <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		  <g fill="#444" opacity="0.3" transform="translate(4,4)">
+		  <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		  <g fill="#444" opacity="0.5" transform="translate(2,2)">
+		  <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		  <g fill="#0000CC">
+		  <path id="xyz321" d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+			c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+			c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+			c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+			c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+		  </g>
+		</svg>
+	</g>
+	
+	<g id="edit_foreign">
+		<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="34 38 170 170" overflow="hidden">
+		<g fill="#000088">
+			<path d="M30.1,63.9v-4.3l30.2-14.9V50L36.5,61.7l23.8,11.7v5.3L30.1,63.9z"/>
+			<path d="M106.1,79.7v-1.1c4.2-0.5,4.8-1.1,4.8-5.2V58.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+				c0,4.5,1.1,5.7,5.2,5.8v1.1H86.8v-1.1c4.1-0.3,4.9-1.1,4.9-5.1V57.9c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+				c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V55.4c0-3.5-0.6-4.6-2.5-4.6
+				c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+				c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H106.1z"/>
+			<path d="M147.3,80.5c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3
+				c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2
+				c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14
+				c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C151.3,79.6,149.8,80.5,147.3,80.5z M142.6,60.5c-8.7,3.2-11.7,5.8-11.7,10v0.3
+				c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V60.5z"/>
+			<path d="M165.3,80.5c-4.2,0-6.3-3.1-6.3-9.1V49.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4
+				c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5
+				c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C171.8,78.7,169,80.5,165.3,80.5z"/>
+			<path d="M193.8,79.7v-1.1c4.1-0.4,4.9-1.3,4.9-6.2V58.1c0-5-1.8-7.6-5.4-7.6c-2.8,0-5,1.2-8,4.5v17.4
+				c0,5,0.7,5.8,4.9,6.3v1.1h-15.6v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V38.5c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2l1.9-0.6
+				c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c3.3-4.3,6.3-6,10.6-6c5.9,0,8.9,3.9,8.9,11.5v14.3c0,5,0.4,5.5,4.3,6.3v1.1h-15.2V79.7z"/>
+			<path d="M59.1,116.1v-4.3l30.2-14.9v5.3l-23.8,11.7l23.8,11.7v5.3L59.1,116.1z"/>
+			<path d="M135.1,131.9v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.1c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+				c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.7c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+				c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5v-18.2c0-3.5-0.6-4.6-2.5-4.6
+				c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+				c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H135.1z"/>
+			<path d="M152.1,131.9v-1.1c5-0.3,5.7-1.1,5.7-6.3v-16.6c0-3.2-0.6-4.3-2.4-4.3c-0.6,0-1.6,0.1-2.4,0.2l-0.6,0.1v-1.1
+				l11.2-4L164,99v25.6c0,5.2,0.6,5.9,5.3,6.3v1.1L152.1,131.9L152.1,131.9z M160.8,93.1c-2,0-3.7-1.6-3.7-3.7c0-2,1.7-3.7,3.7-3.7
+				c2.1,0,3.7,1.7,3.7,3.7C164.6,91.6,163,93.1,160.8,93.1z"/>
+			<path d="M175.8,131v-5.3l23.7-11.8l-23.7-11.7v-5.3l30.1,14.9v4.3L175.8,131z"/>
+			<path d="M31.1,169.5v-4.3l30.2-14.9v5.3l-23.8,11.7L61.3,179v5.3L31.1,169.5z"/>
+			<path d="M71.3,186.4h-4.9l16.5-49.7h4.8L71.3,186.4z"/>
+			<path d="M127.1,185.3v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+				c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.6c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+				c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V161c0-3.5-0.6-4.6-2.5-4.6
+				c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+				c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H127.1L127.1,185.3z"/>
+			<path d="M168.3,186.1c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3
+				c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2
+				c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14
+				c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C172.3,185.2,170.8,186.1,168.3,186.1z M163.8,166.1c-8.7,3.2-11.7,5.8-11.7,10
+				v0.3c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V166.1z"/>
+			<path d="M186.3,186.1c-4.2,0-6.3-3.1-6.3-9.1v-21.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4
+				c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5
+				c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C192.8,184.3,190,186.1,186.3,186.1z"/>
+			<path d="M209.1,185.3h-13.4v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V144c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2
+				l1.9-0.6c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c0.9-1.2,1.9-2.2,2.8-3.1"/>
+			<path d="M209.1,157.9c-0.8,0.7-1.7,1.5-2.7,2.6v17.4c0,4,0.4,5.3,2.7,5.9"/>
+		  </g>
+		  <g>
+			<polyline opacity="0.2" fill="#231F20" points="209.1,76.4 118.7,186.5 139.1,186.4 209.1,121 209.1,76.4 "/>
+			<polyline opacity="0.4" fill="#231F20" points="209.1,76.2 118.5,186.5 129.7,186.4 200.2,120.3 209.1,100.8 209.1,76.4 "/>
+			<path fill="#FFD761" d="M121.6,88.7l0.8,87.5l62.3-56.7c0,0-15.3-25.8-24.8-30C151.1,85.6,121.6,88.7,121.6,88.7z"/>
+			<path fill="#FEA01E" d="M209.1,19.5h-54l-33.5,69.2c0,0,29.7-3.4,38.3,0.8c8.9,4.4,25,30.8,25,30.8l24.2-50V19.5z"/>
+			<path d="M120.4,153.7l-0.6,25l23.8-16.9c0,0-8-7-11.2-8.1C129.4,152.8,120.4,153.7,120.4,153.7z"/>
+			<polyline fill="none" stroke="#231F20" stroke-width="5" points="153.9,19.5 121.6,88.7 120.7,181.2 186.6,120.3 209.1,70.3 "/>
+		  </g>
+		</svg>
+	</g>
+	
+	<g id="svg_eof"/>
+</svg>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/extensions/helloworld-icon.xml	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,21 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!-- 
+	Sample icons file. This file looks like an SVG file with groups as its
+	children. Each group element has an ID that must match the ID of the button given
+	in the extension. The SVG inside the group makes up the actual icon, and
+	needs use a viewBox instead of width/height for it to scale	properly.
+	
+	Multiple icons can be included, each within their own group.
+-->
+	<g id="hello_world">
+		<svg width="102" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+		 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+		 <g>
+		  <title>Layer 1</title>
+		  <rect ry="30" rx="30" x="2.5" y="2.5" width="97" height="97" id="svg_3" fill="#008000" stroke="#000000" stroke-width="5"/>
+		  <text x="52.668" y="42.5" id="svg_1" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve">Hello</text>
+		  <text x="52.668" y="71.5" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve" id="svg_2">World!</text>
+		 </g>
+		</svg>
+	</g>
+</svg>
\ No newline at end of file
Binary file htdocs/svg-edit/editor/images/logo.png has changed
--- a/htdocs/svg-edit/editor/images/logo.svg	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/images/logo.svg	Fri Apr 23 22:38:00 2010 +0200
@@ -1,291 +1,32 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   viewBox="0 0 600 600"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   width="48"
-   height="48"
-   sodipodi:docname="logo.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0"
-   inkscape:export-filename="logo.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <sodipodi:namedview
-     inkscape:window-height="858"
-     inkscape:window-width="911"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     showgrid="false"
-     inkscape:zoom="11.352818"
-     inkscape:cx="27.728302"
-     inkscape:cy="25.018074"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:current-layer="a32" />
-  <defs
-     id="defs14280">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective71" />
-    <linearGradient
-       gradientUnits="userSpaceOnUse"
-       id="XMLID_16_"
-       x1="67.8452"
-       x2="144.5898"
-       y1="115.5361"
-       y2="115.5361">
-      <stop
-         id="stop780"
-         offset="0"
-         stop-color="#7D7D99" />
-      <stop
-         id="stop781"
-         offset="0.1798"
-         stop-color="#B1B1C5" />
-      <stop
-         id="stop782"
-         offset="0.3727"
-         stop-color="#BCBCC8" />
-      <stop
-         id="stop783"
-         offset="0.6825"
-         stop-color="#C8C8CB" />
-      <stop
-         id="stop784"
-         offset="1"
-         stop-color="#CCC" />
-    </linearGradient>
-    <linearGradient
-       gradientTransform="matrix(-0.999,4.35e-2,4.35e-2,0.999,-1277.01,-496.517)"
-       gradientUnits="userSpaceOnUse"
-       id="XMLID_15_"
-       x1="-1401.459"
-       x2="-1354.6851"
-       y1="595.63092"
-       y2="699.47632">
-      <stop
-         id="stop770"
-         offset="0"
-         stop-color="#FFA700" />
-      <stop
-         id="stop771"
-         offset="0.7753"
-         stop-color="#FFD700" />
-      <stop
-         id="stop772"
-         offset="1"
-         stop-color="#FF9200" />
-    </linearGradient>
-    <linearGradient
-       gradientTransform="matrix(-0.999,4.35e-2,4.35e-2,0.999,-1277.01,-496.517)"
-       gradientUnits="userSpaceOnUse"
-       id="XMLID_14_"
-       x1="-1336.4497"
-       x2="-1325.3219"
-       y1="635.79492"
-       y2="622.53333">
-      <stop
-         id="stop763"
-         offset="0"
-         stop-color="#FFC957" />
-      <stop
-         id="stop764"
-         offset="1"
-         stop-color="#FF6D00" />
-    </linearGradient>
-    <linearGradient
-       gradientUnits="userSpaceOnUse"
-       id="XMLID_13_"
-       x1="65.094704"
-       x2="137.6021"
-       y1="-0.79540002"
-       y2="160.1823">
-      <stop
-         id="stop750"
-         offset="0"
-         stop-color="#FFA700" />
-      <stop
-         id="stop751"
-         offset="0.7753"
-         stop-color="#FFD700" />
-      <stop
-         id="stop752"
-         offset="1"
-         stop-color="#FF794B" />
-    </linearGradient>
-    <linearGradient
-       gradientTransform="matrix(-0.999,4.35e-2,4.35e-2,0.999,-1277.01,-496.517)"
-       gradientUnits="userSpaceOnUse"
-       id="XMLID_12_"
-       x1="-1375.9844"
-       x2="-1355.0455"
-       y1="685.38092"
-       y2="706.32172">
-      <stop
-         id="stop743"
-         offset="0"
-         stop-color="#F8F1DC" />
-      <stop
-         id="stop744"
-         offset="1"
-         stop-color="#D6A84A" />
-    </linearGradient>
-    <linearGradient
-       gradientTransform="matrix(0.1991,0.98,-0.98,0.1991,91.6944,573.565)"
-       gradientUnits="userSpaceOnUse"
-       id="XMLID_11_"
-       x1="-481.70071"
-       x2="-360.24561"
-       y1="-94.419403"
-       y2="-164.22141">
-      <stop
-         id="stop736"
-         offset="0"
-         stop-color="#900" />
-      <stop
-         id="stop737"
-         offset="1"
-         stop-color="#7C0000" />
-    </linearGradient>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4418">
-      <rect
-         height="79.958374"
-         id="rect4420"
-         stroke-miterlimit="4"
-         style="fill:none;stroke:#000000;stroke-width:0.14421287;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="scale(-1,1)"
-         width="73.952118"
-         x="-196.68831"
-         y="126.58712" />
-    </clipPath>
-  </defs>
-  <metadata
-     id="metadata30">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <a
-     xlink:href="http://svg-edit.googlecode.com/"
-     xlink:title="SVG-edit, an in-browser vector graphics editor"
-     target="_blank"
-     id="a32">
-    <path
-       sodipodi:type="star"
-       style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path3216"
-       sodipodi:sides="8"
-       sodipodi:cx="239.79607"
-       sodipodi:cy="346.96844"
-       sodipodi:r1="194.03661"
-       sodipodi:r2="155.59306"
-       sodipodi:arg1="0.78539816"
-       sodipodi:arg2="1.1780972"
-       inkscape:flatsided="false"
-       inkscape:rounded="0"
-       inkscape:randomized="0"
-       d="M 377.00067,484.17304 L 299.33895,490.71769 L 239.79607,541.00505 L 180.25318,490.71769 L 102.59147,484.17305 L 96.04682,406.51133 L 45.75946,346.96845 L 96.046819,287.42556 L 102.59147,209.76385 L 180.25318,203.2192 L 239.79607,152.93184 L 299.33895,203.2192 L 377.00067,209.76384 L 383.54531,287.42556 L 433.83267,346.96844 L 383.54531,406.51133 L 377.00067,484.17304 z"
-       transform="translate(4.1586051,6.9957853)" />
-    <path
-       d="M 257.74,558.2 C 282.68,551.18 299.44,533.03 303.3,508.86 L 304.6,500.74 L 310.09,504.65 C 342.6,527.8 385.95,516.69 401.92,481.11 C 410.74,461.44 406.88,429.74 394.39,419.38 C 389.52,415.34 390.73,414.03 400.54,412.71 C 463.81,404.2 466.02,308.53 403.26,294.99 C 389.53,292.02 390.07,292.74 395.81,285.17 C 435.22,233.14 367.98,163.64 313.59,200.18 L 305.09,205.89 L 302.14,193.86 C 286.67,130.77 193.37,133.52 184.62,197.33 C 183.22,207.55 183.54,207.42 175.45,201.25 C 145.54,178.44 96.024,193.52 84.229,229.04 C 77.621,248.93 81.839,276.52 93.036,286.66 C 98.393,291.5 97.7,292.63 88.496,294.06 C 22.466,304.29 22.003,403.73 87.943,412.77 L 96.572,413.95 L 91.187,421.94 C 63.478,463.02 91.34,516.89 140.25,516.79 C 154.94,516.76 170.97,511.38 177.33,504.36 C 181.99,499.22 183.95,499.74 183.95,506.13 C 183.95,538.55 224.9,567.45 257.74,558.2 L 257.74,558.2 z M 224.97,526.08 C 211.13,516.23 207.03,494.21 216.63,481.24 C 220.49,476.01 220.78,473.32 220.78,442.14 L 220.78,408.66 L 196.55,432.83 C 177.87,451.47 172.32,458.16 172.32,462.07 C 172.32,481.92 139.36,496.53 122.68,484.07 C 99.738,466.94 105.5,432.15 132.4,425.3 C 138.8,423.67 144.87,418.74 163.57,399.95 L 186.8,376.62 L 154.85,376.63 C 124.63,376.64 122.38,376.9 113.36,381.47 C 76.809,400.02 46.091,351.65 78.652,326.81 C 88.187,319.54 106.02,319.02 115.45,325.74 C 121.2,329.85 123.45,330.1 154.18,330.1 L 186.8,330.1 L 163.79,307.04 C 147.4,290.61 139.05,283.62 134.78,282.77 C 106.14,277.04 98.685,240.4 122.56,222.71 C 139.4,210.23 172.44,224.79 172.28,244.63 C 172.25,248.57 177.44,254.67 196.02,272.54 L 219.81,295.41 L 220.34,263.32 C 220.84,233.01 220.64,230.91 216.67,225.55 C 202.3,206.11 216.23,177.52 241.09,175.46 C 267.18,173.29 284.31,199.14 272.29,222.54 C 267.54,231.79 267.31,233.68 267.3,264.18 L 267.29,296.13 L 290.36,273.12 C 306.39,257.14 313.79,248.33 314.59,244.3 C 320.55,214.53 361.13,208.27 375.2,234.95 C 385.62,254.7 375.71,276.27 353.68,281.82 C 346.89,283.53 341.33,288 322.38,307 L 299.33,330.1 L 332.92,330.1 C 363.2,330.1 367.04,329.73 371.86,326.3 C 384.69,317.16 402.12,319.56 413.39,332.03 C 438.43,359.76 402.17,402.01 371.86,380.43 C 367.04,377 363.2,376.62 332.92,376.62 L 299.33,376.62 L 322.38,399.72 C 341.33,418.73 346.89,423.2 353.68,424.91 C 390.29,434.13 386.87,485.55 349.44,488.65 C 332.45,490.06 313.81,474.97 313.81,459.8 C 313.81,458.26 303.34,446.56 290.55,433.8 L 267.29,410.6 L 267.3,442.55 C 267.31,472.77 267.57,475.02 272.15,484.03 C 287.66,514.61 252.66,545.8 224.97,526.08 L 224.97,526.08 z"
-       id="path34"
-       style="fill:#000000" />
-    <g
-       clip-path="url(#clipPath4418)"
-       transform="matrix(-4.6717475,0,0,4.6717475,1143.4575,-562.74962)"
-       id="g36">
-      <path
-         d="M 191.92,195.98 C 180.31,159.86 178.21,153.31 177.06,151.92 C 177.18,152 177.35,152.1 177.35,152.1 L 98.804,64.643 C 94.609,59.993 84.799,64.999 77.449,71.619 C 70.166,78.161 64.129,87.392 68.079,92.183 L 147.02,179.73 L 147.56,179.82 L 185.32,197.42 L 193.01,199.79 L 191.92,195.98 L 191.92,195.98 z"
-         id="path38"
-         style="opacity:0.2" />
-      <path
-         d="M 193.56,193.52 C 181.95,157.39 179.84,150.85 178.7,149.45 C 178.82,149.52 178.99,149.63 178.99,149.63 L 100.44,62.175 C 96.245,57.524 86.429,62.53 79.083,69.15 C 71.802,75.695 65.763,84.923 69.715,89.716 L 148.66,177.26 L 149.19,177.36 L 186.96,194.95 L 194.64,197.32 L 193.56,193.52 L 193.56,193.52 z"
-         id="path40"
-         style="opacity:0.2" />
-      <path
-         d="M 186.77,191.05 C 175.16,154.92 173.06,148.38 171.91,146.98 C 172.03,147.06 172.2,147.16 172.2,147.16 L 93.653,59.704 C 89.461,55.054 79.644,60.063 72.299,66.682 C 65.016,73.224 58.978,82.453 62.93,87.247 L 141.87,174.79 L 142.41,174.88 L 180.18,192.48 L 187.86,194.85 L 186.77,191.05 L 186.77,191.05 z"
-         id="path42"
-         style="opacity:0.2" />
-      <path
-         d="M 186.43,189.36 C 174.82,153.23 172.72,146.69 171.57,145.29 C 171.69,145.37 171.86,145.47 171.86,145.47 L 93.314,58.016 C 89.115,53.365 79.299,58.373 71.955,64.993 C 64.672,71.536 58.633,80.767 62.585,85.559 L 141.53,173.1 L 142.06,173.2 L 179.83,190.8 L 187.52,193.16 L 186.43,189.36 L 186.43,189.36 z"
-         id="path44"
-         style="fill:#ffffff" />
-      <path
-         d="M 186.43,189.36 C 174.82,153.23 172.72,146.69 171.57,145.29 C 171.69,145.37 171.86,145.47 171.86,145.47 L 93.314,58.016 C 89.115,53.365 79.299,58.373 71.955,64.993 C 64.672,71.536 58.633,80.767 62.585,85.559 L 141.53,173.1 L 142.06,173.2 L 179.83,190.8 L 187.52,193.16 L 186.43,189.36 L 186.43,189.36 z"
-         id="path46"
-         style="fill:url(#XMLID_11_)" />
-      <path
-         d="M 166.97,147.76 L 180.69,185.89 L 144.32,167.99 L 144.49,167.84 C 144.24,167.76 143.99,167.66 143.79,167.52 L 143.66,167.64 L 68.36,84.072 L 68.483,83.968 C 66.237,81.478 69.515,74.874 75.791,69.216 C 82.071,63.564 88.971,60.997 91.216,63.483 L 166.51,147.05 L 166.97,147.76 L 166.97,147.76 z"
-         id="path48"
-         style="fill:url(#XMLID_12_)" />
-      <path
-         d="M 148.65,170.12 C 150.73,169.75 153.29,168.64 155.9,166.98 C 157.52,165.96 159.18,164.7 160.8,163.24 C 162.26,161.94 163.54,160.57 164.64,159.23 C 166.72,156.7 167.96,154.02 168.42,151.8 L 166.97,147.76 L 166.5,147.05 L 91.707,64.028 C 92.315,66.268 90.745,69.966 87.644,73.768 C 86.51,75.157 85.203,76.557 83.699,77.909 C 82.125,79.328 80.504,80.561 78.932,81.563 C 74.439,84.434 70.304,85.491 68.384,84.049 L 68.359,84.07 L 143.66,167.64 L 143.79,167.52 C 143.99,167.66 144.24,167.76 144.49,167.84 L 144.32,167.99 L 148.65,170.12 L 148.65,170.12 z"
-         id="path50"
-         style="fill:url(#XMLID_13_)" />
-      <path
-         d="M 68.083,83.41 C 69.815,85.182 74.077,84.186 78.726,81.216 C 80.267,80.234 81.858,79.023 83.403,77.63 C 84.879,76.305 86.162,74.929 87.275,73.567 C 90.853,69.179 92.366,64.925 90.752,62.983 L 90.775,62.959 L 166.59,147.08 C 167.23,149.34 166,153.58 162.84,157.44 C 161.76,158.75 160.5,160.09 159.07,161.37 C 157.48,162.8 155.85,164.04 154.26,165.04 C 149.52,168.05 144.96,169.24 143.24,167.35 C 142.85,166.91 141.15,165.01 141.1,164.94 L 67.845,83.626 L 68.083,83.41 L 68.083,83.41 z"
-         id="path52"
-         style="fill:#ffffff" />
-      <path
-         d="M 75.79,69.215 C 82.07,63.563 88.97,60.996 91.215,63.482 L 108.18,82.31 L 109.33,108.8 L 91.355,109.58 L 68.359,84.071 L 68.482,83.967 C 66.236,81.477 69.514,74.874 75.79,69.215 L 75.79,69.215 z"
-         id="path54"
-         style="fill:#ffffff" />
-      <path
-         d="M 68.083,83.41 C 69.815,85.182 74.077,84.186 78.726,81.216 C 80.267,80.234 81.858,79.023 83.403,77.63 C 84.879,76.305 86.162,74.929 87.275,73.567 C 90.853,69.179 92.366,64.925 90.752,62.983 L 90.775,62.959 L 166.59,147.08 C 167.23,149.34 166,153.58 162.84,157.44 C 161.76,158.75 160.5,160.09 159.07,161.37 C 157.48,162.8 155.85,164.04 154.26,165.04 C 149.52,168.05 144.96,169.24 143.24,167.35 C 142.85,166.91 141.15,165.01 141.1,164.94 L 67.845,83.626 L 68.083,83.41 L 68.083,83.41 z"
-         id="path56"
-         style="fill:#ffffff" />
-      <path
-         d="M 75.79,69.215 C 82.07,63.563 88.97,60.996 91.215,63.482 L 108.18,82.31 L 109.33,108.8 L 91.355,109.58 L 68.359,84.071 L 68.482,83.967 C 66.236,81.477 69.514,74.874 75.79,69.215 L 75.79,69.215 z"
-         id="path58"
-         style="fill:url(#XMLID_14_)" />
-      <path
-         d="M 68.083,83.41 C 69.815,85.182 74.077,84.186 78.726,81.216 C 80.267,80.234 81.858,79.023 83.403,77.63 C 84.879,76.305 86.162,74.929 87.275,73.567 C 90.853,69.179 92.366,64.925 90.752,62.983 L 90.775,62.959 L 166.59,147.08 C 167.23,149.34 166,153.58 162.84,157.44 C 161.76,158.75 160.5,160.09 159.07,161.37 C 157.48,162.8 155.85,164.04 154.26,165.04 C 149.52,168.05 144.96,169.24 143.24,167.35 C 142.85,166.91 141.15,165.01 141.1,164.94 L 67.845,83.626 L 68.083,83.41 L 68.083,83.41 z"
-         id="path60"
-         style="fill:url(#XMLID_15_)" />
-      <path
-         d="M 74.357,90.713 C 74.357,90.713 80.393,90.501 85.042,87.531 C 86.584,86.548 88.174,85.338 89.719,83.945 C 91.196,82.619 92.479,81.244 93.592,79.881 C 96.52,76.292 98.061,72.793 97.641,70.574 L 90.776,62.957 L 90.753,62.981 C 92.367,64.923 90.855,69.177 87.276,73.565 C 86.163,74.927 84.88,76.303 83.404,77.628 C 81.859,79.021 80.268,80.232 78.727,81.214 C 74.079,84.185 69.817,85.181 68.084,83.408 L 67.846,83.625 L 141.1,164.94 C 141.15,165.01 142.85,166.9 143.25,167.34 C 143.59,167.72 144.05,167.97 144.59,168.11 L 74.357,90.713 L 74.357,90.713 z"
-         id="path62"
-         style="fill:url(#XMLID_16_)" />
-      <path
-         d="M 172.04,175.35 C 170.4,176.83 168.73,178.12 167.09,179.19 L 180.69,185.89 L 175.6,171.74 C 174.54,172.95 173.35,174.18 172.04,175.35 z"
-         id="path64"
-         style="fill:#003333" />
-      <path
-         d="M 163.12,157.05 L 86.968,73.93 C 87.068,73.81 87.181,73.688 87.275,73.566 C 88.703,71.814 89.795,70.076 90.5,68.508 L 166.27,151.22 C 165.72,153.04 164.67,155.08 163.12,157.05 L 163.12,157.05 z"
-         id="path66"
-         style="opacity:0.5;fill:#ffffff" />
-      <path
-         d="M 87.275,73.566 C 87.909,72.792 88.464,72.018 88.969,71.266 L 164.98,154.24 C 164.41,155.3 163.7,156.39 162.84,157.43 C 162.09,158.33 161.27,159.24 160.37,160.13 L 84.152,76.932 C 85.316,75.824 86.361,74.692 87.275,73.566 L 87.275,73.566 z"
-         id="path68"
-         style="opacity:0.5;fill:#ffffff" />
-    </g>
-  </a>
+<svg viewBox="0 0 478 472" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+  <linearGradient id="svg_5" x1="0" y1="0" x2="1" y2="1">
+   <stop offset="0" stop-color="#ffffe0" stop-opacity="1"/>
+   <stop offset="1" stop-color="#edc39c" stop-opacity="1"/>
+  </linearGradient>
+  <linearGradient id="svg_10" x1="0.57031" y1="0.78125" x2="0.28906" y2="0.41406">
+   <stop offset="0" stop-color="#ff7f00" stop-opacity="1"/>
+   <stop offset="1" stop-color="#ffff00"/>
+  </linearGradient>
+  <linearGradient id="svg_18" x1="0.37891" y1="0.35938" x2="1" y2="1">
+   <stop offset="0" stop-color="#e0e0e0" stop-opacity="1"/>
+   <stop offset="1" stop-color="#666666" stop-opacity="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <title>Layer 1</title>
+  <path d="m68.82031,270.04688l-22,-33l17,-35l34,2l25,15l7,-35l28,-16l25,12l100,102l21,23l-15,35l-36,9l20,49l-31,24l-49,-17l-1,31l-33,21l-31,-19l-13,-35l-30,21l-30,-9l-5,-35l16,-31l-32,-6l-15,-19l3,-36l47,-18z" id="svg_19" fill="#ffffff"/>
+  <path fill="#1a171a" fill-rule="nonzero" id="path2902" d="m158.96452,155.03685c-25.02071,0 -45.37077,20.35121 -45.37077,45.3775c0,0.72217 0.01794,1.4399 0.0471,2.15645c-0.49339,-0.53604 -0.99355,-1.06085 -1.50603,-1.58452c-8.56077,-8.55519 -19.95982,-13.28413 -32.07432,-13.28413c-12.12122,0 -23.52027,4.72334 -32.08778,13.29646c-17.69347,17.69464 -17.69347,46.4619 0,64.17445c0.51809,0.51697 1.0485,1.0126 1.59015,1.50601c-0.72891,-0.03586 -1.45782,-0.04822 -2.19234,-0.04822c-25.02071,0 -45.37189,20.35117 -45.37189,45.37747c0,25.01398 20.35119,45.36517 45.37189,45.36517c0.72891,0 1.45221,-0.01236 2.1744,-0.04828c-0.5293,0.48221 -1.05412,0.98801 -1.56547,1.49368c-17.70021,17.68906 -17.70021,46.48654 -0.00628,64.18677c8.57872,8.56747 19.96655,13.2785 32.08778,13.2785c12.1145,0 23.5012,-4.71103 32.07433,-13.2785c0.51247,-0.51694 1.01823,-1.04849 1.50603,-1.57895c-0.02915,0.71213 -0.04709,1.44669 -0.04709,2.15759c0,25.01511 20.35007,45.37747 45.37077,45.37747c25.01398,0 45.37079,-20.3624 45.37079,-45.37747c0,-0.7222 -0.01689,-1.44553 -0.05266,-2.18112c0.48105,0.52933 0.97562,1.04849 1.48697,1.56662c8.57982,8.57977 19.97775,13.2908 32.1057,13.2908c12.11003,0 23.51358,-4.71103 32.0687,-13.2785c17.68906,-17.70013 17.68906,-46.48538 0,-64.17441c-0.50577,-0.4946 -1.01141,-1.00034 -1.54306,-1.48248c0.69983,0.03592 1.42316,0.04828 2.16992,0.04828c25.01514,0 45.35284,-20.35123 45.35284,-45.36517c0,-25.02631 -20.33774,-45.37747 -45.35284,-45.37747c-0.74683,0 -1.47009,0.01236 -2.19345,0.04822c0.53152,-0.49341 1.06082,-0.98904 1.59128,-1.50601c8.55521,-8.55521 13.2785,-19.94186 13.2785,-32.07545c0,-12.12793 -4.72336,-23.52028 -13.30319,-32.0934c-8.55515,-8.56076 -19.95866,-13.2841 -32.0687,-13.2841c-12.12122,0 -23.52025,4.72334 -32.08777,13.2841c-0.51137,0.5181 -1.01822,1.04851 -1.5049,1.57895c0.03586,-0.72331 0.05266,-1.43991 0.05266,-2.16881c0,-25.02629 -20.35681,-45.3775 -45.37079,-45.3775m0,20.71901c13.61607,0 24.65851,11.03122 24.65851,24.65849c0,6.62749 -2.651,12.62137 -6.9101,17.04979l0,51.67419l36.53975,-36.53523c0.12001,-6.14418 2.48277,-12.24686 7.18146,-16.94667c4.81305,-4.81305 11.12094,-7.22409 17.44116,-7.22409c6.30228,0 12.61577,2.41104 17.43552,7.22409c9.62166,9.63287 9.62166,25.24948 0,34.87669c-4.69977,4.68634 -10.80803,7.04915 -16.95334,7.18147l-36.5341,36.53305l51.66742,0c4.42841,-4.25351 10.42905,-6.90451 17.08008,-6.90451c13.59137,0 24.62933,11.03799 24.62933,24.66525c0,13.61606 -11.03796,24.66519 -24.62933,24.66519c-6.65106,0 -12.65167,-2.66333 -17.08008,-6.91681l-51.64836,0l36.50273,36.50946c6.16995,0.14465 12.26587,2.50522 16.96568,7.20618c9.6216,9.61487 9.6216,25.23151 0,34.85757c-4.80856,4.81979 -11.13327,7.22974 -17.43556,7.22974c-6.32019,0 -12.63371,-2.40991 -17.44786,-7.22974c-4.68074,-4.68744 -7.04802,-10.79572 -7.17473,-16.94098l-36.53975,-36.53415l0,51.66742c4.25908,4.44635 6.9101,10.43466 6.9101,17.0621c0,13.62729 -11.04243,24.66415 -24.65851,24.66415c-13.62166,0 -24.65848,-11.0369 -24.65848,-24.66415c0,-6.62744 2.64539,-12.61575 6.90335,-17.0621l0,-51.66742l-36.53864,36.54648c-0.12672,6.14413 -2.48838,12.26477 -7.18147,16.94098c-4.81416,4.81873 -11.12206,7.22974 -17.42882,7.22974c-6.31461,0 -12.6225,-2.41101 -17.43555,-7.22974c-9.63284,-9.62833 -9.63284,-25.24277 0,-34.8699c4.68073,-4.67627 10.79012,-7.05026 16.94101,-7.18262l36.533,-36.53302l-51.66632,0c-4.44075,4.25348 -10.42902,6.91681 -17.06211,6.91681c-13.61606,0 -24.65288,-11.04913 -24.65288,-24.66519c0,-13.62726 11.03682,-24.66525 24.65288,-24.66525c6.63309,0 12.62136,2.651 17.06211,6.90451l51.68537,0l-36.55208,-36.54538c-6.14527,-0.12 -12.25354,-2.49403 -16.94775,-7.19377c-9.62611,-9.61493 -9.62611,-25.23715 0,-34.86441c4.81419,-4.81305 11.12769,-7.22406 17.44228,-7.22406c6.30676,0 12.61465,2.41101 17.42883,7.22406c4.69978,4.69307 7.06034,10.80246 7.18144,16.94777l36.5386,36.53299l0,-51.66074c-4.25795,-4.42841 -6.90334,-10.42229 -6.90334,-17.04979c0,-13.62726 11.03682,-24.65848 24.65848,-24.65848"/>
+  <path d="m188.82031,210.04688l16,-47l155,-148l107,100l-158,156.99999l-44,12l-76,-74z" id="svg_6" fill="url(#svg_10)" stroke="#ffffff" stroke-width="0"/>
+  <path d="m335.57031,40.29688c-11.5,39.75 55.5,115.25 109.25,98.75l21,-20.99999l-103,-101l-27.25,23.25z" id="svg_11" fill="url(#svg_18)" stroke="#ffffff" stroke-width="0"/>
+  <rect x="272.80404" y="20.76382" width="42.35197" height="232.66835" id="svg_13" fill="#ffffff" stroke="#ffffff" stroke-width="0" transform="rotate(45.9094, 293.98, 137.1)" opacity="0.4"/>
+  <rect x="282.80404" y="22.76382" width="14" height="232.66835" fill="#ffffff" stroke="#ffffff" stroke-width="0" transform="rotate(45.9094, 289.805, 139.1)" opacity="0.4" id="svg_14"/>
+  <ellipse cx="415.13312" cy="64.38066" id="svg_12" fill="#ea7598" stroke="#ffffff" stroke-width="0" rx="67.79251" ry="34.82026" transform="rotate(39.4735, 415.133, 64.379)"/>
+  <path d="m212.07031,166.04688c-8.5,47 36.25,103.75 99.25,96.75l-152.5,53.25l53.25,-150z" id="svg_4" fill="url(#svg_5)" stroke="#ffffff" stroke-width="0"/>
+  <path d="m181.32031,242.54688c0.5,20.5 26.75,45 46.75,48.5l-66.25,20l19.5,-68.5z" id="svg_3" fill="#27382f" stroke="#ffffff" stroke-width="0"/>
+ </g>
+ <g>
+  <title>Layer 2</title>
+  <path d="m152.82031,317.04688l51,-152l157,-153c40,-12.00001 118,48 105,105l-157,152.99999l-156,47z" id="svg_1" fill="none" stroke="#800000" stroke-width="17"/>
+ </g>
 </svg>
--- a/htdocs/svg-edit/editor/images/svg_edit_icons.svg	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/images/svg_edit_icons.svg	Fri Apr 23 22:38:00 2010 +0200
@@ -1,106 +1,39 @@
 <svg xmlns="http://www.w3.org/2000/svg">
-<!-- All images except logo created with SVG-edit - http://svg-edit.googlecode.com/ -->
+<!-- All images created with SVG-edit - http://svg-edit.googlecode.com/ -->
 
 <g id="logo">
-	<svg version="1.0"
-		 id="svg2" inkscape:output_extension="org.inkscape.output.svg.inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:cc="http://creativecommons.org/ns#" inkscape:export-ydpi="90" inkscape:export-xdpi="90" xmlns:svg="http://www.w3.org/2000/svg"
-		 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-		 viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve">
-	<a id="a32" xlink:href="http://svg-edit.googlecode.com/"  xlink:title="SVG-edit, an in-browser vector graphics editor">
-		
-			<path id="path3216" inkscape:randomized="0" inkscape:rounded="0" inkscape:flatsided="false" sodipodi:arg2="1.1780972" sodipodi:arg1="0.78539816" sodipodi:r2="155.59306" sodipodi:r1="194.03661" sodipodi:cy="346.96844" sodipodi:cx="239.79607" sodipodi:sides="8" sodipodi:type="star" fill="#FFFFFF" d="
-			M30.5,39.3l-6.2,0.5l-4.8,4l-4.8-4l-6.2-0.5L8,33.1l-4-4.8l4-4.8l0.5-6.2l6.2-0.5l4.8-4l4.8,4l6.2,0.5l0.5,6.2l4,4.8l-4,4.8
-			L30.5,39.3z"/>
-		<path id="path34" d="M20.6,44.7c2-0.6,3.3-2,3.6-3.9l0.1-0.7l0.4,0.3c2.6,1.9,6.1,1,7.3-1.9c0.7-1.6,0.4-4.1-0.6-4.9
-			c-0.4-0.3-0.3-0.4,0.5-0.5c5.1-0.7,5.2-8.3,0.2-9.4c-1.1-0.2-1.1-0.2-0.6-0.8c3.2-4.2-2.2-9.7-6.6-6.8l-0.7,0.5l-0.2-1
-			c-1.2-5-8.7-4.8-9.4,0.3c-0.1,0.8-0.1,0.8-0.7,0.3c-2.4-1.8-6.4-0.6-7.3,2.2c-0.5,1.6-0.2,3.8,0.7,4.6c0.4,0.4,0.4,0.5-0.4,0.6
-			c-5.3,0.8-5.3,8.8,0,9.5l0.7,0.1l-0.4,0.6c-2.2,3.3,0,7.6,3.9,7.6c1.2,0,2.5-0.4,3-1c0.4-0.4,0.5-0.4,0.5,0.1
-			C14.7,43.1,18,45.4,20.6,44.7L20.6,44.7z M18,42.1c-1.1-0.8-1.4-2.5-0.7-3.6c0.3-0.4,0.3-0.6,0.3-3.1v-2.7l-1.9,1.9
-			c-1.5,1.5-1.9,2-1.9,2.3c0,1.6-2.6,2.8-4,1.8C8,37.4,8.4,34.6,10.6,34c0.5-0.1,1-0.5,2.5-2l1.9-1.9l-2.6,0c-2.4,0-2.6,0-3.3,0.4
-			c-2.9,1.5-5.4-2.4-2.8-4.4c0.8-0.6,2.2-0.6,2.9-0.1c0.5,0.3,0.6,0.3,3.1,0.3h2.6l-1.8-1.8c-1.3-1.3-2-1.9-2.3-1.9
-			c-2.3-0.5-2.9-3.4-1-4.8c1.3-1,4,0.2,4,1.8c0,0.3,0.4,0.8,1.9,2.2l1.9,1.8l0-2.6c0-2.4,0-2.6-0.3-3c-1.1-1.6,0-3.8,2-4
-			c2.1-0.2,3.5,1.9,2.5,3.8c-0.4,0.7-0.4,0.9-0.4,3.3l0,2.6l1.8-1.8c1.3-1.3,1.9-2,1.9-2.3c0.5-2.4,3.7-2.9,4.8-0.7
-			c0.8,1.6,0,3.3-1.7,3.7c-0.5,0.1-1,0.5-2.5,2l-1.8,1.8h2.7c2.4,0,2.7,0,3.1-0.3c1-0.7,2.4-0.5,3.3,0.5c2,2.2-0.9,5.6-3.3,3.9
-			c-0.4-0.3-0.7-0.3-3.1-0.3h-2.7l1.8,1.8c1.5,1.5,2,1.9,2.5,2c2.9,0.7,2.7,4.9-0.3,5.1c-1.4,0.1-2.8-1.1-2.8-2.3
-			c0-0.1-0.8-1.1-1.9-2.1l-1.9-1.9l0,2.6c0,2.4,0,2.6,0.4,3.3C23,41.2,20.2,43.7,18,42.1L18,42.1z"/>
-		<g>
-			<g id="g36" transform="matrix(-4.6717475,0,0,4.6717475,1143.4575,-562.74962)">
-				<path id="path38" opacity="0.2" enable-background="new    " d="M240.5,126.5c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7
-					c-0.3-0.4-1.1,0-1.7,0.6c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.5,126.5L240.5,126.5z"/>
-				<path id="path40" opacity="0.2" enable-background="new    " d="M240.7,126.3c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7
-					c-0.3-0.4-1.1,0-1.7,0.6c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.7,126.3L240.7,126.3z"/>
-				<path id="path42" opacity="0.2" enable-background="new    " d="M240.1,126.1c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7
-					c-0.3-0.4-1.1,0-1.7,0.6c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.1,126.1L240.1,126.1z"/>
-				<path id="path44" fill="#FFFFFF" d="M240.1,126c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7c-0.3-0.4-1.1,0-1.7,0.6
-					c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.1,126L240.1,126z"/>
-				
-					<linearGradient id="path46_1_" gradientUnits="userSpaceOnUse" x1="251.6057" y1="30.2918" x2="373.0601" y2="100.0934" gradientTransform="matrix(-7.441159e-02 -0.3663 0.3663 -7.441159e-02 239.8726 211.8456)">
-					<stop  offset="0" style="stop-color:#990000"/>
-					<stop  offset="1" style="stop-color:#7C0000"/>
-				</linearGradient>
-				<path id="path46" fill="url(#path46_1_)" d="M240.1,126c-0.9-2.9-1.1-3.4-1.2-3.5c0,0,0,0,0,0l-6.3-7c-0.3-0.4-1.1,0-1.7,0.6
-					c-0.6,0.5-1.1,1.3-0.7,1.6l6.3,7l0,0l3,1.4l0.6,0.2L240.1,126L240.1,126z"/>
-				
-					<linearGradient id="path48_1_" gradientUnits="userSpaceOnUse" x1="448.9506" y1="-141.7113" x2="469.8885" y2="-162.6511" gradientTransform="matrix(0.3734 -1.625768e-02 -1.625768e-02 -0.3734 65.4455 75.4761)">
-					<stop  offset="0" style="stop-color:#F8F1DC"/>
-					<stop  offset="1" style="stop-color:#D6A84A"/>
-				</linearGradient>
-				<path id="path48" fill="url(#path48_1_)" d="M238.5,122.6l1.1,3.1l-2.9-1.4l0,0c0,0,0,0-0.1,0l0,0l-6-6.7l0,0
-					c-0.2-0.2,0.1-0.7,0.6-1.2c0.5-0.5,1.1-0.7,1.2-0.5L238.5,122.6L238.5,122.6L238.5,122.6z"/>
-				
-					<linearGradient id="path50_1_" gradientUnits="userSpaceOnUse" x1="473.214" y1="-2.063" x2="545.7217" y2="-163.0414" gradientTransform="matrix(-0.3737 0 0 -0.3737 407.2458 109.9867)">
-					<stop  offset="0" style="stop-color:#FFA700"/>
-					<stop  offset="0.7753" style="stop-color:#FFD700"/>
-					<stop  offset="1" style="stop-color:#FF794B"/>
-				</linearGradient>
-				<path id="path50" fill="url(#path50_1_)" d="M237.1,124.4c0.2,0,0.4-0.1,0.6-0.3c0.1-0.1,0.3-0.2,0.4-0.3
-					c0.1-0.1,0.2-0.2,0.3-0.3c0.2-0.2,0.3-0.4,0.3-0.6l-0.1-0.3l0-0.1l-6-6.6c0,0.2-0.1,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3
-					c-0.1,0.1-0.3,0.2-0.4,0.3c-0.4,0.2-0.7,0.3-0.8,0.2l0,0l6,6.7l0,0c0,0,0,0,0.1,0l0,0L237.1,124.4L237.1,124.4z"/>
-				<path id="path52" fill="#FFFFFF" d="M230.6,117.5c0.1,0.1,0.5,0.1,0.9-0.2c0.1-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.2,0.3-0.3
-					c0.3-0.4,0.4-0.7,0.3-0.8l0,0l6.1,6.7c0.1,0.2,0,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.3
-					c-0.4,0.2-0.7,0.3-0.9,0.2c0,0-0.2-0.2-0.2-0.2L230.6,117.5L230.6,117.5L230.6,117.5z"/>
-				<path id="path54" fill="#FFFFFF" d="M231.2,116.4c0.5-0.5,1.1-0.7,1.2-0.5l1.4,1.5l0.1,2.1l-1.4,0.1l-1.8-2l0,0
-					C230.5,117.3,230.7,116.8,231.2,116.4L231.2,116.4z"/>
-				<path id="path56" fill="#FFFFFF" d="M230.6,117.5c0.1,0.1,0.5,0.1,0.9-0.2c0.1-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.2,0.3-0.3
-					c0.3-0.4,0.4-0.7,0.3-0.8l0,0l6.1,6.7c0.1,0.2,0,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.3
-					c-0.4,0.2-0.7,0.3-0.9,0.2c0,0-0.2-0.2-0.2-0.2L230.6,117.5L230.6,117.5L230.6,117.5z"/>
-				
-					<linearGradient id="path58_1_" gradientUnits="userSpaceOnUse" x1="440.489" y1="-131.0965" x2="451.6169" y2="-117.8349" gradientTransform="matrix(0.3734 -1.625768e-02 -1.625768e-02 -0.3734 65.4455 75.4761)">
-					<stop  offset="0" style="stop-color:#FFC957"/>
-					<stop  offset="1" style="stop-color:#FF6D00"/>
-				</linearGradient>
-				<path id="path58" fill="url(#path58_1_)" d="M231.2,116.4c0.5-0.5,1.1-0.7,1.2-0.5l1.4,1.5l0.1,2.1l-1.4,0.1l-1.8-2l0,0
-					C230.5,117.3,230.7,116.8,231.2,116.4L231.2,116.4z"/>
-				
-					<linearGradient id="path60_1_" gradientUnits="userSpaceOnUse" x1="454.4041" y1="-122.501" x2="501.1769" y2="-226.3438" gradientTransform="matrix(0.3734 -1.625768e-02 -1.625768e-02 -0.3734 65.4455 75.4761)">
-					<stop  offset="0" style="stop-color:#FFA700"/>
-					<stop  offset="0.7753" style="stop-color:#FFD700"/>
-					<stop  offset="1" style="stop-color:#FF9200"/>
-				</linearGradient>
-				<path id="path60" fill="url(#path60_1_)" d="M230.6,117.5c0.1,0.1,0.5,0.1,0.9-0.2c0.1-0.1,0.3-0.2,0.4-0.3
-					c0.1-0.1,0.2-0.2,0.3-0.3c0.3-0.4,0.4-0.7,0.3-0.8l0,0l6.1,6.7c0.1,0.2,0,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3
-					c-0.1,0.1-0.3,0.2-0.4,0.3c-0.4,0.2-0.7,0.3-0.9,0.2c0,0-0.2-0.2-0.2-0.2L230.6,117.5L230.6,117.5L230.6,117.5z"/>
-				
-					<linearGradient id="path62_1_" gradientUnits="userSpaceOnUse" x1="472.6249" y1="-26.9638" x2="549.3671" y2="-26.9638" gradientTransform="matrix(-0.3737 0 0 -0.3737 407.2458 109.9867)">
-					<stop  offset="0" style="stop-color:#7D7D99"/>
-					<stop  offset="0.1798" style="stop-color:#B1B1C5"/>
-					<stop  offset="0.3727" style="stop-color:#BCBCC8"/>
-					<stop  offset="0.6825" style="stop-color:#C8C8CB"/>
-					<stop  offset="1" style="stop-color:#CCCCCC"/>
-				</linearGradient>
-				<path id="path62" fill="url(#path62_1_)" d="M231.1,118.1c0,0,0.5,0,0.9-0.3c0.1-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.2,0.3-0.3
-					c0.2-0.3,0.4-0.6,0.3-0.7l-0.5-0.6l0,0c0.1,0.2,0,0.5-0.3,0.8c-0.1,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.4,0.3
-					c-0.4,0.2-0.7,0.3-0.9,0.2l0,0l5.9,6.5c0,0,0.1,0.2,0.2,0.2c0,0,0.1,0.1,0.1,0.1L231.1,118.1L231.1,118.1z"/>
-				<path id="path64" fill="#003333" d="M238.9,124.8c-0.1,0.1-0.3,0.2-0.4,0.3l1.1,0.5l-0.4-1.1C239.1,124.7,239,124.8,238.9,124.8z
-					"/>
-				<path id="path66" opacity="0.5" fill="#FFFFFF" enable-background="new    " d="M238.2,123.4l-6.1-6.6c0,0,0,0,0,0
-					c0.1-0.1,0.2-0.3,0.3-0.4l6.1,6.6C238.4,123.1,238.4,123.2,238.2,123.4L238.2,123.4z"/>
-				<path id="path68" opacity="0.5" fill="#FFFFFF" enable-background="new    " d="M232.2,116.7c0.1-0.1,0.1-0.1,0.1-0.2l6.1,6.6
-					c0,0.1-0.1,0.2-0.2,0.3c-0.1,0.1-0.1,0.1-0.2,0.2l-6.1-6.7C232,116.9,232.1,116.8,232.2,116.7L232.2,116.7z"/>
-			</g>
-		</g>
-	</a>
-	</svg>
+<svg viewBox="0 0 478 472" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+  <linearGradient id="svg_5" x1="0" y1="0" x2="1" y2="1">
+   <stop offset="0" stop-color="#ffffe0" stop-opacity="1"/>
+   <stop offset="1" stop-color="#edc39c" stop-opacity="1"/>
+  </linearGradient>
+  <linearGradient id="svg_10" x1="0.57031" y1="0.78125" x2="0.28906" y2="0.41406">
+   <stop offset="0" stop-color="#ff7f00" stop-opacity="1"/>
+   <stop offset="1" stop-color="#ffff00"/>
+  </linearGradient>
+  <linearGradient id="svg_18" x1="0.37891" y1="0.35938" x2="1" y2="1">
+   <stop offset="0" stop-color="#e0e0e0" stop-opacity="1"/>
+   <stop offset="1" stop-color="#666666" stop-opacity="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <title>Layer 1</title>
+  <path d="m68.82031,270.04688l-22,-33l17,-35l34,2l25,15l7,-35l28,-16l25,12l100,102l21,23l-15,35l-36,9l20,49l-31,24l-49,-17l-1,31l-33,21l-31,-19l-13,-35l-30,21l-30,-9l-5,-35l16,-31l-32,-6l-15,-19l3,-36l47,-18z" id="svg_19" fill="#ffffff"/>
+  <path fill="#1a171a" fill-rule="nonzero" id="path2902" d="m158.96452,155.03685c-25.02071,0 -45.37077,20.35121 -45.37077,45.3775c0,0.72217 0.01794,1.4399 0.0471,2.15645c-0.49339,-0.53604 -0.99355,-1.06085 -1.50603,-1.58452c-8.56077,-8.55519 -19.95982,-13.28413 -32.07432,-13.28413c-12.12122,0 -23.52027,4.72334 -32.08778,13.29646c-17.69347,17.69464 -17.69347,46.4619 0,64.17445c0.51809,0.51697 1.0485,1.0126 1.59015,1.50601c-0.72891,-0.03586 -1.45782,-0.04822 -2.19234,-0.04822c-25.02071,0 -45.37189,20.35117 -45.37189,45.37747c0,25.01398 20.35119,45.36517 45.37189,45.36517c0.72891,0 1.45221,-0.01236 2.1744,-0.04828c-0.5293,0.48221 -1.05412,0.98801 -1.56547,1.49368c-17.70021,17.68906 -17.70021,46.48654 -0.00628,64.18677c8.57872,8.56747 19.96655,13.2785 32.08778,13.2785c12.1145,0 23.5012,-4.71103 32.07433,-13.2785c0.51247,-0.51694 1.01823,-1.04849 1.50603,-1.57895c-0.02915,0.71213 -0.04709,1.44669 -0.04709,2.15759c0,25.01511 20.35007,45.37747 45.37077,45.37747c25.01398,0 45.37079,-20.3624 45.37079,-45.37747c0,-0.7222 -0.01689,-1.44553 -0.05266,-2.18112c0.48105,0.52933 0.97562,1.04849 1.48697,1.56662c8.57982,8.57977 19.97775,13.2908 32.1057,13.2908c12.11003,0 23.51358,-4.71103 32.0687,-13.2785c17.68906,-17.70013 17.68906,-46.48538 0,-64.17441c-0.50577,-0.4946 -1.01141,-1.00034 -1.54306,-1.48248c0.69983,0.03592 1.42316,0.04828 2.16992,0.04828c25.01514,0 45.35284,-20.35123 45.35284,-45.36517c0,-25.02631 -20.33774,-45.37747 -45.35284,-45.37747c-0.74683,0 -1.47009,0.01236 -2.19345,0.04822c0.53152,-0.49341 1.06082,-0.98904 1.59128,-1.50601c8.55521,-8.55521 13.2785,-19.94186 13.2785,-32.07545c0,-12.12793 -4.72336,-23.52028 -13.30319,-32.0934c-8.55515,-8.56076 -19.95866,-13.2841 -32.0687,-13.2841c-12.12122,0 -23.52025,4.72334 -32.08777,13.2841c-0.51137,0.5181 -1.01822,1.04851 -1.5049,1.57895c0.03586,-0.72331 0.05266,-1.43991 0.05266,-2.16881c0,-25.02629 -20.35681,-45.3775 -45.37079,-45.3775m0,20.71901c13.61607,0 24.65851,11.03122 24.65851,24.65849c0,6.62749 -2.651,12.62137 -6.9101,17.04979l0,51.67419l36.53975,-36.53523c0.12001,-6.14418 2.48277,-12.24686 7.18146,-16.94667c4.81305,-4.81305 11.12094,-7.22409 17.44116,-7.22409c6.30228,0 12.61577,2.41104 17.43552,7.22409c9.62166,9.63287 9.62166,25.24948 0,34.87669c-4.69977,4.68634 -10.80803,7.04915 -16.95334,7.18147l-36.5341,36.53305l51.66742,0c4.42841,-4.25351 10.42905,-6.90451 17.08008,-6.90451c13.59137,0 24.62933,11.03799 24.62933,24.66525c0,13.61606 -11.03796,24.66519 -24.62933,24.66519c-6.65106,0 -12.65167,-2.66333 -17.08008,-6.91681l-51.64836,0l36.50273,36.50946c6.16995,0.14465 12.26587,2.50522 16.96568,7.20618c9.6216,9.61487 9.6216,25.23151 0,34.85757c-4.80856,4.81979 -11.13327,7.22974 -17.43556,7.22974c-6.32019,0 -12.63371,-2.40991 -17.44786,-7.22974c-4.68074,-4.68744 -7.04802,-10.79572 -7.17473,-16.94098l-36.53975,-36.53415l0,51.66742c4.25908,4.44635 6.9101,10.43466 6.9101,17.0621c0,13.62729 -11.04243,24.66415 -24.65851,24.66415c-13.62166,0 -24.65848,-11.0369 -24.65848,-24.66415c0,-6.62744 2.64539,-12.61575 6.90335,-17.0621l0,-51.66742l-36.53864,36.54648c-0.12672,6.14413 -2.48838,12.26477 -7.18147,16.94098c-4.81416,4.81873 -11.12206,7.22974 -17.42882,7.22974c-6.31461,0 -12.6225,-2.41101 -17.43555,-7.22974c-9.63284,-9.62833 -9.63284,-25.24277 0,-34.8699c4.68073,-4.67627 10.79012,-7.05026 16.94101,-7.18262l36.533,-36.53302l-51.66632,0c-4.44075,4.25348 -10.42902,6.91681 -17.06211,6.91681c-13.61606,0 -24.65288,-11.04913 -24.65288,-24.66519c0,-13.62726 11.03682,-24.66525 24.65288,-24.66525c6.63309,0 12.62136,2.651 17.06211,6.90451l51.68537,0l-36.55208,-36.54538c-6.14527,-0.12 -12.25354,-2.49403 -16.94775,-7.19377c-9.62611,-9.61493 -9.62611,-25.23715 0,-34.86441c4.81419,-4.81305 11.12769,-7.22406 17.44228,-7.22406c6.30676,0 12.61465,2.41101 17.42883,7.22406c4.69978,4.69307 7.06034,10.80246 7.18144,16.94777l36.5386,36.53299l0,-51.66074c-4.25795,-4.42841 -6.90334,-10.42229 -6.90334,-17.04979c0,-13.62726 11.03682,-24.65848 24.65848,-24.65848"/>
+  <path d="m188.82031,210.04688l16,-47l155,-148l107,100l-158,156.99999l-44,12l-76,-74z" id="svg_6" fill="url(#svg_10)" stroke="#ffffff" stroke-width="0"/>
+  <path d="m335.57031,40.29688c-11.5,39.75 55.5,115.25 109.25,98.75l21,-20.99999l-103,-101l-27.25,23.25z" id="svg_11" fill="url(#svg_18)" stroke="#ffffff" stroke-width="0"/>
+  <rect x="272.80404" y="20.76382" width="42.35197" height="232.66835" id="svg_13" fill="#ffffff" stroke="#ffffff" stroke-width="0" transform="rotate(45.9094, 293.98, 137.1)" opacity="0.4"/>
+  <rect x="282.80404" y="22.76382" width="14" height="232.66835" fill="#ffffff" stroke="#ffffff" stroke-width="0" transform="rotate(45.9094, 289.805, 139.1)" opacity="0.4" id="svg_14"/>
+  <ellipse cx="415.13312" cy="64.38066" id="svg_12" fill="#ea7598" stroke="#ffffff" stroke-width="0" rx="67.79251" ry="34.82026" transform="rotate(39.4735, 415.133, 64.379)"/>
+  <path d="m212.07031,166.04688c-8.5,47 36.25,103.75 99.25,96.75l-152.5,53.25l53.25,-150z" id="svg_4" fill="url(#svg_5)" stroke="#ffffff" stroke-width="0"/>
+  <path d="m181.32031,242.54688c0.5,20.5 26.75,45 46.75,48.5l-66.25,20l19.5,-68.5z" id="svg_3" fill="#27382f" stroke="#ffffff" stroke-width="0"/>
+ </g>
+ <g>
+  <title>Layer 2</title>
+  <path d="m152.82031,317.04688l51,-152l157,-153c40,-12.00001 118,48 105,105l-157,152.99999l-156,47z" id="svg_1" fill="none" stroke="#800000" stroke-width="17"/>
+ </g>
+</svg>
 </g>
 
 
@@ -265,6 +198,65 @@
  </svg>
 </g>
 
+<g id="add_subpath">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 124 124" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient id="svg_4" x1="0.33594" y1="0.28125" x2="1" y2="1">
+   <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+   <stop offset="1" stop-color="#33a533" stop-opacity="1"/>
+  </linearGradient>
+ </defs>
+ <g>
+  <path d="m6,103l55,-87c85,33.64 -26,37.12 55,87l-110,0z" id="svg_1" fill="url(#svg_4)" stroke="#000000" stroke-width="4" stroke-dasharray="null"/>
+  <g id="svg_7">
+   <circle stroke-dasharray="null" stroke-width="5" stroke="#000000" fill="#ffffff" id="svg_6" r="22.63281" cy="88.5" cx="45.5"/>
+   <line stroke-dasharray="null" stroke-width="7" stroke="#000000" id="svg_2" y2="104.03768" x2="45.5" y1="72.96232" x1="45.5"/>
+   <line stroke-dasharray="null" stroke-width="7" stroke="#000000" id="svg_3" y2="88.5" x2="61.03768" y1="88.5" x1="29.96232"/>
+  </g>
+ </g>
+ </svg>
+</g>
+
+<g id="close_path">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <title>Layer 1</title>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/>
+  <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/>
+  <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+  <circle r="30" cy="41" cx="123"/>
+  <circle r="30" cy="146" cx="40"/>
+  <circle r="30" cy="260" cx="69"/>
+  <circle r="30" cy="260" cx="228"/>
+  <circle r="30" cy="148" cx="260"/>
+  </g>
+ </g>
+</svg>
+</g>
+
+<g id="open_path">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+  <title>Layer 1</title>
+  <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/>
+  <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/>
+  <g stroke-width="15" stroke="#00f" fill="#0ff">
+   <circle r="30" cy="41" cx="123"/>
+   <circle r="30" cy="146" cx="40"/>
+   <circle r="30" cy="260" cx="69"/>
+   <circle r="30" cy="260" cx="228"/>
+   <circle r="30" cy="148" cx="260"/>
+  </g>
+  <g  stroke="#A00" stroke-width="15" fill="none">
+   <line x1="168" y1="24" x2="210" y2="150"/>
+   <line x1="210" y1="24" x2="168" y2="150"/>
+  </g>
+ </g>
+</svg>
+</g>
+
+
 <g id="image">
 <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
  <defs>
@@ -308,6 +300,12 @@
 	</svg>
 </g>
 
+<g id="arrow_right_big">
+	<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 50">
+	  <path stroke="#000000" fill="#000000" d="m0,0l0,50l25,-25l-25,-25z"/>
+	</svg>
+</g>
+
 <g id="arrow_down">
 	<svg viewBox="0 0 50 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 	  <path transform="rotate(90, 26, 13)" d="m14,-12l0,50l25,-25l-25,-25z" fill="#000000" stroke="#000000"/>
@@ -316,10 +314,16 @@
 
 
 <g id="new_image">
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
   <rect x="2.42792" y="1.6692" width="18" height="21" id="svg_55" fill="#eaeaea" stroke="#606060"/>
-  <circle stroke-width="0" stroke="#a0a0a0" fill="#fff175" id="svg_65" r="3.83333" cy="6.24769" cx="19.16813"/>
- </svg>
+  <circle stroke-width="0" stroke="#a0a0a0" fill="url(#svg_9)" id="svg_65" r="6.300781" cy="7.529969" cx="17.761984"/>
+ <defs>
+  <radialGradient id="svg_9" cx="0.5" cy="0.5" r="0.5">
+   <stop offset="0.1" stop-color="#ffe500" stop-opacity="1"/>
+   <stop offset="1" stop-color="#ffff00" stop-opacity="0"/>
+  </radialGradient>
+ </defs>
+</svg>
 </g>
 
 <g id="save">
@@ -359,6 +363,19 @@
 </svg>
 </g>
 
+<g id="import">
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient y2="0.875" x2="0.21484" y1="0.00391" x1="0.04297" id="svg_46_import">
+   <stop stop-opacity="1" stop-color="#81f4bb" offset="0"/>
+   <stop stop-opacity="1" stop-color="#37b76e" offset="1"/>
+  </linearGradient>
+ </defs>
+ <rect x="2.42792" y="1.6692" width="18" height="21" id="svg_55" fill="#eaeaea" stroke="#606060"/>
+	  <path stroke="#285582" fill="url(#svg_46_import)" id="svg_45" d="m7.14286,12.74903l5.21236,5.79151l5.50193,-5.88803l-2.50965,-0.09653l0,-2.79923c0,-2.3166 -2.3166,-5.59846 -6.56371,-5.59846c-4.05405,0 -6.27413,3.37838 -6.56371,6.75676c0.48263,-1.5444 2.7027,-4.53668 4.44015,-4.44015c2.12355,-0.09653 2.79923,1.64093 2.79923,3.37838l0.09653,2.79923l-2.41313,0.09653z"/>
+</svg>
+</g>
+
 <g id="docprops">
 	<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
 	 <defs>
--- a/htdocs/svg-edit/editor/jgraduate/css/jGraduate-0.2.0.css	Fri Apr 23 22:29:49 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/* 
- * jGraduate Default CSS
- * 
- * Copyright (c) 2009 Jeff Schiller
- *
- * Licensed under the Apache License Version 2
- */
-
-h2.jGraduate_Title {
-  font-family: Arial, Helvetica, Sans-Serif;
-  font-size: 11px !important;
-  font-weight: bold;
-  margin: -13px 0px 0px 0px;
-  padding: 0px;
-  text-align: center;
-}
-
-.jGraduate_Picker {
-	font-family: Arial, Helvetica, Sans-Serif;
-	font-size: 12px;
-	border-style: solid;
-	border-color: lightgrey black black lightgrey;
-	border-width: 1px;
-	background-color: #EFEFEF;
-	position: absolute;
-	padding: 10px;
-}
-
-li.jGraduate_tab_color, li.jGraduate_tab_lingrad {
-	background-color: #ccc;
-	display: inline;
-	border: solid 1px grey;
-	padding: 3px;
-	margin: 2px;
-	cursor: pointer;
-}
-
-li.jGraduate_tab_current {
-	background-color: #EFEFEF;
-	display: inline;
-	padding: 3px;
-	margin: 2px;
-	border: solid 1px black;
-	cursor: pointer;
-}
-
-.jGraduate_colPick {
-	display: none;
-}
-
-.jGraduate_lgPick {	
-	display: none;
-	border: outset 1px #666;
-	padding: 10px 7px 5px 5px;
-	overflow: auto;
-}
-
-.jGraduate_tabs {
-	position: relative;
-	background-color: #EFEFEF;
-	padding: 0px;
-	margin: 0px;
-	margin-bottom: 5px;
-}
-
-div.jGraduate_Swatch {
-	float: left;
-	margin: 8px;
-}
-div.jGraduate_GradContainer {
-	border: 2px inset #EEE;
-	background-image: url(../images/map-opacity.png); 
-	background-position: 0px 0px;
-	height: 256px;
-}
-
-.jGraduate_AlphaArrows {
-	position: absolute;
-	margin-top: -10px;
-	margin-left: 250.5px;
-}
-
-div.jGraduate_Opacity {
-	border: 2px inset #eee;
-	margin-top: 14px;
-	background-color: black;
-	background-image: url(../images/Maps.png);
-	background-position: 0px -2816px;
-	height: 20px;
-	cursor: ew-resize;
-}
-
-div.jGraduate_OpacityField {
-	position: absolute;
-	bottom: 25px;
-	left: 292px;
-}
-
-div.jGraduate_Form {
-	float: left;
-	width: 140px;
-	margin: -3px 3px 0px 4px;
-}
-
-div.jGraduate_StopSection {
-	width: 120px;
-	text-align: center;
-}
-
-div.jGraduate_OkCancel {
-	float: left;
-	width: 113px;
-}
-
-input.jGraduate_Ok, input.jGraduate_Cancel {
-	display: block;
-	width: 100px;
-	margin-left: -4px;
-	margin-right: -4px;
-}
-input.jGraduate_Ok {
-	margin: 9px -4px 5px -4px;
-}
-
-.colorBox {
-	float: left;
-	height: 16px;
-	width: 16px;
-	border: 1px solid #808080;
-	cursor: pointer;
-	margin: 4px 4px 4px 30px;
-}
-
-.colorBox + label {
-	float: left;
-	margin-top: 7px;
-}
-
-label.jGraduate_Form_Heading {
-	position: relative;
-	top: 10px;
-	background-color: #EFEFEF;
-	padding: 2px;
-	font-weight: bold;
-	font-size: 13px;
-}
-
-div.jGraduate_Form_Section {
-	border-style: solid;
-	border-width: 1px;
-	border-color: grey;
-	-moz-border-radius: 5px;
-	-webkit-border-radius: 5px;
-	padding: 15px 5px 5px 5px;
-	margin: 2px;
-	width: 110px;
-	text-align: center;
-	overflow: auto;
-}
-
-div.jGraduate_LightBox {
-	position: fixed;
-	top: 0px;
-	left: 0px;
-	right: 0px;
-	bottom: 0px;
-	background-color: #000;
-	opacity: 0.5;
-	display: none;
-}
-
-div.jGraduate_stopPicker {
-	position: absolute;
-	display: none;
-	background: #E8E8E8;
-}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/jgraduate/css/jgraduate.css	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,266 @@
+/* 
+ * jGraduate Default CSS
+ * 
+ * Copyright (c) 2009 Jeff Schiller
+ *
+ * Licensed under the Apache License Version 2
+ */
+
+h2.jGraduate_Title {
+  font-family: Arial, Helvetica, Sans-Serif;
+  font-size: 11px !important;
+  font-weight: bold;
+  margin: -13px 0px 0px 0px;
+  padding: 0px;
+  text-align: center;
+}
+
+.jGraduate_Picker {
+	font-family: Arial, Helvetica, Sans-Serif;
+	font-size: 12px;
+	border-style: solid;
+	border-color: lightgrey black black lightgrey;
+	border-width: 1px;
+	background-color: #EFEFEF;
+	position: absolute;
+	padding: 10px;
+}
+
+.jGraduate_tabs li {
+	background-color: #ccc;
+	display: inline;
+	border: solid 1px grey;
+	padding: 3px;
+	margin: 2px;
+	cursor: pointer;
+}
+
+li.jGraduate_tab_current {
+	background-color: #EFEFEF;
+	display: inline;
+	padding: 3px;
+	margin: 2px;
+	border: solid 1px black;
+	cursor: pointer;
+}
+
+.jGraduate_colPick {
+	display: none;
+}
+
+.jGraduate_lgPick {	
+	display: none;
+	border: outset 1px #666;
+	padding: 10px 7px 5px 5px;
+	overflow: auto;
+}
+
+.jGraduate_rgPick {	
+	display: none;
+	border: outset 1px #666;
+	padding: 10px 7px 5px 5px;
+	overflow: auto;
+/*	position: relative;*/
+}
+
+.jGraduate_tabs {
+	position: relative;
+	background-color: #EFEFEF;
+	padding: 0px;
+	margin: 0px;
+	margin-bottom: 5px;
+}
+
+div.jGraduate_Swatch {
+	float: left;
+	margin: 8px;
+}
+div.jGraduate_GradContainer {
+	border: 2px inset #EEE;
+	background-image: url(../images/map-opacity.png); 
+	background-position: 0px 0px;
+	height: 256px;
+}
+
+.jGraduate_AlphaArrows {
+	position: absolute;
+	margin-top: -10px;
+	margin-left: 250.5px;
+}
+
+div.jGraduate_Opacity {
+	border: 2px inset #eee;
+	margin-top: 14px;
+	background-color: black;
+	background-image: url(../images/Maps.png);
+	background-position: 0px -2816px;
+	height: 20px;
+	cursor: ew-resize;
+}
+
+div.lg_jGraduate_OpacityField {
+	position: absolute;
+	bottom: 25px;
+	left: 292px;
+}
+
+div.jGraduate_Form {
+	float: left;
+	width: 140px;
+	margin: -3px 3px 0px 4px;
+}
+
+div.jGraduate_StopSection {
+	width: 120px;
+	text-align: center;
+}
+
+div.jGraduate_RadiusField {
+	
+	text-align: center;
+	float: left;
+}
+
+div.jGraduate_RadiusField input {
+	margin-top: 10px;
+}
+
+.jGraduate_RadiusField .jGraduate_Form_Section {
+	width: 250px;
+	padding: 2px;
+	height: 80px;
+	overflow: visible;
+}
+
+.jGraduate_Radius {
+	border:1px solid #BBB;
+	cursor:ew-resize;
+	height:20px;
+	margin-top:14px;
+	position: relative;
+}
+
+
+.jGraduate_RadiusArrows {
+	top: 0;
+	left: 0;
+	position: absolute;
+	margin-top: -10px;
+	margin-left: 250.5px;
+}
+
+
+div.jGraduate_OkCancel {
+	float: left;
+	width: 113px;
+}
+
+input.jGraduate_Ok, input.jGraduate_Cancel {
+	display: block;
+	width: 100px;
+	margin-left: -4px;
+	margin-right: -4px;
+}
+input.jGraduate_Ok {
+	margin: 9px -4px 5px -4px;
+}
+
+.colorBox {
+	float: left;
+	height: 16px;
+	width: 16px;
+	border: 1px solid #808080;
+	cursor: pointer;
+	margin: 4px 4px 4px 30px;
+}
+
+.colorBox + label {
+	float: left;
+	margin-top: 7px;
+}
+
+label.jGraduate_Form_Heading {
+	position: relative;
+	top: 10px;
+	background-color: #EFEFEF;
+	padding: 2px;
+	font-weight: bold;
+	font-size: 13px;
+}
+
+div.jGraduate_Form_Section {
+	border-style: solid;
+	border-width: 1px;
+	border-color: grey;
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	padding: 15px 5px 5px 5px;
+	margin: 2px;
+	width: 110px;
+	text-align: center;
+	overflow: auto;
+}
+
+div.jGraduate_LightBox {
+	position: fixed;
+	top: 0px;
+	left: 0px;
+	right: 0px;
+	bottom: 0px;
+	background-color: #000;
+	opacity: 0.5;
+	display: none;
+}
+
+div.jGraduate_stopPicker {
+	position: absolute;
+	display: none;
+	background: #E8E8E8;
+}
+
+
+.jGraduate_rgPick {
+	width: 530px;
+}
+
+.jGraduate_rgPick div.jGraduate_Form {
+	width: 270px;
+	position: absolute;
+	left: 284px;
+	width: 266px;
+	top: 130px;
+	margin: -3px 3px 0px 4px;
+}
+
+.jGraduate_Colorblocks {
+	display: table;
+	border-spacing: 0 5px;
+}
+
+.jGraduate_colorblock {
+	display: table-row;
+}
+
+.jGraduate_Colorblocks .jGraduate_colorblock > * {
+	display: table-cell;
+	vertical-align: middle;
+	margin: 0;
+	float: none;
+}
+
+.jGraduate_rgPick div.jGraduate_StopSection {
+	float: left;
+	width: 133px;
+	margin: 0;
+}
+
+.jGraduate_rgPick .jGraduate_OkCancel {
+	position: absolute;
+	right: 0;
+}
+
+.rg_jGraduate_OpacityField {
+	position: absolute;
+	left: 288px;
+	bottom: 24px;
+}
\ No newline at end of file
Binary file htdocs/svg-edit/editor/jgraduate/images/mappoint_c.png has changed
Binary file htdocs/svg-edit/editor/jgraduate/images/mappoint_f.png has changed
--- a/htdocs/svg-edit/editor/jgraduate/jquery.jgraduate.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/jgraduate/jquery.jgraduate.js	Fri Apr 23 22:38:00 2010 +0200
@@ -3,8 +3,10 @@
  *
  * jQuery Plugin for a gradient picker
  *
- * Copyright (c) 2009 Jeff Schiller
+ * Copyright (c) 2010 Jeff Schiller
  * http://blog.codedread.com/
+ * Copyright (c) 2010 Alexis Deveria
+ * http://a.deveria.com/
  *
  * Apache 2 License
 
@@ -23,12 +25,14 @@
 		alpha: Number representing opacity (0-100),
 		solidColor: String representing #RRGGBB hex of color,
 		linearGradient: object of interface SVGLinearGradientElement,
+		radialGradient: object of interface SVGRadialGradientElement,
 	}
 
 $.jGraduate.Paint() -> constructs a 'none' color
 $.jGraduate.Paint({copy: o}) -> creates a copy of the paint o
 $.jGraduate.Paint({hex: "#rrggbb"}) -> creates a solid color paint with hex = "#rrggbb"
 $.jGraduate.Paint({linearGradient: o, a: 50}) -> creates a linear gradient paint with opacity=0.5
+$.jGraduate.Paint({radialGradient: o, a: 7}) -> creates a radial gradient paint with opacity=0.07
 $.jGraduate.Paint({hex: "#rrggbb", linearGradient: o}) -> throws an exception?
 
 - picker accepts the following object as input:
@@ -42,6 +46,9 @@
 
  *
  */
+ 
+(function() {
+ 
 var ns = { svg: 'http://www.w3.org/2000/svg', xlink: 'http://www.w3.org/1999/xlink' };
 if(!window.console) {
   window.console = new function() {
@@ -74,27 +81,38 @@
     		if (options.copy) {
     			this.type = options.copy.type;
     			this.alpha = options.copy.alpha;
+				this.solidColor = null;
+				this.linearGradient = null;
+				this.radialGradient = null;
+
     			switch(this.type) {
     				case "none":
-    					this.solidColor = null;
-    					this.linearGradient = null;
     					break;
     				case "solidColor":
     					this.solidColor = options.copy.solidColor;
-    					this.linearGradient = null;
     					break;
     				case "linearGradient":
-    					this.solidColor = null;
     					this.linearGradient = $.cloneNode(options.copy.linearGradient);
     					break;
+    				case "radialGradient":
+    					this.radialGradient = $.cloneNode(options.copy.radialGradient);
+    					break;
     			}
     		}
     		// create linear gradient paint
     		else if (options.linearGradient) {
     			this.type = "linearGradient";
     			this.solidColor = null;
+    			this.radialGradient = null;
     			this.linearGradient = $.cloneNode(options.linearGradient);
     		}
+    		// create linear gradient paint
+    		else if (options.radialGradient) {
+    			this.type = "radialGradient";
+    			this.solidColor = null;
+    			this.linearGradient = null;
+    			this.radialGradient = $.cloneNode(options.radialGradient);
+    		}
     		// create solid color paint
     		else if (options.solidColor) {
     			this.type = "solidColor";
@@ -105,6 +123,7 @@
 	    		this.type = "none";
     			this.solidColor = null;
     			this.linearGradient = null;
+    			this.radialGradient = null;
 	    	}
 		}
 };
@@ -134,6 +153,15 @@
             }
             
             var okClicked = function() {
+	            // TODO: Fix this ugly hack
+	            if($this.paint.type == "radialGradient") {
+	            	$this.paint.linearGradient = null;
+	            } else if($this.paint.type == "linearGradient") {
+	            	$this.paint.radialGradient = null;	            
+	            } else if($this.paint.type == "solidColor") {
+	            	$this.paint.linearGradient = null;
+	            	$this.paint.radialGradient = null;
+	            }
             	$.isFunction($this.okCallback) && $this.okCallback($this.paint);
             	$this.hide();
             },
@@ -156,23 +184,26 @@
 			if ($this.paint.type == "none") {
 				$this.paint = $.jGraduate.Paint({solidColor: 'ffffff'});
 			}
-
+			
             $this.addClass('jGraduate_Picker');
             $this.html('<ul class="jGraduate_tabs">' +
-            				'<li class="jGraduate_tab_color jGraduate_tab_current">Solid Color</li>' +
-            				'<li class="jGraduate_tab_lingrad">Linear Gradient</li>' +
+            				'<li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li>' +
+            				'<li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li>' +
+            				'<li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li>' +
             			'</ul>' +
             			'<div class="jGraduate_colPick"></div>' +
-            			'<div class="jGraduate_lgPick"></div>');
+            			'<div class="jGraduate_lgPick"></div>' +
+            			'<div class="jGraduate_rgPick"></div>');
 			var colPicker = $(idref + '> .jGraduate_colPick');
 			var lgPicker = $(idref + '> .jGraduate_lgPick');
+			var rgPicker = $(idref + '> .jGraduate_rgPick');
 			
             lgPicker.html(
             	'<div id="' + id + '_jGraduate_Swatch" class="jGraduate_Swatch">' +
             		'<h2 class="jGraduate_Title">' + $settings.window.pickerTitle + '</h2>' +
-            		'<div id="' + id + '_jGraduate_GradContainer" class="jGraduate_GradContainer"></div>' +
-            		'<div id="' + id + '_jGraduate_Opacity" class="jGraduate_Opacity" title="Click to set overall opacity of the gradient paint">' +
-            			'<img id="' + id + '_jGraduate_AlphaArrows" class="jGraduate_AlphaArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif"></img>' +
+            		'<div id="' + id + '_lg_jGraduate_GradContainer" class="jGraduate_GradContainer"></div>' +
+            		'<div id="' + id + '_lg_jGraduate_Opacity" class="jGraduate_Opacity" title="Click to set overall opacity of the gradient paint">' +
+            			'<img id="' + id + '_lg_jGraduate_AlphaArrows" class="jGraduate_AlphaArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif"></img>' +
             		'</div>' +
             	'</div>' + 
             	'<div class="jGraduate_Form">' +
@@ -198,374 +229,861 @@
 			            	'<label id="' + id + '_jGraduate_endOpacity">100%</label>' +
     	    	    	'</div>' +
     	    	    '</div>' +
-    	    	    '<div class="jGraduate_OpacityField">' +
-    	    	    	'<label class="jGraduate_OpacityLabel">A: </label>' +
-    	    	    	'<input type="text" id="' + id + '_jGraduate_OpacityInput" class="jGraduate_OpacityInput" size="3" value="100"/>%' +
+    	    	    '<div class="lg_jGraduate_OpacityField">' +
+    	    	    	'<label class="lg_jGraduate_OpacityLabel">A: </label>' +
+    	    	    	'<input type="text" id="' + id + '_lg_jGraduate_OpacityInput" class="jGraduate_OpacityInput" size="3" value="100"/>%' +
     	    	    '</div>' +
     	       	'</div>' +
         	    '<div class="jGraduate_OkCancel">' +
-            		'<input type="button" id="' + id + '_jGraduate_Ok" class="jGraduate_Ok" value="OK"/>' +
-            		'<input type="button" id="' + id + '_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/>' +
+            		'<input type="button" id="' + id + '_lg_jGraduate_Ok" class="jGraduate_Ok" value="OK"/>' +
+            		'<input type="button" id="' + id + '_lg_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/>' +
             	'</div>' +
             	'<div class="jGraduate_LightBox"></div>' +
             	'<div id="' + id + '_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');
+            	
+            rgPicker.html(
+            	'<div class="jGraduate_Swatch">' +
+            		'<h2 class="jGraduate_Title">' + $settings.window.pickerTitle + '</h2>' +
+            		'<div id="' + id + '_rg_jGraduate_GradContainer" class="jGraduate_GradContainer"></div>' +
+            		'<div id="' + id + '_rg_jGraduate_Opacity" class="jGraduate_Opacity" title="Click to set overall opacity of the gradient paint">' +
+            			'<img id="' + id + '_rg_jGraduate_AlphaArrows" class="jGraduate_AlphaArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif"></img>' +
+            		'</div>' +
+            	'</div>' + 
+				'<div id="jGraduate_radColors" class="jGraduate_StopSection">' +
+					'<label class="jGraduate_Form_Heading">Colors</label>' +
+					'<div class="jGraduate_Form_Section jGraduate_Colorblocks">' +
+						'<div class="jGraduate_colorblock"><span>Center:</span>' +
+						'<div id="' + id + '_jGraduate_colorBoxCenter" class="colorBox"></div>' +
+						'<label id="' + id + '_rg_jGraduate_centerOpacity"> 100%</label></div>' +
+
+						'<div class="jGraduate_colorblock"><span>Outer:</span>' +
+							'<div id="' + id + '_jGraduate_colorBoxOuter" class="colorBox"></div>' +
+							'<label id="' + id + '_jGraduate_outerOpacity"> 100%</label></div>' +
+					'</div>' +
+				'</div>' +
+				'<div class="jGraduate_StopSection">' +
+				'</div>' +
+            	'<div class="jGraduate_Form">' +
+        	   		'<div class="jGraduate_StopSection">' +
+	            		'<label class="jGraduate_Form_Heading">Center Point</label>' +
+    	        		'<div class="jGraduate_Form_Section">' +
+	    	        		'<label>x:</label>' +
+		    	        	'<input type="text" id="' + id + '_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/>' +
+    		    	    	'<label> y:</label>' +
+        		    		'<input type="text" id="' + id + '_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/>' +
+    	    	    	'</div>' +
+    	    	    '</div>' +
+        	   		'<div class="jGraduate_StopSection">' +
+	            		'<label class="jGraduate_Form_Heading">Focal Point</label>' +
+    	        		'<div class="jGraduate_Form_Section">' +
+	    	        		'<label>Match center: <input type="checkbox" checked="checked" id="' + id + '_jGraduate_match_ctr"/></label><br/>' +
+	    	        		'<label>x:</label>' +
+		    	        	'<input type="text" id="' + id + '_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/>' +
+    		    	    	'<label> y:</label>' +
+        		    		'<input type="text" id="' + id + '_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/>' +
+    	    	    	'</div>' +
+    	    	    '</div>' +
+        	   		'<div class="jGraduate_RadiusField">' +
+	            		'<label class="jGraduate_Form_Heading">Radius</label>' +
+    	        		'<div class="jGraduate_Form_Section">' +
+							'<div id="' + id + '_jGraduate_RadiusContainer" class="jGraduate_RadiusContainer"></div>' +
+							'<input type="text" id="' + id + '_jGraduate_RadiusInput" size="3" value="100"/>%' +
+							'<div id="' + id + '_jGraduate_Radius" class="jGraduate_Radius" title="Click to set radius">' +
+								'<img id="' + id + '_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="' + $settings.images.clientPath + 'rangearrows2.gif"></img>' +
+							'</div>' +
+    	    	    	'</div>' +
+    	    	    '</div>' +
+    	       	'</div>' +
+				'<div class="rg_jGraduate_OpacityField">' +
+					'<label class="rg_jGraduate_OpacityLabel">A: </label>' +
+					'<input type="text" id="' + id + '_rg_jGraduate_OpacityInput" class="jGraduate_OpacityInput" size="3" value="100"/>%' +
+				'</div>' +
+        	    '<div class="jGraduate_OkCancel">' +
+            		'<input type="button" id="' + id + '_rg_jGraduate_Ok" class="jGraduate_Ok" value="OK"/>' +
+            		'<input type="button" id="' + id + '_rg_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/>' +
+            	'</div>' +
+            	'<div class="jGraduate_LightBox"></div>' +
+            	'<div id="' + id + '_rg_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');
 			
 			// --------------
             // Set up all the SVG elements (the gradient, stops and rectangle)
             var MAX = 256, MARGINX = 0, MARGINY = 0, STOP_RADIUS = 15/2,
             	SIZEX = MAX - 2*MARGINX, SIZEY = MAX - 2*MARGINY;
-            var container = document.getElementById(id+'_jGraduate_GradContainer');
-            var svg = container.appendChild(document.createElementNS(ns.svg, 'svg'));
-            svg.id = id+'_jgraduate_svg';            
-            svg.setAttribute('width', MAX);
-            svg.setAttribute('height', MAX);
-			svg.setAttribute("xmlns", ns.svg);
-			
-			// if we are sent a gradient, import it 
-			if ($this.paint.type == "linearGradient") {
-				$this.paint.linearGradient.id = id+'_jgraduate_grad';
-				$this.paint.linearGradient = svg.appendChild($.cloneNode($this.paint.linearGradient));
-			}
-			else { // we create a gradient
-				var grad = svg.appendChild(document.createElementNS(ns.svg, 'linearGradient'));
-				grad.id = id+'_jgraduate_grad';
-				grad.setAttribute('x1','0.0');
-				grad.setAttribute('y1','0.0');
-				grad.setAttribute('x2','1.0');
-				grad.setAttribute('y2','1.0');
-				
-				var begin = grad.appendChild(document.createElementNS(ns.svg, 'stop'));
-				begin.setAttribute('offset', '0.0');
-				begin.setAttribute('stop-color', '#ff0000');
-
-				var end = grad.appendChild(document.createElementNS(ns.svg, 'stop'));
-				end.setAttribute('offset', '1.0');
-				end.setAttribute('stop-color', '#ffff00');
-			
-				$this.paint.linearGradient = grad;
-			}
-
-			var gradalpha = $this.paint.alpha;
-            $('#' + id + '_jGraduate_OpacityInput').val(gradalpha);
-			var posx = parseInt(255*(gradalpha/100)) - 4.5;
-            $('#' + id + '_jGraduate_AlphaArrows').css({'margin-left':posx});
-            $('#' + id + '_jgraduate_rect').attr('fill-opacity', gradalpha/100);
-			
-			var x1 = parseFloat($this.paint.linearGradient.getAttribute('x1')||0.0),
-				y1 = parseFloat($this.paint.linearGradient.getAttribute('y1')||0.0),
-				x2 = parseFloat($this.paint.linearGradient.getAttribute('x2')||1.0),
-				y2 = parseFloat($this.paint.linearGradient.getAttribute('y2')||0.0);
-			
-            var rect = document.createElementNS(ns.svg, 'rect');
-            rect.id = id + '_jgraduate_rect';
-            rect.setAttribute('x', MARGINX);
-            rect.setAttribute('y', MARGINY);
-            rect.setAttribute('width', SIZEY);
-            rect.setAttribute('height', SIZEY);
-            rect.setAttribute('fill', 'url(#'+id+'_jgraduate_grad)');
-            rect.setAttribute('fill-opacity', '1.0');
-            rect = svg.appendChild(rect);
-            
-            // stop visuals created here
-            var beginStop = document.createElementNS(ns.svg, 'image');
-            beginStop.id = id + "_stop1";
-            beginStop.setAttribute('class', 'stop');
-            beginStop.setAttributeNS(ns.xlink, 'href', $settings.images.clientPath + 'mappoint.gif');
-            beginStop.setAttributeNS(ns.xlink, "title", "Begin Stop");
-            beginStop.appendChild(document.createElementNS(ns.svg, 'title')).appendChild(
-            	document.createTextNode("Begin Stop"));
-            beginStop.setAttribute('width', 18);
-            beginStop.setAttribute('height', 18);
-            beginStop.setAttribute('x', MARGINX + SIZEX*x1 - STOP_RADIUS);
-            beginStop.setAttribute('y', MARGINY + SIZEY*y1 - STOP_RADIUS);
-            beginStop.setAttribute('cursor', 'move');
-            // must append only after setting all attributes due to Webkit Bug 27952
-            // https://bugs.webkit.org/show_bug.cgi?id=27592
-            beginStop = svg.appendChild(beginStop);
-            
-            var endStop = document.createElementNS(ns.svg, 'image');
-            endStop.id = id + "_stop2";
-            endStop.setAttribute('class', 'stop');
-            endStop.setAttributeNS(ns.xlink, 'href', $settings.images.clientPath + 'mappoint.gif');
-            endStop.setAttributeNS(ns.xlink, "title", "End Stop");
-            endStop.appendChild(document.createElementNS(ns.svg, 'title')).appendChild(
-            	document.createTextNode("End Stop"));
-            endStop.setAttribute('width', 18);
-            endStop.setAttribute('height', 18);
-            endStop.setAttribute('x', MARGINX + SIZEX*x2 - STOP_RADIUS);
-            endStop.setAttribute('y', MARGINY + SIZEY*y2 - STOP_RADIUS);
-            endStop.setAttribute('cursor', 'move');
-            endStop = svg.appendChild(endStop);
-            
-            // bind GUI elements
-            $('#'+id+'_jGraduate_Ok').bind('click', function() {
-            	$this.paint.type = "linearGradient";
-				$this.paint.solidColor = null;
-            	okClicked();
-            });
-            $('#'+id+'_jGraduate_Cancel').bind('click', function(paint) {
-            	cancelClicked();
-            });
-            
-            var x1 = $this.paint.linearGradient.getAttribute('x1');
-            if(!x1) x1 = "0.0";
-            x1Input = $('#'+id+'_jGraduate_x1');
-            x1Input.val(x1);
-            x1Input.change( function() {
-            	if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
-            		this.value = 0.0; 
-            	}
-            	$this.paint.linearGradient.setAttribute('x1', this.value);
-            	beginStop.setAttribute('x', MARGINX + SIZEX*this.value - STOP_RADIUS);
-            });
-
-            var y1 = $this.paint.linearGradient.getAttribute('y1');
-            if(!y1) y1 = "0.0";
-            y1Input = $('#'+id+'_jGraduate_y1');
-            y1Input.val(y1);
-            y1Input.change( function() {
-            	if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
-            		this.value = 0.0; 
-            	}
-            	$this.paint.linearGradient.setAttribute('y1', this.value);
-            	beginStop.setAttribute('y', MARGINY + SIZEY*this.value - STOP_RADIUS);
-            });
-            
-            var x2 = $this.paint.linearGradient.getAttribute('x2');
-            if(!x2) x2 = "1.0";
-            x2Input = $('#'+id+'_jGraduate_x2');
-            x2Input.val(x2);
-            x2Input.change( function() {
-            	if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
-            		this.value = 1.0;
-            	}
-            	$this.paint.linearGradient.setAttribute('x2', this.value);
-            	endStop.setAttribute('x', MARGINX + SIZEX*this.value - STOP_RADIUS);
+            	
+            $.each(['lg', 'rg'], function(i) {
+            	var grad_id = id + '_' + this;
+				var container = document.getElementById(grad_id+'_jGraduate_GradContainer');
+				var svg = container.appendChild(document.createElementNS(ns.svg, 'svg'));
+				svg.id = grad_id + '_jgraduate_svg';            
+				svg.setAttribute('width', MAX);
+				svg.setAttribute('height', MAX);
+				svg.setAttribute("xmlns", ns.svg);
             });
-            
-            var y2 = $this.paint.linearGradient.getAttribute('y2');
-            if(!y2) y2 = "0.0";
-            y2Input = $('#'+id+'_jGraduate_y2');
-            y2Input.val(y2);
-            y2Input.change( function() {
-            	if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
-            		this.value = 0.0;
-            	}
-            	$this.paint.linearGradient.setAttribute('y2', this.value);
-            	endStop.setAttribute('y', MARGINY + SIZEY*this.value - STOP_RADIUS);
-            });            
-            
-            var stops = $this.paint.linearGradient.getElementsByTagNameNS(ns.svg, 'stop');
-            var numstops = stops.length;
-            // if there are not at least two stops, then 
-            if (numstops < 2) {
-	            while (numstops < 2) {
-    	        	$this.paint.linearGradient.appendChild( document.createElementNS(ns.svg, 'stop') );
-        	    	++numstops;
-            	}
-            	stops = $this.paint.linearGradient.getElementsByTagNameNS(ns.svg, 'stop');
-            }
-            
-            var setOpacitySlider = function(e, div) {
-            	var offset = div.offset();
-            	var x = (e.pageX - offset.left - parseInt(div.css('border-left-width')));
-            	if (x > 255) x = 255;
-            	if (x < 0) x = 0;
-            	var posx = x - 4.5;
-            	x /= 255;
-            	$('#' + id + '_jGraduate_AlphaArrows').css({'margin-left':posx});
-            	$('#' + id + '_jgraduate_rect').attr('fill-opacity', x);
-            	x = parseInt(x*100);
-            	$('#' + id + '_jGraduate_OpacityInput').val(x);
-            	$this.paint.alpha = x;
-            };
-            
-            // handle dragging on the opacity slider
-            var bSlidingOpacity = false;
-            $('.jGraduate_Opacity').mousedown(function(evt) {
-            	setOpacitySlider(evt, $(this));
-            	bSlidingOpacity = true;
-            	evt.preventDefault();
-            });
-            $('.jGraduate_Opacity').mousemove(function(evt) {
-            	if (bSlidingOpacity) {
-            		setOpacitySlider(evt, $(this));
-            		evt.preventDefault();
-            	}
-            });
-            $('.jGraduate_Opacity').mouseup(function(evt) {
-            	setOpacitySlider(evt, $(this));
-            	bSlidingOpacity = false;
-            	evt.preventDefault();
-            });
-            
-			// handle dragging the stop around the swatch
-            var draggingStop = null;
-            var startx = -1, starty = -1;
-            // for whatever reason, Opera does not allow $('image.stop') here,
-            // and Firefox 1.5 does not allow $('.stop')
-            $('.stop, #color_picker_jGraduate_GradContainer image').mousedown(function(evt) {
-            	draggingStop = this;
-            	startx = evt.clientX;
-            	starty = evt.clientY;
-            	evt.preventDefault();
-            });
-            $('#'+id+'_jgraduate_svg').mousemove(function(evt) {
-            	if (null != draggingStop) {
-            		var dx = evt.clientX - startx;
-            		var dy = evt.clientY - starty;
-            		startx += dx;
-            		starty += dy;
-            		var x = parseFloat(draggingStop.getAttribute('x')) + dx;
-            		var y = parseFloat(draggingStop.getAttribute('y')) + dy;
-
-					// clamp stop to the swatch
-            		if (x < MARGINX - STOP_RADIUS) x = MARGINX - STOP_RADIUS;
-            		if (y < MARGINY - STOP_RADIUS) y = MARGINY - STOP_RADIUS;
-            		if (x > MARGINX + SIZEX - STOP_RADIUS) x = MARGINX + SIZEX - STOP_RADIUS;
-            		if (y > MARGINY + SIZEY - STOP_RADIUS) y = MARGINY + SIZEY - STOP_RADIUS;
-            		            		
-            		draggingStop.setAttribute('x', x);
-            		draggingStop.setAttribute('y', y);
-
-					// calculate stop offset            		
-            		var fracx = (x - MARGINX + STOP_RADIUS)/SIZEX;
-            		var fracy = (y - MARGINY + STOP_RADIUS)/SIZEY;
-            		
-            		if (draggingStop.id == (id+'_stop1')) {
-            			x1Input.val(fracx);
-            			y1Input.val(fracy);
-            			$this.paint.linearGradient.setAttribute('x1', fracx);
-            			$this.paint.linearGradient.setAttribute('y1', fracy);
-            		}
-            		else {
-            			x2Input.val(fracx);
-            			y2Input.val(fracy);
-            			$this.paint.linearGradient.setAttribute('x2', fracx);
-            			$this.paint.linearGradient.setAttribute('y2', fracy);
-            		}
-            		
-            		evt.preventDefault();
-            	}
-            });
-            $('#'+id+'_jgraduate_svg').mouseup(function(evt) {
-            	draggingStop = null;
-            });
-            
-            var beginColor = stops[0].getAttribute('stop-color');
-            if(!beginColor) beginColor = '#000';
-            beginColorBox = $('#'+id+'_jGraduate_colorBoxBegin');
-            beginColorBox.css({'background-color':beginColor});
-
-            var beginOpacity = stops[0].getAttribute('stop-opacity');
-            if(!beginOpacity) beginOpacity = '1.0';
-            $('#'+id+'jGraduate_beginOpacity').html( (beginOpacity*100)+'%' );
-
-            var endColor = stops[stops.length-1].getAttribute('stop-color');
-            if(!endColor) endColor = '#000';
-            endColorBox = $('#'+id+'_jGraduate_colorBoxEnd');
-            endColorBox.css({'background-color':endColor});
-
-            var endOpacity = stops[stops.length-1].getAttribute('stop-opacity');
-            if(!endOpacity) endOpacity = '1.0';
-            $('#'+id+'jGraduate_endOpacity').html( (endOpacity*100)+'%' );
-            
-			$('#'+id+'_jGraduate_colorBoxBegin').click(function() {
-				$('div.jGraduate_LightBox').show();			
-				var colorbox = $(this);
-				var thisAlpha = (parseFloat(beginOpacity)*255).toString(16);
+			
+			
+			// Linear gradient
+			(function() {
+				var svg = document.getElementById(id + '_lg_jgraduate_svg');
+				
+				// if we are sent a gradient, import it 
+				if ($this.paint.type == "linearGradient") {
+					$this.paint.linearGradient.id = id+'_jgraduate_grad';
+					$this.paint.linearGradient = svg.appendChild($.cloneNode($this.paint.linearGradient));
+				} else { // we create a gradient
+					var grad = svg.appendChild(document.createElementNS(ns.svg, 'linearGradient'));
+					grad.id = id+'_jgraduate_grad';
+					grad.setAttribute('x1','0.0');
+					grad.setAttribute('y1','0.0');
+					grad.setAttribute('x2','1.0');
+					grad.setAttribute('y2','1.0');
+					
+					var begin = grad.appendChild(document.createElementNS(ns.svg, 'stop'));
+					begin.setAttribute('offset', '0.0');
+					begin.setAttribute('stop-color', '#ff0000');
+	
+					var end = grad.appendChild(document.createElementNS(ns.svg, 'stop'));
+					end.setAttribute('offset', '1.0');
+					end.setAttribute('stop-color', '#ffff00');
+				
+					$this.paint.linearGradient = grad;
+				}
+	
+				var gradalpha = $this.paint.alpha;
+				$('#' + id + '_lg_jGraduate_OpacityInput').val(gradalpha);
+				var posx = parseInt(255*(gradalpha/100)) - 4.5;
+				$('#' + id + '_lg_jGraduate_AlphaArrows').css({'margin-left':posx});
+				
+				var x1 = parseFloat($this.paint.linearGradient.getAttribute('x1')||0.0),
+					y1 = parseFloat($this.paint.linearGradient.getAttribute('y1')||0.0),
+					x2 = parseFloat($this.paint.linearGradient.getAttribute('x2')||1.0),
+					y2 = parseFloat($this.paint.linearGradient.getAttribute('y2')||0.0);
+				
+				var rect = document.createElementNS(ns.svg, 'rect');
+				rect.id = id + '_lg_jgraduate_rect';
+				rect.setAttribute('x', MARGINX);
+				rect.setAttribute('y', MARGINY);
+				rect.setAttribute('width', SIZEY);
+				rect.setAttribute('height', SIZEY);
+				rect.setAttribute('fill', 'url(#'+id+'_jgraduate_grad)');
+				rect.setAttribute('fill-opacity', '1.0');
+				rect = svg.appendChild(rect);
+				$('#' + id + '_lg_jgraduate_rect').attr('fill-opacity', gradalpha/100);
+				
+				// stop visuals created here
+				var beginStop = document.createElementNS(ns.svg, 'image');
+				beginStop.id = id + "_stop1";
+				beginStop.setAttribute('class', 'stop');
+				beginStop.setAttributeNS(ns.xlink, 'href', $settings.images.clientPath + 'mappoint.gif');
+				beginStop.setAttributeNS(ns.xlink, "title", "Begin Stop");
+				beginStop.appendChild(document.createElementNS(ns.svg, 'title')).appendChild(
+					document.createTextNode("Begin Stop"));
+				beginStop.setAttribute('width', 18);
+				beginStop.setAttribute('height', 18);
+				beginStop.setAttribute('x', MARGINX + SIZEX*x1 - STOP_RADIUS);
+				beginStop.setAttribute('y', MARGINY + SIZEY*y1 - STOP_RADIUS);
+				beginStop.setAttribute('cursor', 'move');
+				// must append only after setting all attributes due to Webkit Bug 27952
+				// https://bugs.webkit.org/show_bug.cgi?id=27592
+				beginStop = svg.appendChild(beginStop);
+				
+				var endStop = document.createElementNS(ns.svg, 'image');
+				endStop.id = id + "_stop2";
+				endStop.setAttribute('class', 'stop');
+				endStop.setAttributeNS(ns.xlink, 'href', $settings.images.clientPath + 'mappoint.gif');
+				endStop.setAttributeNS(ns.xlink, "title", "End Stop");
+				endStop.appendChild(document.createElementNS(ns.svg, 'title')).appendChild(
+					document.createTextNode("End Stop"));
+				endStop.setAttribute('width', 18);
+				endStop.setAttribute('height', 18);
+				endStop.setAttribute('x', MARGINX + SIZEX*x2 - STOP_RADIUS);
+				endStop.setAttribute('y', MARGINY + SIZEY*y2 - STOP_RADIUS);
+				endStop.setAttribute('cursor', 'move');
+				endStop = svg.appendChild(endStop);
+				
+				// bind GUI elements
+				$('#'+id+'_lg_jGraduate_Ok').bind('click', function() {
+					$this.paint.type = "linearGradient";
+					$this.paint.solidColor = null;
+					okClicked();
+				});
+				$('#'+id+'_lg_jGraduate_Ok').bind('click', function(paint) {
+					cancelClicked();
+				});
+				
+				var x1 = $this.paint.linearGradient.getAttribute('x1');
+				if(!x1) x1 = "0.0";
+				var x1Input = $('#'+id+'_jGraduate_x1');
+				x1Input.val(x1);
+				x1Input.change( function() {
+					if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
+						this.value = 0.0; 
+					}
+					$this.paint.linearGradient.setAttribute('x1', this.value);
+					beginStop.setAttribute('x', MARGINX + SIZEX*this.value - STOP_RADIUS);
+				});
+	
+				var y1 = $this.paint.linearGradient.getAttribute('y1');
+				if(!y1) y1 = "0.0";
+				var y1Input = $('#'+id+'_jGraduate_y1');
+				y1Input.val(y1);
+				y1Input.change( function() {
+					if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
+						this.value = 0.0; 
+					}
+					$this.paint.linearGradient.setAttribute('y1', this.value);
+					beginStop.setAttribute('y', MARGINY + SIZEY*this.value - STOP_RADIUS);
+				});
+				
+				var x2 = $this.paint.linearGradient.getAttribute('x2');
+				if(!x2) x2 = "1.0";
+				var x2Input = $('#'+id+'_jGraduate_x2');
+				x2Input.val(x2);
+				x2Input.change( function() {
+					if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
+						this.value = 1.0;
+					}
+					$this.paint.linearGradient.setAttribute('x2', this.value);
+					endStop.setAttribute('x', MARGINX + SIZEX*this.value - STOP_RADIUS);
+				});
+				
+				var y2 = $this.paint.linearGradient.getAttribute('y2');
+				if(!y2) y2 = "0.0";
+				y2Input = $('#'+id+'_jGraduate_y2');
+				y2Input.val(y2);
+				y2Input.change( function() {
+					if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
+						this.value = 0.0;
+					}
+					$this.paint.linearGradient.setAttribute('y2', this.value);
+					endStop.setAttribute('y', MARGINY + SIZEY*this.value - STOP_RADIUS);
+				});            
+				
+				var stops = $this.paint.linearGradient.getElementsByTagNameNS(ns.svg, 'stop');
+				var numstops = stops.length;
+				// if there are not at least two stops, then 
+				if (numstops < 2) {
+					while (numstops < 2) {
+						$this.paint.linearGradient.appendChild( document.createElementNS(ns.svg, 'stop') );
+						++numstops;
+					}
+					stops = $this.paint.linearGradient.getElementsByTagNameNS(ns.svg, 'stop');
+				}
+				
+				var setLgOpacitySlider = function(e, div) {
+					var offset = div.offset();
+					var x = (e.pageX - offset.left - parseInt(div.css('border-left-width')));
+					if (x > 255) x = 255;
+					if (x < 0) x = 0;
+					var posx = x - 4.5;
+					x /= 255;
+					$('#' + id + '_lg_jGraduate_AlphaArrows').css({'margin-left':posx});
+					$('#' + id + '_lg_jgraduate_rect').attr('fill-opacity', x);
+					x = parseInt(x*100);
+					$('#' + id + '_lg_jGraduate_OpacityInput').val(x);
+					$this.paint.alpha = x;
+				};
+				
+				// handle dragging on the opacity slider
+				var bSlidingOpacity = false;
+				$('#' + id + '_lg_jGraduate_Opacity').mousedown(function(evt) {
+					setLgOpacitySlider(evt, $(this));
+					bSlidingOpacity = true;
+					evt.preventDefault();
+				}).mousemove(function(evt) {
+					if (bSlidingOpacity) {
+						setLgOpacitySlider(evt, $(this));
+						evt.preventDefault();
+					}
+				}).mouseup(function(evt) {
+					setLgOpacitySlider(evt, $(this));
+					bSlidingOpacity = false;
+					evt.preventDefault();
+				});
+				
+				// handle dragging the stop around the swatch
+				var draggingStop = null;
+				var startx = -1, starty = -1;
+				// for whatever reason, Opera does not allow $('image.stop') here,
+				// and Firefox 1.5 does not allow $('.stop')
+				$('.stop, #color_picker_lg_jGraduate_GradContainer image').mousedown(function(evt) {
+					draggingStop = this;
+					startx = evt.clientX;
+					starty = evt.clientY;
+					evt.preventDefault();
+				});
+				$('#'+id+'_lg_jgraduate_svg').mousemove(function(evt) {
+					if (null != draggingStop) {
+						var dx = evt.clientX - startx;
+						var dy = evt.clientY - starty;
+						startx += dx;
+						starty += dy;
+						var x = parseFloat(draggingStop.getAttribute('x')) + dx;
+						var y = parseFloat(draggingStop.getAttribute('y')) + dy;
+	
+						// clamp stop to the swatch
+						if (x < MARGINX - STOP_RADIUS) x = MARGINX - STOP_RADIUS;
+						if (y < MARGINY - STOP_RADIUS) y = MARGINY - STOP_RADIUS;
+						if (x > MARGINX + SIZEX - STOP_RADIUS) x = MARGINX + SIZEX - STOP_RADIUS;
+						if (y > MARGINY + SIZEY - STOP_RADIUS) y = MARGINY + SIZEY - STOP_RADIUS;
+											
+						draggingStop.setAttribute('x', x);
+						draggingStop.setAttribute('y', y);
+	
+						// calculate stop offset            		
+						var fracx = (x - MARGINX + STOP_RADIUS)/SIZEX;
+						var fracy = (y - MARGINY + STOP_RADIUS)/SIZEY;
+						
+						if (draggingStop.id == (id+'_stop1')) {
+							x1Input.val(fracx);
+							y1Input.val(fracy);
+							$this.paint.linearGradient.setAttribute('x1', fracx);
+							$this.paint.linearGradient.setAttribute('y1', fracy);
+						}
+						else {
+							x2Input.val(fracx);
+							y2Input.val(fracy);
+							$this.paint.linearGradient.setAttribute('x2', fracx);
+							$this.paint.linearGradient.setAttribute('y2', fracy);
+						}
+						
+						evt.preventDefault();
+					}
+				});
+				$('#'+id+'_lg_jgraduate_svg').mouseup(function(evt) {
+					draggingStop = null;
+				});
+				
+				var beginColor = stops[0].getAttribute('stop-color');
+				if(!beginColor) beginColor = '#000';
+				beginColorBox = $('#'+id+'_jGraduate_colorBoxBegin');
+				beginColorBox.css({'background-color':beginColor});
+	
+				var beginOpacity = stops[0].getAttribute('stop-opacity');
+				if(!beginOpacity) beginOpacity = '1.0';
+				$('#'+id+'lg_jGraduate_beginOpacity').html( (beginOpacity*100)+'%' );
+	
+				var endColor = stops[stops.length-1].getAttribute('stop-color');
+				if(!endColor) endColor = '#000';
+				endColorBox = $('#'+id+'_jGraduate_colorBoxEnd');
+				endColorBox.css({'background-color':endColor});
+	
+				var endOpacity = stops[stops.length-1].getAttribute('stop-opacity');
+				if(!endOpacity) endOpacity = '1.0';
+				$('#'+id+'jGraduate_endOpacity').html( (endOpacity*100)+'%' );
+				
+				$('#'+id+'_jGraduate_colorBoxBegin').click(function() {
+					$('div.jGraduate_LightBox').show();			
+					var colorbox = $(this);
+					var thisAlpha = (parseFloat(beginOpacity)*255).toString(16);
+					while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
+					color = beginColor.substr(1) + thisAlpha;
+					$('#'+id+'_jGraduate_stopPicker').css({'left': 100, 'bottom': 15}).jPicker({
+							window: { title: "Pick the start color and opacity for the gradient" },
+							images: { clientPath: $settings.images.clientPath },
+							color: { active: color, alphaSupport: true }
+						}, function(color){
+							beginColor = color.get_Hex() ? ('#'+color.get_Hex()) : "none";
+							beginOpacity = color.get_A() ? color.get_A()/100 : 1;
+							colorbox.css('background', beginColor);
+							$('#'+id+'_jGraduate_beginOpacity').html(parseInt(beginOpacity*100)+'%');
+							stops[0].setAttribute('stop-color', beginColor);
+							stops[0].setAttribute('stop-opacity', beginOpacity);
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_jGraduate_stopPicker').hide();
+						}, null, function() {
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_jGraduate_stopPicker').hide();
+						});
+				});
+				$('#'+id+'_jGraduate_colorBoxEnd').click(function() {
+					$('div.jGraduate_LightBox').show();
+					var colorbox = $(this);
+					var thisAlpha = (parseFloat(endOpacity)*255).toString(16);
+					while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
+					color = endColor.substr(1) + thisAlpha;
+					$('#'+id+'_jGraduate_stopPicker').css({'left': 100, 'top': 15}).jPicker({
+							window: { title: "Pick the end color and opacity for the gradient" },
+							images: { clientPath: $settings.images.clientPath },
+							color: { active: color, alphaSupport: true }
+						}, function(color){
+							endColor = color.get_Hex() ? ('#'+color.get_Hex()) : "none";
+							endOpacity = color.get_A() ? color.get_A()/100 : 1;
+							colorbox.css('background', endColor);
+							$('#'+id+'_jGraduate_endOpacity').html(parseInt(endOpacity*100)+'%');
+							stops[1].setAttribute('stop-color', endColor);
+							stops[1].setAttribute('stop-opacity', endOpacity);
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_jGraduate_stopPicker').hide();
+						}, null, function() {
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_jGraduate_stopPicker').hide();
+						});
+				});            
+				
+				// --------------
+				var thisAlpha = ($this.paint.alpha*255/100).toString(16);
 				while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
-				color = beginColor.substr(1) + thisAlpha;
-				$('#'+id+'_jGraduate_stopPicker').css({'left': 100, 'bottom': 15}).jPicker({
-						window: { title: "Pick the start color and opacity for the gradient" },
+				color = $this.paint.solidColor == "none" ? "" : $this.paint.solidColor + thisAlpha;
+				colPicker.jPicker(
+					{
+						window: { title: $settings.window.pickerTitle },
 						images: { clientPath: $settings.images.clientPath },
 						color: { active: color, alphaSupport: true }
-					}, function(color){
-						beginColor = color.get_Hex() ? ('#'+color.get_Hex()) : "none";
-						beginOpacity = color.get_A() ? color.get_A()/100 : 1;
-						colorbox.css('background', beginColor);
-						$('#'+id+'_jGraduate_beginOpacity').html(parseInt(beginOpacity*100)+'%');
-            			stops[0].setAttribute('stop-color', beginColor);
-						stops[0].setAttribute('stop-opacity', beginOpacity);
-						$('div.jGraduate_LightBox').hide();
-						$('#'+id+'_jGraduate_stopPicker').hide();
-					}, null, function() {
-						$('div.jGraduate_LightBox').hide();
-						$('#'+id+'_jGraduate_stopPicker').hide();
-					});
-			});
-			$('#'+id+'_jGraduate_colorBoxEnd').click(function() {
-				$('div.jGraduate_LightBox').show();
-				var colorbox = $(this);
-				var thisAlpha = (parseFloat(endOpacity)*255).toString(16);
+					},
+					function(color) {
+						$this.paint.type = "solidColor";
+						$this.paint.alpha = color.get_A() ? color.get_A() : 100;
+						$this.paint.solidColor = color.get_Hex() ? color.get_Hex() : "none";
+						$this.paint.linearGradient = null;
+						okClicked(); 
+					},
+					null,
+					function(){ cancelClicked(); }
+					);
+			}());	
+			
+			
+			// Radial gradient
+			(function() {
+				var svg = document.getElementById(id + '_rg_jgraduate_svg');
+				
+				// if we are sent a gradient, import it 
+				if ($this.paint.type == "radialGradient") {
+					$this.paint.radialGradient.id = id+'_rg_jgraduate_grad';
+					$this.paint.radialGradient = svg.appendChild($.cloneNode($this.paint.radialGradient));
+				} else { // we create a gradient
+					var grad = svg.appendChild(document.createElementNS(ns.svg, 'radialGradient'));
+					grad.id = id+'_rg_jgraduate_grad';
+					grad.setAttribute('cx','0.5');
+					grad.setAttribute('cy','0.5');
+					grad.setAttribute('r','0.5');
+					
+					var begin = grad.appendChild(document.createElementNS(ns.svg, 'stop'));
+					begin.setAttribute('offset', '0.0');
+					begin.setAttribute('stop-color', '#ff0000');
+	
+					var end = grad.appendChild(document.createElementNS(ns.svg, 'stop'));
+					end.setAttribute('offset', '1.0');
+					end.setAttribute('stop-color', '#ffff00');
+				
+					$this.paint.radialGradient = grad;
+				}
+	
+				var gradalpha = $this.paint.alpha;
+				$('#' + id + '_rg_jGraduate_OpacityInput').val(gradalpha);
+				var posx = parseInt(255*(gradalpha/100)) - 4.5;
+				$('#' + id + '_rg_jGraduate_AlphaArrows').css({'margin-left':posx});
+				
+				var grad = $this.paint.radialGradient;
+				
+				var cx = parseFloat(grad.getAttribute('cx')||0.5),
+					cy = parseFloat(grad.getAttribute('cy')||0.5),
+					fx = parseFloat(grad.getAttribute('fx')||0.5),
+					fy = parseFloat(grad.getAttribute('fy')||0.5);
+				
+				// No match, so show focus point
+				var showFocus = grad.getAttribute('fx') != null && !(cx == fx && cy == fy);
+				
+				var rect = document.createElementNS(ns.svg, 'rect');
+				rect.id = id + '_rg_jgraduate_rect';
+				rect.setAttribute('x', MARGINX);
+				rect.setAttribute('y', MARGINY);
+				rect.setAttribute('width', SIZEY);
+				rect.setAttribute('height', SIZEY);
+				rect.setAttribute('fill', 'url(#'+id+'_rg_jgraduate_grad)');
+				rect.setAttribute('fill-opacity', '1.0');
+
+				rect = svg.appendChild(rect);
+				
+				$('#' + id + '_rg_jgraduate_rect').attr('fill-opacity', gradalpha/100);
+
+				// stop visuals created here
+				var centerPoint = document.createElementNS(ns.svg, 'image');
+				centerPoint.id = id + "_center_pt";
+				centerPoint.setAttribute('class', 'stop');
+				centerPoint.setAttributeNS(ns.xlink, 'href', $settings.images.clientPath + 'mappoint_c.png');
+				centerPoint.setAttributeNS(ns.xlink, "title", "Center Point");
+				centerPoint.appendChild(document.createElementNS(ns.svg, 'title')).appendChild(
+					document.createTextNode("Center Point"));
+				centerPoint.setAttribute('width', 18);
+				centerPoint.setAttribute('height', 18);
+				centerPoint.setAttribute('x', MARGINX + SIZEX*cx - STOP_RADIUS);
+				centerPoint.setAttribute('y', MARGINY + SIZEY*cy - STOP_RADIUS);
+				centerPoint.setAttribute('cursor', 'move');
+
+				
+				var focusPoint = document.createElementNS(ns.svg, 'image');
+				focusPoint.id = id + "_focus_pt";
+				focusPoint.setAttribute('class', 'stop');
+				focusPoint.setAttributeNS(ns.xlink, 'href', $settings.images.clientPath + 'mappoint_f.png');
+				focusPoint.setAttributeNS(ns.xlink, "title", "Focus Point");
+				focusPoint.appendChild(document.createElementNS(ns.svg, 'title')).appendChild(
+					document.createTextNode("Focus Point"));
+				focusPoint.setAttribute('width', 18);
+				focusPoint.setAttribute('height', 18);
+				focusPoint.setAttribute('x', MARGINX + SIZEX*fx - STOP_RADIUS);
+				focusPoint.setAttribute('y', MARGINY + SIZEY*fy - STOP_RADIUS);
+				focusPoint.setAttribute('cursor', 'move');
+				
+				// must append only after setting all attributes due to Webkit Bug 27952
+				// https://bugs.webkit.org/show_bug.cgi?id=27592
+				
+				// centerPoint is added last so it is moved first
+				focusPoint = svg.appendChild(focusPoint);
+				centerPoint = svg.appendChild(centerPoint);
+				
+				// bind GUI elements
+				$('#'+id+'_rg_jGraduate_Ok').bind('click', function() {
+					$this.paint.type = "radialGradient";
+					$this.paint.solidColor = null;
+					okClicked();
+				});
+				$('#'+id+'_rg_jGraduate_Cancel').bind('click', function(paint) {
+					cancelClicked();
+				});
+				
+				var cx = $this.paint.radialGradient.getAttribute('cx');
+				if(!cx) cx = "0.0";
+				var cxInput = $('#'+id+'_jGraduate_cx');
+				cxInput.val(cx);
+				cxInput.change( function() {
+					if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
+						this.value = 0.0; 
+					}
+					$this.paint.radialGradient.setAttribute('cx', this.value);
+					centerPoint.setAttribute('x', MARGINX + SIZEX*this.value - STOP_RADIUS);
+				});
+	
+				var cy = $this.paint.radialGradient.getAttribute('cy');
+				if(!cy) cy = "0.0";
+				var cyInput = $('#'+id+'_jGraduate_cy');
+				cyInput.val(cy);
+				cyInput.change( function() {
+					if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
+						this.value = 0.0; 
+					}
+					$this.paint.radialGradient.setAttribute('cy', this.value);
+					centerPoint.setAttribute('y', MARGINY + SIZEY*this.value - STOP_RADIUS);
+				});
+				
+				var fx = $this.paint.radialGradient.getAttribute('fx');
+				if(!fx) fx = "1.0";
+				var fxInput = $('#'+id+'_jGraduate_fx');
+				fxInput.val(fx);
+				fxInput.change( function() {
+					if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
+						this.value = 1.0;
+					}
+					$this.paint.radialGradient.setAttribute('fx', this.value);
+					focusPoint.setAttribute('x', MARGINX + SIZEX*this.value - STOP_RADIUS);
+				});
+				
+				var fy = $this.paint.radialGradient.getAttribute('fy');
+				if(!fy) fy = "0.0";
+				var fyInput = $('#'+id+'_jGraduate_fy');
+				fyInput.val(fy);
+				fyInput.change( function() {
+					if (isNaN(parseFloat(this.value)) || this.value < 0.0 || this.value > 1.0) { 
+						this.value = 0.0;
+					}
+					$this.paint.radialGradient.setAttribute('fy', this.value);
+					focusPoint.setAttribute('y', MARGINY + SIZEY*this.value - STOP_RADIUS);
+				});      
+				
+				if(!showFocus) {
+					focusPoint.setAttribute('display', 'none');	
+					fxInput.val("");
+					fyInput.val("");
+				}
+
+				$("#" + id + "_jGraduate_match_ctr")[0].checked = !showFocus;
+				
+				var lastfx, lastfy;
+				
+				$("#" + id + "_jGraduate_match_ctr").change(function() {
+					showFocus = !this.checked;
+					focusPoint.setAttribute('display', showFocus?'inline':'none');
+					fxInput.val("");
+					fyInput.val("");
+					var grad = $this.paint.radialGradient;
+					if(!showFocus) {
+						lastfx = grad.getAttribute('fx');
+						lastfy = grad.getAttribute('fy');
+						grad.removeAttribute('fx');
+						grad.removeAttribute('fy');
+					} else {
+						var fx = lastfx || .5;
+						var fy = lastfy || .5;
+						grad.setAttribute('fx', fx);
+						grad.setAttribute('fy', fy);
+						fxInput.val(fx);
+						fyInput.val(fy);
+					}
+				});
+				
+				var stops = $this.paint.radialGradient.getElementsByTagNameNS(ns.svg, 'stop');
+				var numstops = stops.length;
+				// if there are not at least two stops, then 
+				if (numstops < 2) {
+					while (numstops < 2) {
+						$this.paint.radialGradient.appendChild( document.createElementNS(ns.svg, 'stop') );
+						++numstops;
+					}
+					stops = $this.paint.radialGradient.getElementsByTagNameNS(ns.svg, 'stop');
+				}
+				var radius = $this.paint.radialGradient.getAttribute('r')-0;
+				var radiusx = parseInt((245/2)*(radius)) - 4.5;
+				$('#' + id + '_jGraduate_RadiusArrows').css({'margin-left':radiusx});
+				$('#' + id + '_jGraduate_RadiusInput').val(parseInt(radius*100)).change(function(e) {
+					var x = this.value / 100;
+					if(x < 0.01) {
+						x = 0.01;
+					}
+					
+					$this.paint.radialGradient.setAttribute('r', x);
+					// Allow higher value, but pretend it's the max for the slider
+					if(x > 2) x = 2;
+					var posx = parseInt((245/2) * x) - 4.5;
+					$('#' + id + '_jGraduate_RadiusArrows').css({'margin-left':posx});
+					
+				});
+				
+				var setRgOpacitySlider = function(e, div) {
+					var offset = div.offset();
+					var x = (e.pageX - offset.left - parseInt(div.css('border-left-width')));
+					if (x > 255) x = 255;
+					if (x < 0) x = 0;
+					var posx = x - 4.5;
+					x /= 255;
+					$('#' + id + '_rg_jGraduate_AlphaArrows').css({'margin-left':posx});
+					$('#' + id + '_rg_jgraduate_rect').attr('fill-opacity', x);
+					x = parseInt(x*100);
+					$('#' + id + '_rg_jGraduate_OpacityInput').val(x);
+					$this.paint.alpha = x;
+				};
+				
+				// handle dragging on the opacity slider
+				var bSlidingOpacity = false;
+				$('#' + id + '_rg_jGraduate_Opacity').mousedown(function(evt) {
+					setRgOpacitySlider(evt, $(this));
+					bSlidingOpacity = true;
+					evt.preventDefault();
+				}).mousemove(function(evt) {
+					if (bSlidingOpacity) {
+						setRgOpacitySlider(evt, $(this));
+						evt.preventDefault();
+					}
+				}).mouseup(function(evt) {
+					setRgOpacitySlider(evt, $(this));
+					bSlidingOpacity = false;
+					evt.preventDefault();
+				});
+				
+				var setRadiusSlider = function(e, div) {
+					var offset = div.offset();
+					var x = (e.pageX - offset.left - parseInt(div.css('border-left-width')));
+					if (x > 245) x = 245;
+					if (x <= 1) x = 1;
+					var posx = x - 5;
+					x /= (245/2);
+					$('#' + id + '_jGraduate_RadiusArrows').css({'margin-left':posx});
+					$this.paint.radialGradient.setAttribute('r', x);
+					x = parseInt(x*100);
+					
+					$('#' + id + '_jGraduate_RadiusInput').val(x);
+				};
+				
+				// handle dragging on the radius slider
+				var bSlidingRadius = false;
+				$('#' + id + '_jGraduate_Radius').mousedown(function(evt) {
+					setRadiusSlider(evt, $(this));
+					bSlidingRadius = true;
+					evt.preventDefault();
+				}).mousemove(function(evt) {
+					if (bSlidingRadius) {
+						setRadiusSlider(evt, $(this));
+						evt.preventDefault();
+					}
+				}).mouseup(function(evt) {
+					setRadiusSlider(evt, $(this));
+					bSlidingRadius = false;
+					evt.preventDefault();
+				});
+				
+				
+				// handle dragging the stop around the swatch
+				var draggingStop = null;
+				var startx = -1, starty = -1;
+				// for whatever reason, Opera does not allow $('image.stop') here,
+				// and Firefox 1.5 does not allow $('.stop')
+				$('.stop, #color_picker_rg_jGraduate_GradContainer image').mousedown(function(evt) {
+					draggingStop = this;
+					startx = evt.clientX;
+					starty = evt.clientY;
+					evt.preventDefault();
+				});
+				$('#'+id+'_rg_jgraduate_svg').mousemove(function(evt) {
+					if (null != draggingStop) {
+						var dx = evt.clientX - startx;
+						var dy = evt.clientY - starty;
+						startx += dx;
+						starty += dy;
+						var x = parseFloat(draggingStop.getAttribute('x')) + dx;
+						var y = parseFloat(draggingStop.getAttribute('y')) + dy;
+	
+						// clamp stop to the swatch
+						if (x < MARGINX - STOP_RADIUS) x = MARGINX - STOP_RADIUS;
+						if (y < MARGINY - STOP_RADIUS) y = MARGINY - STOP_RADIUS;
+						if (x > MARGINX + SIZEX - STOP_RADIUS) x = MARGINX + SIZEX - STOP_RADIUS;
+						if (y > MARGINY + SIZEY - STOP_RADIUS) y = MARGINY + SIZEY - STOP_RADIUS;
+											
+						draggingStop.setAttribute('x', x);
+						draggingStop.setAttribute('y', y);
+	
+						// calculate stop offset            		
+						var fracx = (x - MARGINX + STOP_RADIUS)/SIZEX;
+						var fracy = (y - MARGINY + STOP_RADIUS)/SIZEY;
+						
+						
+						if (draggingStop.id == (id+'_center_pt')) {
+							cxInput.val(fracx);
+							cyInput.val(fracy);
+							$this.paint.radialGradient.setAttribute('cx', fracx);
+							$this.paint.radialGradient.setAttribute('cy', fracy);
+							
+							if(!showFocus) {
+								$this.paint.radialGradient.setAttribute('fx', fracx);
+								$this.paint.radialGradient.setAttribute('fy', fracy);
+							}
+						}
+						else {
+							fxInput.val(fracx);
+							fyInput.val(fracy);
+							$this.paint.radialGradient.setAttribute('fx', fracx);
+							$this.paint.radialGradient.setAttribute('fy', fracy);
+						}
+						
+						evt.preventDefault();
+					}
+				});
+				$('#'+id+'_rg_jgraduate_svg').mouseup(function(evt) {
+					draggingStop = null;
+				});
+				
+				var centerColor = stops[0].getAttribute('stop-color');
+				if(!centerColor) centerColor = '#000';
+				centerColorBox = $('#'+id+'_jGraduate_colorBoxCenter');
+				centerColorBox.css({'background-color':centerColor});
+	
+				var centerOpacity = stops[0].getAttribute('stop-opacity');
+				if(!centerOpacity) centerOpacity = '1.0';
+				$('#'+id+'jGraduate_centerOpacity').html( (centerOpacity*100)+'%' );
+	
+				var outerColor = stops[stops.length-1].getAttribute('stop-color');
+				if(!outerColor) outerColor = '#000';
+				outerColorBox = $('#'+id+'_jGraduate_colorBoxOuter');
+				outerColorBox.css({'background-color':outerColor});
+	
+				var outerOpacity = stops[stops.length-1].getAttribute('stop-opacity');
+				if(!outerOpacity) outerOpacity = '1.0';
+				$('#'+id+'rg_jGraduate_outerOpacity').html( (outerOpacity*100)+'%' );
+				
+				$('#'+id+'_jGraduate_colorBoxCenter').click(function() {
+					$('div.jGraduate_LightBox').show();			
+					var colorbox = $(this);
+					var thisAlpha = (parseFloat(centerOpacity)*255).toString(16);
+					while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
+					color = centerColor.substr(1) + thisAlpha;
+					$('#'+id+'_rg_jGraduate_stopPicker').css({'left': 100, 'bottom': 15}).jPicker({
+							window: { title: "Pick the center color and opacity for the gradient" },
+							images: { clientPath: $settings.images.clientPath },
+							color: { active: color, alphaSupport: true }
+						}, function(color){
+							centerColor = color.get_Hex() ? ('#'+color.get_Hex()) : "none";
+							centerOpacity = color.get_A() ? color.get_A()/100 : 1;
+							colorbox.css('background', centerColor);
+							$('#'+id+'_rg_jGraduate_centerOpacity').html(parseInt(centerOpacity*100)+'%');
+							stops[0].setAttribute('stop-color', centerColor);
+							stops[0].setAttribute('stop-opacity', centerOpacity);
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_rg_jGraduate_stopPicker').hide();
+						}, null, function() {
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_rg_jGraduate_stopPicker').hide();
+						});
+				});
+				$('#'+id+'_jGraduate_colorBoxOuter').click(function() {
+					$('div.jGraduate_LightBox').show();
+					var colorbox = $(this);
+					var thisAlpha = (parseFloat(outerOpacity)*255).toString(16);
+					while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
+					color = outerColor.substr(1) + thisAlpha;
+					$('#'+id+'_rg_jGraduate_stopPicker').css({'left': 100, 'top': 15}).jPicker({
+							window: { title: "Pick the outer color and opacity for the gradient" },
+							images: { clientPath: $settings.images.clientPath },
+							color: { active: color, alphaSupport: true }
+						}, function(color){
+							outerColor = color.get_Hex() ? ('#'+color.get_Hex()) : "none";
+							outerOpacity = color.get_A() ? color.get_A()/100 : 1;
+							colorbox.css('background', outerColor);
+							$('#'+id+'_jGraduate_outerOpacity').html(parseInt(outerOpacity*100)+'%');
+							stops[1].setAttribute('stop-color', outerColor);
+							stops[1].setAttribute('stop-opacity', outerOpacity);
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_rg_jGraduate_stopPicker').hide();
+						}, null, function() {
+							$('div.jGraduate_LightBox').hide();
+							$('#'+id+'_rg_jGraduate_stopPicker').hide();
+						});
+				});            
+				
+				// --------------
+				var thisAlpha = ($this.paint.alpha*255/100).toString(16);
 				while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
-				color = endColor.substr(1) + thisAlpha;
-				$('#'+id+'_jGraduate_stopPicker').css({'left': 100, 'top': 15}).jPicker({
-						window: { title: "Pick the end color and opacity for the gradient" },
+				color = $this.paint.solidColor == "none" ? "" : $this.paint.solidColor + thisAlpha;
+				colPicker.jPicker(
+					{
+						window: { title: $settings.window.pickerTitle },
 						images: { clientPath: $settings.images.clientPath },
 						color: { active: color, alphaSupport: true }
-					}, function(color){
-						endColor = color.get_Hex() ? ('#'+color.get_Hex()) : "none";
-						endOpacity = color.get_A() ? color.get_A()/100 : 1;
-						colorbox.css('background', endColor);
-						$('#'+id+'_jGraduate_endOpacity').html(parseInt(endOpacity*100)+'%');
-            			stops[1].setAttribute('stop-color', endColor);
-						stops[1].setAttribute('stop-opacity', endOpacity);
-						$('div.jGraduate_LightBox').hide();
-						$('#'+id+'_jGraduate_stopPicker').hide();
-					}, null, function() {
-						$('div.jGraduate_LightBox').hide();
-						$('#'+id+'_jGraduate_stopPicker').hide();
-					});
-			});            
-            
-			// --------------
-			var thisAlpha = ($this.paint.alpha*255/100).toString(16);
-			while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; }
-			color = $this.paint.solidColor == "none" ? "" : $this.paint.solidColor + thisAlpha;
-			colPicker.jPicker(
-				{
-					window: { title: $settings.window.pickerTitle },
-					images: { clientPath: $settings.images.clientPath },
-					color: { active: color, alphaSupport: true }
-				},
-				function(color) {
-					$this.paint.type = "solidColor";
-					$this.paint.alpha = color.get_A() ? color.get_A() : 100;
-					$this.paint.solidColor = color.get_Hex() ? color.get_Hex() : "none";
-					$this.paint.linearGradient = null;
-					okClicked(); 
-				},
-				null,
-				function(){ cancelClicked(); }
-				);
-				
-			$(idref + ' .jGraduate_tab_color').click( function(){
-				$(idref + ' .jGraduate_tab_lingrad').removeClass('jGraduate_tab_current');
-				$(idref + ' .jGraduate_tab_color').addClass('jGraduate_tab_current');
-				lgPicker.hide();
-				colPicker.show();
-			});
-			$(idref + ' .jGraduate_tab_lingrad').click( function(){
-				$(idref + ' .jGraduate_tab_color').removeClass('jGraduate_tab_current');
-				$(idref + ' .jGraduate_tab_lingrad').addClass('jGraduate_tab_current');
-				colPicker.hide();
-				lgPicker.show();
+					},
+					function(color) {
+						$this.paint.type = "solidColor";
+						$this.paint.alpha = color.get_A() ? color.get_A() : 100;
+						$this.paint.solidColor = color.get_Hex() ? color.get_Hex() : "none";
+						$this.paint.radialGradient = null;
+						okClicked(); 
+					},
+					null,
+					function(){ cancelClicked(); }
+					);
+			}());	
+			
+			var tabs = $(idref + ' .jGraduate_tabs li');
+			tabs.click(function() {
+				tabs.removeClass('jGraduate_tab_current');
+				$(this).addClass('jGraduate_tab_current');
+				$(idref + " > div").hide();
+				$(idref + ' .jGraduate_' +  $(this).attr('data-type') + 'Pick').show();
 			});
 			
-			if ($this.paint.type == "linearGradient") {
-				lgPicker.show();
-				colPicker.hide();
-				$(idref + ' .jGraduate_tab_color').removeClass('jGraduate_tab_current');
-				$(idref + ' .jGraduate_tab_lingrad').addClass('jGraduate_tab_current');				
+			$(idref + " > div").hide();
+			tabs.removeClass('jGraduate_tab_current');
+			var tab;
+			switch ( $this.paint.type ) {
+				case 'linearGradient':
+					tab = $(idref + ' .jGraduate_tab_lingrad');
+					break;
+				case 'radialGradient':
+					tab = $(idref + ' .jGraduate_tab_radgrad');
+					break;
+				default:
+					tab = $(idref + ' .jGraduate_tab_color');
+					break;
 			}
-			else {
-				colPicker.show();
-				lgPicker.hide();
-				$(idref + ' .jGraduate_tab_color').addClass('jGraduate_tab_current');
-				$(idref + ' .jGraduate_tab_lingrad').removeClass('jGraduate_tab_current');				
-			}
+			tab.addClass('jGraduate_tab_current').click();	
 
 			$this.show();
 		});
 	};
+})();
\ No newline at end of file
--- a/htdocs/svg-edit/editor/jquery-ui/jquery-ui-1.7.2.custom.min.js	Fri Apr 23 22:29:49 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * jQuery UI 1.7.2
- *
- * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI
- */
-jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/*
- * jQuery UI Draggable 1.7.2
- *
- * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Draggables
- *
- * Depends:
- *	ui.core.js
- */
-(function(a){a.widget("ui.draggable",a.extend({},a.ui.mouse,{_init:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy()},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;if(c.cursorAt){this._adjustOffsetFromHelper(c.cursorAt)}if(c.containment){this._setContainment()}this._trigger("start",b);this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();this._trigger("drag",b,c);this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){b._trigger("stop",c);b._clear()})}else{this._trigger("stop",c);this._clear()}return false},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs}}}));a.extend(a.ui.draggable,{version:"1.7.2",eventPrefix:"drag",defaults:{addClasses:true,appendTo:"parent",axis:false,cancel:":input,option",connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false}});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(b,c){var e=a(this).data("draggable").options;var d=a.makeArray(a(e.stack.group)).sort(function(g,f){return(parseInt(a(g).css("zIndex"),10)||e.stack.min)-(parseInt(a(f).css("zIndex"),10)||e.stack.min)});a(d).each(function(f){this.style.zIndex=e.stack.min+f});this[0].style.zIndex=e.stack.min+d.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);;
-/* jQuery UI Slider 1.7.2
- *
- * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://docs.jquery.com/UI/Slider
- *
- * Depends:
- *	ui.core.js
- */
-(function(a){a.widget("ui.slider",a.extend({},a.ui.mouse,{_init:function(){var b=this,c=this.options;this._keySliding=false;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");this.range=a([]);if(c.range){if(c.range===true){this.range=a("<div></div>");if(!c.values){c.values=[this._valueMin(),this._valueMin()]}if(c.values.length&&c.values.length!=2){c.values=[c.values[0],c.values[0]]}}else{this.range=a("<div></div>")}this.range.appendTo(this.element).addClass("ui-slider-range");if(c.range=="min"||c.range=="max"){this.range.addClass("ui-slider-range-"+c.range)}this.range.addClass("ui-widget-header")}if(a(".ui-slider-handle",this.element).length==0){a('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}if(c.values&&c.values.length){while(a(".ui-slider-handle",this.element).length<c.values.length){a('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}}this.handles=a(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(d){d.preventDefault()}).hover(function(){if(!c.disabled){a(this).addClass("ui-state-hover")}},function(){a(this).removeClass("ui-state-hover")}).focus(function(){if(!c.disabled){a(".ui-slider .ui-state-focus").removeClass("ui-state-focus");a(this).addClass("ui-state-focus")}else{a(this).blur()}}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(d){a(this).data("index.ui-slider-handle",d)});this.handles.keydown(function(i){var f=true;var e=a(this).data("index.ui-slider-handle");if(b.options.disabled){return}switch(i.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:f=false;if(!b._keySliding){b._keySliding=true;a(this).addClass("ui-state-active");b._start(i,e)}break}var g,d,h=b._step();if(b.options.values&&b.options.values.length){g=d=b.values(e)}else{g=d=b.value()}switch(i.keyCode){case a.ui.keyCode.HOME:d=b._valueMin();break;case a.ui.keyCode.END:d=b._valueMax();break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g==b._valueMax()){return}d=g+h;break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g==b._valueMin()){return}d=g-h;break}b._slide(i,e,d);return f}).keyup(function(e){var d=a(this).data("index.ui-slider-handle");if(b._keySliding){b._stop(e,d);b._change(e,d);b._keySliding=false;a(this).removeClass("ui-state-active")}});this._refreshValue()},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy()},_mouseCapture:function(d){var e=this.options;if(e.disabled){return false}this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();var h={x:d.pageX,y:d.pageY};var j=this._normValueFromMouse(h);var c=this._valueMax()-this._valueMin()+1,f;var k=this,i;this.handles.each(function(l){var m=Math.abs(j-k.values(l));if(c>m){c=m;f=a(this);i=l}});if(e.range==true&&this.values(1)==e.min){f=a(this.handles[++i])}this._start(d,i);k._handleIndex=i;f.addClass("ui-state-active").focus();var g=f.offset();var b=!a(d.target).parents().andSelf().is(".ui-slider-handle");this._clickOffset=b?{left:0,top:0}:{left:d.pageX-g.left-(f.width()/2),top:d.pageY-g.top-(f.height()/2)-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};j=this._normValueFromMouse(h);this._slide(d,i,j);return true},_mouseStart:function(b){return true},_mouseDrag:function(d){var b={x:d.pageX,y:d.pageY};var c=this._normValueFromMouse(b);this._slide(d,this._handleIndex,c);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._handleIndex=null;this._clickOffset=null;return false},_detectOrientation:function(){this.orientation=this.options.orientation=="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(d){var c,h;if("horizontal"==this.orientation){c=this.elementSize.width;h=d.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{c=this.elementSize.height;h=d.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}var f=(h/c);if(f>1){f=1}if(f<0){f=0}if("vertical"==this.orientation){f=1-f}var e=this._valueMax()-this._valueMin(),i=f*e,b=i%this.options.step,g=this._valueMin()+i-b;if(b>(this.options.step/2)){g+=this.options.step}return parseFloat(g.toFixed(5))},_start:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("start",d,b)},_slide:function(f,e,d){var g=this.handles[e];if(this.options.values&&this.options.values.length){var b=this.values(e?0:1);if((this.options.values.length==2&&this.options.range===true)&&((e==0&&d>b)||(e==1&&d<b))){d=b}if(d!=this.values(e)){var c=this.values();c[e]=d;var h=this._trigger("slide",f,{handle:this.handles[e],value:d,values:c});var b=this.values(e?0:1);if(h!==false){this.values(e,d,(f.type=="mousedown"&&this.options.animate),true)}}}else{if(d!=this.value()){var h=this._trigger("slide",f,{handle:this.handles[e],value:d});if(h!==false){this._setData("value",d,(f.type=="mousedown"&&this.options.animate))}}}},_stop:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("stop",d,b)},_change:function(d,c){var b={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){b.value=this.values(c);b.values=this.values()}this._trigger("change",d,b)},value:function(b){if(arguments.length){this._setData("value",b);this._change(null,0)}return this._value()},values:function(b,e,c,d){if(arguments.length>1){this.options.values[b]=e;this._refreshValue(c);if(!d){this._change(null,b)}}if(arguments.length){if(this.options.values&&this.options.values.length){return this._values(b)}else{return this.value()}}else{return this._values()}},_setData:function(b,d,c){a.widget.prototype._setData.apply(this,arguments);switch(b){case"disabled":if(d){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled")}else{this.handles.removeAttr("disabled")}case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue(c);break;case"value":this._refreshValue(c);break}},_step:function(){var b=this.options.step;return b},_value:function(){var b=this.options.value;if(b<this._valueMin()){b=this._valueMin()}if(b>this._valueMax()){b=this._valueMax()}return b},_values:function(b){if(arguments.length){var c=this.options.values[b];if(c<this._valueMin()){c=this._valueMin()}if(c>this._valueMax()){c=this._valueMax()}return c}else{return this.options.values}},_valueMin:function(){var b=this.options.min;return b},_valueMax:function(){var b=this.options.max;return b},_refreshValue:function(c){var f=this.options.range,d=this.options,l=this;if(this.options.values&&this.options.values.length){var i,h;this.handles.each(function(p,n){var o=(l.values(p)-l._valueMin())/(l._valueMax()-l._valueMin())*100;var m={};m[l.orientation=="horizontal"?"left":"bottom"]=o+"%";a(this).stop(1,1)[c?"animate":"css"](m,d.animate);if(l.options.range===true){if(l.orientation=="horizontal"){(p==0)&&l.range.stop(1,1)[c?"animate":"css"]({left:o+"%"},d.animate);(p==1)&&l.range[c?"animate":"css"]({width:(o-lastValPercent)+"%"},{queue:false,duration:d.animate})}else{(p==0)&&l.range.stop(1,1)[c?"animate":"css"]({bottom:(o)+"%"},d.animate);(p==1)&&l.range[c?"animate":"css"]({height:(o-lastValPercent)+"%"},{queue:false,duration:d.animate})}}lastValPercent=o})}else{var j=this.value(),g=this._valueMin(),k=this._valueMax(),e=k!=g?(j-g)/(k-g)*100:0;var b={};b[l.orientation=="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[c?"animate":"css"](b,d.animate);(f=="min")&&(this.orientation=="horizontal")&&this.range.stop(1,1)[c?"animate":"css"]({width:e+"%"},d.animate);(f=="max")&&(this.orientation=="horizontal")&&this.range[c?"animate":"css"]({width:(100-e)+"%"},{queue:false,duration:d.animate});(f=="min")&&(this.orientation=="vertical")&&this.range.stop(1,1)[c?"animate":"css"]({height:e+"%"},d.animate);(f=="max")&&(this.orientation=="vertical")&&this.range[c?"animate":"css"]({height:(100-e)+"%"},{queue:false,duration:d.animate})}}}));a.extend(a.ui.slider,{getter:"value values",version:"1.7.2",eventPrefix:"slide",defaults:{animate:false,delay:0,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null}})})(jQuery);;
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/jquery-ui/jquery-ui-1.8.custom.min.js	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,84 @@
+/*!
+ * jQuery UI 1.8
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI
+ *//*
+ * jQuery UI 1.8
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI
+ */
+jQuery.ui||(function(a){a.ui={version:"1.8",plugin:{add:function(c,d,f){var e=a.ui[c].prototype;for(var b in f){e.plugins[b]=e.plugins[b]||[];e.plugins[b].push([d,f[b]])}},call:function(b,d,c){var f=b.plugins[d];if(!f||!b.element[0].parentNode){return}for(var e=0;e<f.length;e++){if(b.options[f[e][0]]){f[e][1].apply(b.element,c)}}}},contains:function(d,c){return document.compareDocumentPosition?d.compareDocumentPosition(c)&16:d!==c&&d.contains(c)},hasScroll:function(e,c){if(a(e).css("overflow")=="hidden"){return false}var b=(c&&c=="left")?"scrollLeft":"scrollTop",d=false;if(e[b]>0){return true}e[b]=1;d=(e[b]>0);e[b]=0;return d},isOverAxis:function(c,b,d){return(c>b)&&(c<(b+d))},isOver:function(g,c,f,e,b,d){return a.ui.isOverAxis(g,f,b)&&a.ui.isOverAxis(c,e,d)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};a.fn.extend({_focus:a.fn.focus,focus:function(b,c){return typeof b==="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus();(c&&c.call(d))},b)}):this._focus.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var b;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){b=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{b=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!b.length?a(document):b},zIndex:function(e){if(e!==undefined){return this.css("zIndex",e)}if(this.length){var c=a(this[0]),b,d;while(c.length&&c[0]!==document){b=c.css("position");if(b=="absolute"||b=="relative"||b=="fixed"){d=parseInt(c.css("zIndex"));if(!isNaN(d)&&d!=0){return d}}c=c.parent()}}return 0}});a.extend(a.expr[":"],{data:function(d,c,b){return !!a.data(d,b[3])},focusable:function(c){var d=c.nodeName.toLowerCase(),b=a.attr(c,"tabindex");return(/input|select|textarea|button|object/.test(d)?!c.disabled:"a"==d||"area"==d?c.href||!isNaN(b):!isNaN(b))&&!a(c)["area"==d?"parents":"closest"](":hidden").length},tabbable:function(c){var b=a.attr(c,"tabindex");return(isNaN(b)||b>=0)&&a(c).is(":focusable")}})})(jQuery);;/*!
+ * jQuery UI Widget 1.8
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Widget
+ *//*
+ * jQuery UI Widget 1.8
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b){var a=b.fn.remove;b.fn.remove=function(c,d){return this.each(function(){if(!d){if(!c||b.filter(c,[this]).length){b("*",this).add(this).each(function(){b(this).triggerHandler("remove")})}}return a.call(b(this),c,d)})};b.widget=function(d,f,c){var e=d.split(".")[0],h;d=d.split(".")[1];h=e+"-"+d;if(!c){c=f;f=b.Widget}b.expr[":"][h]=function(i){return !!b.data(i,d)};b[e]=b[e]||{};b[e][d]=function(i,j){if(arguments.length){this._createWidget(i,j)}};var g=new f();g.options=b.extend({},g.options);b[e][d].prototype=b.extend(true,g,{namespace:e,widgetName:d,widgetEventPrefix:b[e][d].prototype.widgetEventPrefix||d,widgetBaseClass:h},c);b.widget.bridge(d,b[e][d])};b.widget.bridge=function(d,c){b.fn[d]=function(g){var e=typeof g==="string",f=Array.prototype.slice.call(arguments,1),h=this;g=!e&&f.length?b.extend.apply(null,[true,g].concat(f)):g;if(e&&g.substring(0,1)==="_"){return h}if(e){this.each(function(){var i=b.data(this,d),j=i&&b.isFunction(i[g])?i[g].apply(i,f):i;if(j!==i&&j!==undefined){h=j;return false}})}else{this.each(function(){var i=b.data(this,d);if(i){if(g){i.option(g)}i._init()}else{b.data(this,d,new c(g,this))}})}return h}};b.Widget=function(c,d){if(arguments.length){this._createWidget(c,d)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(d,e){this.element=b(e).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(e)[this.widgetName],d);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled")},widget:function(){return this.element},option:function(e,f){var d=e,c=this;if(arguments.length===0){return b.extend({},c.options)}if(typeof e==="string"){if(f===undefined){return this.options[e]}d={};d[e]=f}b.each(d,function(g,h){c._setOption(g,h)});return c},_setOption:function(c,d){this.options[c]=d;if(c==="disabled"){this.widget()[d?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",d)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(d,e,f){var h=this.options[d];e=b.Event(e);e.type=(d===this.widgetEventPrefix?d:this.widgetEventPrefix+d).toLowerCase();f=f||{};if(e.originalEvent){for(var c=b.event.props.length,g;c;){g=b.event.props[--c];e[g]=e.originalEvent[g]}}this.element.trigger(e,f);return !(b.isFunction(h)&&h.call(this.element[0],e,f)===false||e.isDefaultPrevented())}}})(jQuery);;/*!
+ * jQuery UI Mouse 1.8
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ *//*
+ * jQuery UI Mouse 1.8
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */
+(function(a){a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(c){return b._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(b._preventClickEvent){b._preventClickEvent=false;c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(d){d.originalEvent=d.originalEvent||{};if(d.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(d));this._mouseDownEvent=d;var c=this,e=(d.which==1),b=(typeof this.options.cancel=="string"?a(d.target).parents().add(d.target).filter(this.options.cancel).length:false);if(!e||b||!this._mouseCapture(d)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(d)!==false);if(!this._mouseStarted){d.preventDefault();return true}}this._mouseMoveDelegate=function(f){return c._mouseMove(f)};this._mouseUpDelegate=function(f){return c._mouseUp(f)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(a.browser.safari||d.preventDefault());d.originalEvent.mouseHandled=true;return true},_mouseMove:function(b){if(a.browser.msie&&!b.button){return this._mouseUp(b)}if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,b)!==false);(this._mouseStarted?this._mouseDrag(b):this._mouseUp(b))}return !this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(b.target==this._mouseDownEvent.target);this._mouseStop(b)}return false},_mouseDistanceMet:function(b){return(Math.max(Math.abs(this._mouseDownEvent.pageX-b.pageX),Math.abs(this._mouseDownEvent.pageY-b.pageY))>=this.options.distance)},_mouseDelayMet:function(b){return this.mouseDelayMet},_mouseStart:function(b){},_mouseDrag:function(b){},_mouseStop:function(b){},_mouseCapture:function(b){return true}})})(jQuery);;/*
+ * jQuery UI Draggable 1.8
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;(c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt));if(c.containment){this._setContainment()}if(this._trigger("start",b)===false){this._clear();return false}this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();if(this._trigger("drag",b,c)===false){this._mouseUp({});return false}this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode){return false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){if(b._trigger("stop",c)!==false){b._clear()}})}else{if(this._trigger("stop",c)!==false){this._clear()}}return false},cancel:function(){if(this.helper.is(".ui-draggable-dragging")){this._mouseUp({})}else{this._clear()}return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(typeof b=="string"){b=b.split(" ")}if(a.isArray(b)){b={left:+b[0],top:+b[1]||0}}if("left" in b){this.offset.click.left=b.left+this.margins.left}if("right" in b){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if("top" in b){this.offset.click.top=b.top+this.margins.top}if("bottom" in b){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8"});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(c,d){var f=a(this).data("draggable").options;var e=a.makeArray(a(f.stack)).sort(function(h,g){return(parseInt(a(h).css("zIndex"),10)||0)-(parseInt(a(g).css("zIndex"),10)||0)});if(!e.length){return}var b=parseInt(e[0].style.zIndex)||0;a(e).each(function(g){this.style.zIndex=b+g});this[0].style.zIndex=b+e.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);;/*
+ * jQuery UI Slider 1.8
+ *
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */(function(b){var a=5;b.widget("ui.slider",b.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var c=this,d=this.options;this._keySliding=false;this._mouseSliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");if(d.disabled){this.element.addClass("ui-slider-disabled ui-disabled")}this.range=b([]);if(d.range){if(d.range===true){this.range=b("<div></div>");if(!d.values){d.values=[this._valueMin(),this._valueMin()]}if(d.values.length&&d.values.length!=2){d.values=[d.values[0],d.values[0]]}}else{this.range=b("<div></div>")}this.range.appendTo(this.element).addClass("ui-slider-range");if(d.range=="min"||d.range=="max"){this.range.addClass("ui-slider-range-"+d.range)}this.range.addClass("ui-widget-header")}if(b(".ui-slider-handle",this.element).length==0){b('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}if(d.values&&d.values.length){while(b(".ui-slider-handle",this.element).length<d.values.length){b('<a href="#"></a>').appendTo(this.element).addClass("ui-slider-handle")}}this.handles=b(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).hover(function(){if(!d.disabled){b(this).addClass("ui-state-hover")}},function(){b(this).removeClass("ui-state-hover")}).focus(function(){if(!d.disabled){b(".ui-slider .ui-state-focus").removeClass("ui-state-focus");b(this).addClass("ui-state-focus")}else{b(this).blur()}}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(e){b(this).data("index.ui-slider-handle",e)});this.handles.keydown(function(j){var g=true;var f=b(this).data("index.ui-slider-handle");if(c.options.disabled){return}switch(j.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:g=false;if(!c._keySliding){c._keySliding=true;b(this).addClass("ui-state-active");c._start(j,f)}break}var h,e,i=c._step();if(c.options.values&&c.options.values.length){h=e=c.values(f)}else{h=e=c.value()}switch(j.keyCode){case b.ui.keyCode.HOME:e=c._valueMin();break;case b.ui.keyCode.END:e=c._valueMax();break;case b.ui.keyCode.PAGE_UP:e=h+((c._valueMax()-c._valueMin())/a);break;case b.ui.keyCode.PAGE_DOWN:e=h-((c._valueMax()-c._valueMin())/a);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(h==c._valueMax()){return}e=h+i;break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(h==c._valueMin()){return}e=h-i;break}c._slide(j,f,e);return g}).keyup(function(f){var e=b(this).data("index.ui-slider-handle");if(c._keySliding){c._keySliding=false;c._stop(f,e);c._change(f,e);b(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(e){var f=this.options;if(f.disabled){return false}this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();var i={x:e.pageX,y:e.pageY};var k=this._normValueFromMouse(i);var d=this._valueMax()-this._valueMin()+1,g;var l=this,j;this.handles.each(function(m){var n=Math.abs(k-l.values(m));if(d>n){d=n;g=b(this);j=m}});if(f.range==true&&this.values(1)==f.min){g=b(this.handles[++j])}this._start(e,j);this._mouseSliding=true;l._handleIndex=j;g.addClass("ui-state-active").focus();var h=g.offset();var c=!b(e.target).parents().andSelf().is(".ui-slider-handle");this._clickOffset=c?{left:0,top:0}:{left:e.pageX-h.left-(g.width()/2),top:e.pageY-h.top-(g.height()/2)-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)};k=this._normValueFromMouse(i);this._slide(e,j,k);this._animateOff=true;return true},_mouseStart:function(c){return true},_mouseDrag:function(e){var c={x:e.pageX,y:e.pageY};var d=this._normValueFromMouse(c);this._slide(e,this._handleIndex,d);return false},_mouseStop:function(c){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(c,this._handleIndex);this._change(c,this._handleIndex);this._handleIndex=null;this._clickOffset=null;this._animateOff=false;return false},_detectOrientation:function(){this.orientation=this.options.orientation=="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var d,i;if("horizontal"==this.orientation){d=this.elementSize.width;i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{d=this.elementSize.height;i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}var g=(i/d);if(g>1){g=1}if(g<0){g=0}if("vertical"==this.orientation){g=1-g}var f=this._valueMax()-this._valueMin(),j=g*f,c=j%this.options.step,h=this._valueMin()+j-c;if(c>(this.options.step/2)){h+=this.options.step}return parseFloat(h.toFixed(5))},_start:function(e,d){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("start",e,c)},_slide:function(g,f,e){var h=this.handles[f];if(this.options.values&&this.options.values.length){var c=this.values(f?0:1);if((this.options.values.length==2&&this.options.range===true)&&((f==0&&e>c)||(f==1&&e<c))){e=c}if(e!=this.values(f)){var d=this.values();d[f]=e;var i=this._trigger("slide",g,{handle:this.handles[f],value:e,values:d});var c=this.values(f?0:1);if(i!==false){this.values(f,e,true)}}}else{if(e!=this.value()){var i=this._trigger("slide",g,{handle:this.handles[f],value:e});if(i!==false){this.value(e)}}}},_stop:function(e,d){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("stop",e,c)},_change:function(e,d){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[d],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(d);c.values=this.values()}this._trigger("change",e,c)}},value:function(c){if(arguments.length){this.options.value=this._trimValue(c);this._refreshValue();this._change(null,0)}return this._value()},values:function(e,h){if(arguments.length>1){this.options.values[e]=this._trimValue(h);this._refreshValue();this._change(null,e)}if(arguments.length){if(b.isArray(arguments[0])){var g=this.options.values,d=arguments[0];for(var f=0,c=g.length;f<c;f++){g[f]=this._trimValue(d[f]);this._change(null,f)}this._refreshValue()}else{if(this.options.values&&this.options.values.length){return this._values(e)}else{return this.value()}}}else{return this._values()}},_setOption:function(d,e){var c,f=0;if(jQuery.isArray(this.options.values)){f=this.options.values.length}b.Widget.prototype._setOption.apply(this,arguments);switch(d){case"disabled":if(e){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case"value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case"values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c++){this._change(null,c)}this._animateOff=false;break}},_step:function(){var c=this.options.step;return c},_value:function(){var c=this.options.value;c=this._trimValue(c);return c},_values:function(d){if(arguments.length){var g=this.options.values[d];g=this._trimValue(g);return g}else{var f=this.options.values.slice();for(var e=0,c=f.length;e<c;e++){f[e]=this._trimValue(f[e])}return f}},_trimValue:function(c){if(c<this._valueMin()){c=this._valueMin()}if(c>this._valueMax()){c=this._valueMax()}return c},_valueMin:function(){var c=this.options.min;return c},_valueMax:function(){var c=this.options.max;return c},_refreshValue:function(){var g=this.options.range,e=this.options,m=this;var d=(!this._animateOff)?e.animate:false;if(this.options.values&&this.options.values.length){var j,i;this.handles.each(function(q,o){var p=(m.values(q)-m._valueMin())/(m._valueMax()-m._valueMin())*100;var n={};n[m.orientation=="horizontal"?"left":"bottom"]=p+"%";b(this).stop(1,1)[d?"animate":"css"](n,e.animate);if(m.options.range===true){if(m.orientation=="horizontal"){(q==0)&&m.range.stop(1,1)[d?"animate":"css"]({left:p+"%"},e.animate);(q==1)&&m.range[d?"animate":"css"]({width:(p-lastValPercent)+"%"},{queue:false,duration:e.animate})}else{(q==0)&&m.range.stop(1,1)[d?"animate":"css"]({bottom:(p)+"%"},e.animate);(q==1)&&m.range[d?"animate":"css"]({height:(p-lastValPercent)+"%"},{queue:false,duration:e.animate})}}lastValPercent=p})}else{var k=this.value(),h=this._valueMin(),l=this._valueMax(),f=l!=h?(k-h)/(l-h)*100:0;var c={};c[m.orientation=="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[d?"animate":"css"](c,e.animate);(g=="min")&&(this.orientation=="horizontal")&&this.range.stop(1,1)[d?"animate":"css"]({width:f+"%"},e.animate);(g=="max")&&(this.orientation=="horizontal")&&this.range[d?"animate":"css"]({width:(100-f)+"%"},{queue:false,duration:e.animate});(g=="min")&&(this.orientation=="vertical")&&this.range.stop(1,1)[d?"animate":"css"]({height:f+"%"},e.animate);(g=="max")&&(this.orientation=="vertical")&&this.range[d?"animate":"css"]({height:(100-f)+"%"},{queue:false,duration:e.animate})}}});b.extend(b.ui.slider,{version:"1.8"})})(jQuery);;
\ No newline at end of file
--- a/htdocs/svg-edit/editor/jquery.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/jquery.js	Fri Apr 23 22:38:00 2010 +0200
@@ -1,5 +1,5 @@
 /*!
- * jQuery JavaScript Library v1.4.1
+ * jQuery JavaScript Library v1.4.2
  * http://jquery.com/
  *
  * Copyright 2010, John Resig
@@ -11,142 +11,144 @@
  * Copyright 2010, The Dojo Foundation
  * Released under the MIT, BSD, and GPL Licenses.
  *
- * Date: Mon Jan 25 19:43:33 2010 -0500
+ * Date: Sat Feb 13 22:33:48 2010 -0500
  */
-(function(z,v){function la(){if(!c.isReady){try{r.documentElement.doScroll("left")}catch(a){setTimeout(la,1);return}c.ready()}}function Ma(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,i){var j=a.length;if(typeof b==="object"){for(var n in b)X(a,n,b[n],f,e,d);return a}if(d!==v){f=!i&&f&&c.isFunction(d);for(n=0;n<j;n++)e(a[n],b,f?d.call(a[n],n,e(a[n],b)):d,i);return a}return j?
-e(a[0],b):null}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function ma(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function na(a){var b,d=[],f=[],e=arguments,i,j,n,o,m,s,x=c.extend({},c.data(this,"events").live);if(!(a.button&&a.type==="click")){for(o in x){j=x[o];if(j.live===a.type||j.altLive&&c.inArray(a.type,j.altLive)>-1){i=j.data;i.beforeFilter&&i.beforeFilter[a.type]&&!i.beforeFilter[a.type](a)||f.push(j.selector)}else delete x[o]}i=c(a.target).closest(f,
-a.currentTarget);m=0;for(s=i.length;m<s;m++)for(o in x){j=x[o];n=i[m].elem;f=null;if(i[m].selector===j.selector){if(j.live==="mouseenter"||j.live==="mouseleave")f=c(a.relatedTarget).closest(j.selector)[0];if(!f||f!==n)d.push({elem:n,fn:j})}}m=0;for(s=d.length;m<s;m++){i=d[m];a.currentTarget=i.elem;a.data=i.fn.data;if(i.fn.apply(i.elem,e)===false){b=false;break}}return b}}function oa(a,b){return"live."+(a?a+".":"")+b.replace(/\./g,"`").replace(/ /g,"&")}function pa(a){return!a||!a.parentNode||a.parentNode.nodeType===
-11}function qa(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var i in f)for(var j in f[i])c.event.add(this,i,f[i][j],f[i][j].data)}}})}function ra(a,b,d){var f,e,i;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&a[0].indexOf("<option")<0&&(c.support.checkClone||!sa.test(a[0]))){e=true;if(i=c.fragments[a[0]])if(i!==1)f=i}if(!f){b=b&&b[0]?b[0].ownerDocument||b[0]:r;f=b.createDocumentFragment();
-c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=i?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(ta.concat.apply([],ta.slice(0,b)),function(){d[this]=a});return d}function ua(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Na=z.jQuery,Oa=z.$,r=z.document,S,Pa=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Qa=/^.[^:#\[\.,]*$/,Ra=/\S/,Sa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Ta=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,O=navigator.userAgent,
-va=false,P=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,Q=Array.prototype.slice,wa=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Pa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:r;if(a=Ta.exec(a))if(c.isPlainObject(b)){a=[r.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=ra([d[1]],
-[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}}else{if(b=r.getElementById(d[2])){if(b.id!==d[2])return S.find(a);this.length=1;this[0]=b}this.context=r;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=r;a=r.getElementsByTagName(a)}else return!b||b.jquery?(b||S).find(a):c(b).find(a);else if(c.isFunction(a))return S.ready(a);if(a.selector!==v){this.selector=a.selector;this.context=a.context}return c.isArray(a)?this.setArray(a):c.makeArray(a,
-this)},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length},toArray:function(){return Q.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){a=c(a||null);a.prevObject=this;a.context=this.context;if(b==="find")a.selector=this.selector+(this.selector?" ":"")+d;else if(b)a.selector=this.selector+"."+b+"("+d+")";return a},setArray:function(a){this.length=0;ba.apply(this,a);return this},each:function(a,b){return c.each(this,
-a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(r,c);else P&&P.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(Q.apply(this,arguments),"slice",Q.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};
-c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,i,j,n;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(i in e){j=a[i];n=e[i];if(a!==n)if(f&&n&&(c.isPlainObject(n)||c.isArray(n))){j=j&&(c.isPlainObject(j)||c.isArray(j))?j:c.isArray(n)?[]:{};a[i]=c.extend(f,j,n)}else if(n!==v)a[i]=n}return a};c.extend({noConflict:function(a){z.$=
-Oa;if(a)z.jQuery=Na;return c},isReady:false,ready:function(){if(!c.isReady){if(!r.body)return setTimeout(c.ready,13);c.isReady=true;if(P){for(var a,b=0;a=P[b++];)a.call(r,c);P=null}c.fn.triggerHandler&&c(r).triggerHandler("ready")}},bindReady:function(){if(!va){va=true;if(r.readyState==="complete")return c.ready();if(r.addEventListener){r.addEventListener("DOMContentLoaded",L,false);z.addEventListener("load",c.ready,false)}else if(r.attachEvent){r.attachEvent("onreadystatechange",L);z.attachEvent("onload",
-c.ready);var a=false;try{a=z.frameElement==null}catch(b){}r.documentElement.doScroll&&a&&la()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,"isPrototypeOf"))return false;var b;for(b in a);return b===v||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;
-return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return z.JSON&&z.JSON.parse?z.JSON.parse(a):(new Function("return "+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Ra.test(a)){var b=r.getElementsByTagName("head")[0]||
-r.documentElement,d=r.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(r.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,i=a.length,j=i===v||c.isFunction(a);if(d)if(j)for(f in a){if(b.apply(a[f],d)===false)break}else for(;e<i;){if(b.apply(a[e++],d)===false)break}else if(j)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=
-a[0];e<i&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Sa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==
-v;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,i=a.length;e<i;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,i=0,j=a.length;i<j;i++){e=b(a[i],i,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=v}else if(b&&!c.isFunction(b)){d=b;b=v}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},
-uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});O=c.uaMatch(O);if(O.browser){c.browser[O.browser]=true;c.browser.version=O.version}if(c.browser.webkit)c.browser.safari=true;if(wa)c.inArray=function(a,b){return wa.call(b,a)};S=c(r);if(r.addEventListener)L=function(){r.removeEventListener("DOMContentLoaded",
-L,false);c.ready()};else if(r.attachEvent)L=function(){if(r.readyState==="complete"){r.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=r.documentElement,b=r.createElement("script"),d=r.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=d.getElementsByTagName("*"),i=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!i)){c.support=
-{leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(i.getAttribute("style")),hrefNormalized:i.getAttribute("href")==="/a",opacity:/^0.55$/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:r.createElement("select").appendChild(r.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};
-b.type="text/javascript";try{b.appendChild(r.createTextNode("window."+f+"=1;"))}catch(j){}a.insertBefore(b,a.firstChild);if(z[f]){c.support.scriptEval=true;delete z[f]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function n(){c.support.noCloneEvent=false;d.detachEvent("onclick",n)});d.cloneNode(true).fireEvent("onclick")}d=r.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=r.createDocumentFragment();a.appendChild(d.firstChild);
-c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var n=r.createElement("div");n.style.width=n.style.paddingLeft="1px";r.body.appendChild(n);c.boxModel=c.support.boxModel=n.offsetWidth===2;r.body.removeChild(n).style.display="none"});a=function(n){var o=r.createElement("div");n="on"+n;var m=n in o;if(!m){o.setAttribute(n,"return;");m=typeof o[n]==="function"}return m};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=i=null}})();c.props=
-{"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ua=0,xa={},Va={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var f=a[G],e=c.cache;if(!b&&!f)return null;f||(f=++Ua);if(typeof b==="object"){a[G]=f;e=e[f]=c.extend(true,
-{},b)}else e=e[f]?e[f]:typeof d==="undefined"?Va:(e[f]={});if(d!==v){a[G]=f;e[b]=d}return typeof b==="string"?e[b]:e}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{try{delete a[G]}catch(i){a.removeAttribute&&a.removeAttribute(G)}delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,
-a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===v){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===v&&this.length)f=c.data(this[0],a);return f===v&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);
-return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===v)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||
-a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var ya=/[\n\t]/g,ca=/\s+/,Wa=/\r/g,Xa=/href|src|style/,Ya=/(button|input)/i,Za=/(button|input|object|select|textarea)/i,$a=/^(a|area)$/i,za=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=
-c(this);m.addClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className)for(var i=" "+e.className+" ",j=0,n=b.length;j<n;j++){if(i.indexOf(" "+b[j]+" ")<0)e.className+=" "+b[j]}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=c(this);m.removeClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string"||a===v)for(var b=(a||"").split(ca),
-d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var i=(" "+e.className+" ").replace(ya," "),j=0,n=b.length;j<n;j++)i=i.replace(" "+b[j]+" "," ");e.className=i.substring(1,i.length-1)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var i=c(this);i.toggleClass(a.call(this,e,i.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,i=0,j=c(this),n=b,o=
-a.split(ca);e=o[i++];){n=f?n:!j.hasClass(e);j[n?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(ya," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===v){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||
-{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var i=b?d:0;for(d=b?d+1:e.length;i<d;i++){var j=e[i];if(j.selected){a=c(j).val();if(b)return a;f.push(a)}}return f}if(za.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Wa,"")}return v}var n=c.isFunction(a);return this.each(function(o){var m=c(this),s=a;if(this.nodeType===1){if(n)s=a.call(this,o,m.val());
-if(typeof s==="number")s+="";if(c.isArray(s)&&za.test(this.type))this.checked=c.inArray(m.val(),s)>=0;else if(c.nodeName(this,"select")){var x=c.makeArray(s);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),x)>=0});if(!x.length)this.selectedIndex=-1}else this.value=s}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return v;if(f&&b in c.attrFn)return c(a)[b](d);
-f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==v;b=f&&c.props[b]||b;if(a.nodeType===1){var i=Xa.test(b);if(b in a&&f&&!i){if(e){b==="type"&&Ya.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Za.test(a.nodeName)||$a.test(a.nodeName)&&a.href?0:v;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=
-""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&i?a.getAttribute(b,2):a.getAttribute(b);return a===null?v:a}return c.style(a,b,d)}});var ab=function(a){return a.replace(/[^\w\s\.\|`]/g,function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==z&&!a.frameElement)a=z;if(!d.guid)d.guid=c.guid++;if(f!==v){d=c.proxy(d);d.data=f}var e=c.data(a,"events")||c.data(a,"events",{}),i=c.data(a,"handle"),j;if(!i){j=
-function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(j.elem,arguments):v};i=c.data(a,"handle",j)}if(i){i.elem=a;b=b.split(/\s+/);for(var n,o=0;n=b[o++];){var m=n.split(".");n=m.shift();if(o>1){d=c.proxy(d);if(f!==v)d.data=f}d.type=m.slice(0).sort().join(".");var s=e[n],x=this.special[n]||{};if(!s){s=e[n]={};if(!x.setup||x.setup.call(a,f,m,d)===false)if(a.addEventListener)a.addEventListener(n,i,false);else a.attachEvent&&a.attachEvent("on"+n,i)}if(x.add)if((m=x.add.call(a,
-d,f,m,s))&&c.isFunction(m)){m.guid=m.guid||d.guid;m.data=m.data||d.data;m.type=m.type||d.type;d=m}s[d.guid]=d;this.global[n]=true}a=null}}},global:{},remove:function(a,b,d){if(!(a.nodeType===3||a.nodeType===8)){var f=c.data(a,"events"),e,i,j;if(f){if(b===v||typeof b==="string"&&b.charAt(0)===".")for(i in f)this.remove(a,i+(b||""));else{if(b.type){d=b.handler;b=b.type}b=b.split(/\s+/);for(var n=0;i=b[n++];){var o=i.split(".");i=o.shift();var m=!o.length,s=c.map(o.slice(0).sort(),ab);s=new RegExp("(^|\\.)"+
-s.join("\\.(?:.*\\.)?")+"(\\.|$)");var x=this.special[i]||{};if(f[i]){if(d){j=f[i][d.guid];delete f[i][d.guid]}else for(var A in f[i])if(m||s.test(f[i][A].type))delete f[i][A];x.remove&&x.remove.call(a,o,j);for(e in f[i])break;if(!e){if(!x.teardown||x.teardown.call(a,o)===false)if(a.removeEventListener)a.removeEventListener(i,c.data(a,"handle"),false);else a.detachEvent&&a.detachEvent("on"+i,c.data(a,"handle"));e=null;delete f[i]}}}}for(e in f)break;if(!e){if(A=c.data(a,"handle"))A.elem=null;c.removeData(a,
-"events");c.removeData(a,"handle")}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();this.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return v;a.result=v;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,
-b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(i){}if(!a.isPropagationStopped()&&f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){d=a.target;var j;if(!(c.nodeName(d,"a")&&e==="click")&&!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()])){try{if(d[e]){if(j=d["on"+e])d["on"+e]=null;this.triggered=true;d[e]()}}catch(n){}if(j)d["on"+e]=j;this.triggered=false}}},handle:function(a){var b,
-d;a=arguments[0]=c.event.fix(a||z.event);a.currentTarget=this;d=a.type.split(".");a.type=d.shift();b=!d.length&&!a.exclusive;var f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");d=(c.data(this,"events")||{})[a.type];for(var e in d){var i=d[e];if(b||f.test(i.type)){a.handler=i;a.data=i.data;i=i.apply(this,arguments);if(i!==v){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||r;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=r.documentElement;d=r.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==v)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a,b){c.extend(a,b||{});a.guid+=b.selector+b.live;b.liveProxy=a;c.event.add(this,b.live,na,b)},remove:function(a){if(a.length){var b=
-0,d=new RegExp("(^|\\.)"+a[0]+"(\\.|$)");c.each(c.data(this,"events").live||{},function(){d.test(this.type)&&b++});b<1&&c.event.remove(this,a[0],na)}},special:{}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};
-c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y};var Aa=function(a){for(var b=
-a.relatedTarget;b&&b!==this;)try{b=b.parentNode}catch(d){break}if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}},Ba=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ba:Aa,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ba:Aa)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(a,b,d){if(this.nodeName.toLowerCase()!==
-"form"){c.event.add(this,"click.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="submit"||i==="image")&&c(e).closest("form").length)return ma("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="text"||i==="password")&&c(e).closest("form").length&&f.keyCode===13)return ma("submit",this,arguments)})}else return false},remove:function(a,b){c.event.remove(this,"click.specialSubmit"+(b?"."+b.guid:""));c.event.remove(this,
-"keypress.specialSubmit"+(b?"."+b.guid:""))}};if(!c.support.changeBubbles){var da=/textarea|input|select/i;function Ca(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d}function ea(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Ca(d);if(a.type!=="focusout"||
-d.type!=="radio")c.data(d,"_change_data",e);if(!(f===v||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}}c.event.special.change={filters:{focusout:ea,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return ea.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return ea.call(this,a)},beforeactivate:function(a){a=
-a.target;a.nodeName.toLowerCase()==="input"&&a.type==="radio"&&c.data(a,"_change_data",Ca(a))}},setup:function(a,b,d){for(var f in T)c.event.add(this,f+".specialChange."+d.guid,T[f]);return da.test(this.nodeName)},remove:function(a,b){for(var d in T)c.event.remove(this,d+".specialChange"+(b?"."+b.guid:""),T[d]);return da.test(this.nodeName)}};var T=c.event.special.change.filters}r.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,
-f)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var i in d)this[b](i,f,d[i],e);return this}if(c.isFunction(f)){e=f;f=v}var j=b==="one"?c.proxy(e,function(n){c(this).unbind(n,j);return e.apply(this,arguments)}):e;return d==="unload"&&b!=="one"?this.one(d,f,e):this.each(function(){c.event.add(this,d,j,f)})}});c.fn.extend({unbind:function(a,
-b){if(typeof a==="object"&&!a.preventDefault){for(var d in a)this.unbind(d,a[d]);return this}return this.each(function(){c.event.remove(this,a,b)})},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+
-a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e){var i,j=0;if(c.isFunction(f)){e=f;f=v}for(d=(d||"").split(/\s+/);(i=d[j++])!=null;){i=i==="focus"?"focusin":i==="blur"?"focusout":i==="hover"?d.push("mouseleave")&&"mouseenter":i;b==="live"?c(this.context).bind(oa(i,this.selector),{data:f,selector:this.selector,
-live:i},e):c(this.context).unbind(oa(i,this.selector),e?{guid:e.guid+this.selector+i}:null)}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});z.attachEvent&&!z.addEventListener&&z.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
-(function(){function a(g){for(var h="",k,l=0;g[l];l++){k=g[l];if(k.nodeType===3||k.nodeType===4)h+=k.nodeValue;else if(k.nodeType!==8)h+=a(k.childNodes)}return h}function b(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===k){y=l[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=k;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}l[q]=y}}}function d(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===
-k){y=l[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=k;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(o.filter(h,[t]).length>0){y=t;break}}t=t[g]}l[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,i=Object.prototype.toString,j=false,n=true;[0,0].sort(function(){n=false;return 0});var o=function(g,h,k,l){k=k||[];var q=h=h||r;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||
-typeof g!=="string")return k;for(var p=[],u,t,y,R,H=true,M=w(h),I=g;(f.exec(""),u=f.exec(I))!==null;){I=u[3];p.push(u[1]);if(u[2]){R=u[3];break}}if(p.length>1&&s.exec(g))if(p.length===2&&m.relative[p[0]])t=fa(p[0]+p[1],h);else for(t=m.relative[p[0]]?[h]:o(p.shift(),h);p.length;){g=p.shift();if(m.relative[g])g+=p.shift();t=fa(g,t)}else{if(!l&&p.length>1&&h.nodeType===9&&!M&&m.match.ID.test(p[0])&&!m.match.ID.test(p[p.length-1])){u=o.find(p.shift(),h,M);h=u.expr?o.filter(u.expr,u.set)[0]:u.set[0]}if(h){u=
-l?{expr:p.pop(),set:A(l)}:o.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=u.expr?o.filter(u.expr,u.set):u.set;if(p.length>0)y=A(t);else H=false;for(;p.length;){var D=p.pop();u=D;if(m.relative[D])u=p.pop();else D="";if(u==null)u=h;m.relative[D](y,u,M)}}else y=[]}y||(y=t);y||o.error(D||g);if(i.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))k.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&
-y[g].nodeType===1&&k.push(t[g]);else k.push.apply(k,y);else A(y,k);if(R){o(R,q,k,l);o.uniqueSort(k)}return k};o.uniqueSort=function(g){if(C){j=n;g.sort(C);if(j)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};o.matches=function(g,h){return o(g,null,null,h)};o.find=function(g,h,k){var l,q;if(!g)return[];for(var p=0,u=m.order.length;p<u;p++){var t=m.order[p];if(q=m.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");l=m.find[t](q,
-h,k);if(l!=null){g=g.replace(m.match[t],"");break}}}}l||(l=h.getElementsByTagName("*"));return{set:l,expr:g}};o.filter=function(g,h,k,l){for(var q=g,p=[],u=h,t,y,R=h&&h[0]&&w(h[0]);g&&h.length;){for(var H in m.filter)if((t=m.leftMatch[H].exec(g))!=null&&t[2]){var M=m.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(u===p)p=[];if(m.preFilter[H])if(t=m.preFilter[H](t,u,k,p,l,R)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=u[U])!=null;U++)if(D){I=M(D,t,U,u);var Da=
-l^!!I;if(k&&I!=null)if(Da)y=true;else u[U]=false;else if(Da){p.push(D);y=true}}if(I!==v){k||(u=p);g=g.replace(m.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)o.error(g);else break;q=g}return u};o.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var m=o.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
-TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,h){var k=typeof h==="string",l=k&&!/\W/.test(h);k=k&&!l;if(l)h=h.toLowerCase();l=0;for(var q=g.length,
-p;l<q;l++)if(p=g[l]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[l]=k||p&&p.nodeName.toLowerCase()===h?p||false:p===h}k&&o.filter(h,g,true)},">":function(g,h){var k=typeof h==="string";if(k&&!/\W/.test(h)){h=h.toLowerCase();for(var l=0,q=g.length;l<q;l++){var p=g[l];if(p){k=p.parentNode;g[l]=k.nodeName.toLowerCase()===h?k:false}}}else{l=0;for(q=g.length;l<q;l++)if(p=g[l])g[l]=k?p.parentNode:p.parentNode===h;k&&o.filter(h,g,true)}},"":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=
-h=h.toLowerCase();q=b}q("parentNode",h,l,g,p,k)},"~":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,l,g,p,k)}},find:{ID:function(g,h,k){if(typeof h.getElementById!=="undefined"&&!k)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var k=[];h=h.getElementsByName(g[1]);for(var l=0,q=h.length;l<q;l++)h[l].getAttribute("name")===g[1]&&k.push(h[l]);return k.length===0?null:k}},
-TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,k,l,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var u;(u=h[p])!=null;p++)if(u)if(q^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))k||l.push(u);else if(k)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&
-"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,k,l,q,p){h=g[1].replace(/\\/g,"");if(!p&&m.attrMap[h])g[1]=m.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,k,l,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=o(g[3],null,null,h);else{g=o.filter(g[3],h,k,true^q);k||l.push.apply(l,g);return false}else if(m.match.POS.test(g[0])||m.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);
-return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,k){return!!o(k[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===
-g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,h){return h===0},last:function(g,h,k,l){return h===l.length-1},even:function(g,h){return h%2===
-0},odd:function(g,h){return h%2===1},lt:function(g,h,k){return h<k[3]-0},gt:function(g,h,k){return h>k[3]-0},nth:function(g,h,k){return k[3]-0===h},eq:function(g,h,k){return k[3]-0===h}},filter:{PSEUDO:function(g,h,k,l){var q=h[1],p=m.filters[q];if(p)return p(g,k,h,l);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=h[3];k=0;for(l=h.length;k<l;k++)if(h[k]===g)return false;return true}else o.error("Syntax error, unrecognized expression: "+
-q)},CHILD:function(g,h){var k=h[1],l=g;switch(k){case "only":case "first":for(;l=l.previousSibling;)if(l.nodeType===1)return false;if(k==="first")return true;l=g;case "last":for(;l=l.nextSibling;)if(l.nodeType===1)return false;return true;case "nth":k=h[2];var q=h[3];if(k===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var u=0;for(l=p.firstChild;l;l=l.nextSibling)if(l.nodeType===1)l.nodeIndex=++u;p.sizcache=h}g=g.nodeIndex-q;return k===0?g===0:g%k===0&&g/k>=
-0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var k=h[1];g=m.attrHandle[k]?m.attrHandle[k](g):g[k]!=null?g[k]:g.getAttribute(k);k=g+"";var l=h[2];h=h[4];return g==null?l==="!=":l==="="?k===h:l==="*="?k.indexOf(h)>=0:l==="~="?(" "+k+" ").indexOf(h)>=0:!h?k&&g!==false:l==="!="?k!==h:l==="^="?
-k.indexOf(h)===0:l==="$="?k.substr(k.length-h.length)===h:l==="|="?k===h||k.substr(0,h.length+1)===h+"-":false},POS:function(g,h,k,l){var q=m.setFilters[h[2]];if(q)return q(g,k,h,l)}}},s=m.match.POS;for(var x in m.match){m.match[x]=new RegExp(m.match[x].source+/(?![^\[]*\])(?![^\(]*\))/.source);m.leftMatch[x]=new RegExp(/(^(?:.|\r|\n)*?)/.source+m.match[x].source.replace(/\\(\d+)/g,function(g,h){return"\\"+(h-0+1)}))}var A=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};
-try{Array.prototype.slice.call(r.documentElement.childNodes,0)}catch(B){A=function(g,h){h=h||[];if(i.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var k=0,l=g.length;k<l;k++)h.push(g[k]);else for(k=0;g[k];k++)h.push(g[k]);return h}}var C;if(r.documentElement.compareDocumentPosition)C=function(g,h){if(!g.compareDocumentPosition||!h.compareDocumentPosition){if(g==h)j=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===
-h?0:1;if(g===0)j=true;return g};else if("sourceIndex"in r.documentElement)C=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)j=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)j=true;return g};else if(r.createRange)C=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)j=true;return g.ownerDocument?-1:1}var k=g.ownerDocument.createRange(),l=h.ownerDocument.createRange();k.setStart(g,0);k.setEnd(g,0);l.setStart(h,0);l.setEnd(h,0);g=k.compareBoundaryPoints(Range.START_TO_END,
-l);if(g===0)j=true;return g};(function(){var g=r.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var k=r.documentElement;k.insertBefore(g,k.firstChild);if(r.getElementById(h)){m.find.ID=function(l,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(l[1]))?q.id===l[1]||typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id").nodeValue===l[1]?[q]:v:[]};m.filter.ID=function(l,q){var p=typeof l.getAttributeNode!=="undefined"&&l.getAttributeNode("id");
-return l.nodeType===1&&p&&p.nodeValue===q}}k.removeChild(g);k=g=null})();(function(){var g=r.createElement("div");g.appendChild(r.createComment(""));if(g.getElementsByTagName("*").length>0)m.find.TAG=function(h,k){k=k.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var l=0;k[l];l++)k[l].nodeType===1&&h.push(k[l]);k=h}return k};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")m.attrHandle.href=function(h){return h.getAttribute("href",
-2)};g=null})();r.querySelectorAll&&function(){var g=o,h=r.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){o=function(l,q,p,u){q=q||r;if(!u&&q.nodeType===9&&!w(q))try{return A(q.querySelectorAll(l),p)}catch(t){}return g(l,q,p,u)};for(var k in g)o[k]=g[k];h=null}}();(function(){var g=r.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
-0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){m.order.splice(1,0,"CLASS");m.find.CLASS=function(h,k,l){if(typeof k.getElementsByClassName!=="undefined"&&!l)return k.getElementsByClassName(h[1])};g=null}}})();var E=r.compareDocumentPosition?function(g,h){return g.compareDocumentPosition(h)&16}:function(g,h){return g!==h&&(g.contains?g.contains(h):true)},w=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},fa=function(g,h){var k=[],
-l="",q;for(h=h.nodeType?[h]:h;q=m.match.PSEUDO.exec(g);){l+=q[0];g=g.replace(m.match.PSEUDO,"")}g=m.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)o(g,h[q],k);return o.filter(l,k)};c.find=o;c.expr=o.selectors;c.expr[":"]=c.expr.filters;c.unique=o.uniqueSort;c.getText=a;c.isXMLDoc=w;c.contains=E})();var bb=/Until$/,cb=/^(?:parents|prevUntil|prevAll)/,db=/,/;Q=Array.prototype.slice;var Ea=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,i){return!!b.call(e,i,e)===d});else if(b.nodeType)return c.grep(a,
-function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Qa.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;c.find(a,this[f],b);if(f>0)for(var i=d;i<b.length;i++)for(var j=0;j<d;j++)if(b[j]===b[i]){b.splice(i--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=
-0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ea(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ea(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,i={},j;if(f&&a.length){e=0;for(var n=a.length;e<n;e++){j=a[e];i[j]||(i[j]=c.expr.match.POS.test(j)?c(j,b||this.context):j)}for(;f&&f.ownerDocument&&f!==b;){for(j in i){e=i[j];if(e.jquery?e.index(f)>
--1:c(f).is(e)){d.push({selector:j,elem:f});delete i[j]}}f=f.parentNode}}return d}var o=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(m,s){for(;s&&s.ownerDocument&&s!==b;){if(o?o.index(s)>-1:c(s).is(a))return s;s=s.parentNode}return null})},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),
-a);return this.pushStack(pa(a[0])||pa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},
-nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);bb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):
-e;if((this.length>1||db.test(f))&&cb.test(a))e=e.reverse();return this.pushStack(e,a,Q.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===v||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==
-b&&d.push(a);return d}});var Fa=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ga=/(<([\w:]+)[^>]*?)\/>/g,eb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,Ha=/<([\w:]+)/,fb=/<tbody/i,gb=/<|&\w+;/,sa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ia=function(a,b,d){return eb.test(d)?a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],
-col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==v)return this.empty().append((this[0]&&this[0].ownerDocument||r).createTextNode(a));return c.getText(this)},
-wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?
-d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,
-false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&
-!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Fa,"").replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){qa(this,b);qa(this.find("*"),b.find("*"))}return b},html:function(a){if(a===v)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Fa,""):null;else if(typeof a==="string"&&!/<script/i.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(Ha.exec(a)||
-["",""])[1].toLowerCase()]){a=a.replace(Ga,Ia);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var i=c(this),j=i.html();i.empty().append(function(){return a.call(this,e,j)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,
-b,f))});else a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(s){return c.nodeName(s,"table")?s.getElementsByTagName("tbody")[0]||s.appendChild(s.ownerDocument.createElement("tbody")):s}var e,i,j=a[0],n=[];if(!c.support.checkClone&&arguments.length===3&&typeof j===
-"string"&&sa.test(j))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(j))return this.each(function(s){var x=c(this);a[0]=j.call(this,s,b?x.html():v);x.domManip(a,b,d)});if(this[0]){e=a[0]&&a[0].parentNode&&a[0].parentNode.nodeType===11?{fragment:a[0].parentNode}:ra(a,this,n);if(i=e.fragment.firstChild){b=b&&c.nodeName(i,"tr");for(var o=0,m=this.length;o<m;o++)d.call(b?f(this[o],i):this[o],e.cacheable||this.length>1||o>0?e.fragment.cloneNode(true):e.fragment)}n&&c.each(n,
-Ma)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);for(var e=0,i=d.length;e<i;e++){var j=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),j);f=f.concat(j)}return this.pushStack(f,a,d.selector)}});c.each({remove:function(a,b){if(!a||c.filter(a,[this]).length){if(!b&&this.nodeType===1){c.cleanData(this.getElementsByTagName("*"));c.cleanData([this])}this.parentNode&&
-this.parentNode.removeChild(this)}},empty:function(){for(this.nodeType===1&&c.cleanData(this.getElementsByTagName("*"));this.firstChild;)this.removeChild(this.firstChild)}},function(a,b){c.fn[a]=function(){return this.each(b,arguments)}});c.extend({clean:function(a,b,d,f){b=b||r;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||r;var e=[];c.each(a,function(i,j){if(typeof j==="number")j+="";if(j){if(typeof j==="string"&&!gb.test(j))j=b.createTextNode(j);else if(typeof j===
-"string"){j=j.replace(Ga,Ia);var n=(Ha.exec(j)||["",""])[1].toLowerCase(),o=F[n]||F._default,m=o[0];i=b.createElement("div");for(i.innerHTML=o[1]+j+o[2];m--;)i=i.lastChild;if(!c.support.tbody){m=fb.test(j);n=n==="table"&&!m?i.firstChild&&i.firstChild.childNodes:o[1]==="<table>"&&!m?i.childNodes:[];for(o=n.length-1;o>=0;--o)c.nodeName(n[o],"tbody")&&!n[o].childNodes.length&&n[o].parentNode.removeChild(n[o])}!c.support.leadingWhitespace&&V.test(j)&&i.insertBefore(b.createTextNode(V.exec(j)[0]),i.firstChild);
-j=c.makeArray(i.childNodes)}if(j.nodeType)e.push(j);else e=c.merge(e,j)}});if(d)for(a=0;e[a];a++)if(f&&c.nodeName(e[a],"script")&&(!e[a].type||e[a].type.toLowerCase()==="text/javascript"))f.push(e[a].parentNode?e[a].parentNode.removeChild(e[a]):e[a]);else{e[a].nodeType===1&&e.splice.apply(e,[a+1,0].concat(c.makeArray(e[a].getElementsByTagName("script"))));d.appendChild(e[a])}return e},cleanData:function(a){for(var b=0,d;(d=a[b])!=null;b++){c.event.remove(d);c.removeData(d)}}});var hb=/z-?index|font-?weight|opacity|zoom|line-?height/i,
-Ja=/alpha\([^)]*\)/,Ka=/opacity=([^)]*)/,ga=/float/i,ha=/-([a-z])/ig,ib=/([A-Z])/g,jb=/^-?\d+(?:px)?$/i,kb=/^-?\d/,lb={position:"absolute",visibility:"hidden",display:"block"},mb=["Left","Right"],nb=["Top","Bottom"],ob=r.defaultView&&r.defaultView.getComputedStyle,La=c.support.cssFloat?"cssFloat":"styleFloat",ia=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===v)return c.curCSS(d,f);if(typeof e==="number"&&!hb.test(f))e+="px";c.style(d,f,e)})};
-c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return v;if((b==="width"||b==="height")&&parseFloat(d)<0)d=v;var f=a.style||a,e=d!==v;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=Ja.test(a)?a.replace(Ja,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Ka.exec(f.filter)[1])/100+"":""}if(ga.test(b))b=La;b=b.replace(ha,ia);if(e)f[b]=d;return f[b]},css:function(a,
-b,d,f){if(b==="width"||b==="height"){var e,i=b==="width"?mb:nb;function j(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(i,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,"border"+this+"Width",true))||0})}a.offsetWidth!==0?j():c.swap(a,lb,j);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&
-a.currentStyle){f=Ka.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ga.test(b))b=La;if(!d&&e&&e[b])f=e[b];else if(ob){if(ga.test(b))b="float";b=b.replace(ib,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ha,ia);f=a.currentStyle[b]||a.currentStyle[d];if(!jb.test(f)&&kb.test(f)){b=e.left;var i=a.runtimeStyle.left;a.runtimeStyle.left=
-a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=i}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var pb=
-J(),qb=/<script(.|\s)*?\/script>/gi,rb=/select|textarea/i,sb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ja=/\?/,tb=/(\?|&)_=.*?(&|$)/,ub=/^(\w+:)?\/\/([^\/?#]+)/,vb=/%20/g;c.fn.extend({_load:c.fn.load,load:function(a,b,d){if(typeof a!=="string")return this._load(a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=
-c.param(b,c.ajaxSettings.traditional);f="POST"}var i=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(j,n){if(n==="success"||n==="notmodified")i.html(e?c("<div />").append(j.responseText.replace(qb,"")).find(e):j.responseText);d&&i.each(d,[j.responseText,n,j])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&
-(this.checked||rb.test(this.nodeName)||sb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,
-b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:z.XMLHttpRequest&&(z.location.protocol!=="file:"||!z.ActiveXObject)?function(){return new z.XMLHttpRequest}:
-function(){try{return new z.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&e.success.call(o,n,j,w);e.global&&f("ajaxSuccess",[w,e])}function d(){e.complete&&e.complete.call(o,w,j);e.global&&f("ajaxComplete",[w,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}
-function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),i,j,n,o=a&&a.context||e,m=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(m==="GET")N.test(e.url)||(e.url+=(ja.test(e.url)?"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||
-N.test(e.url))){i=e.jsonpCallback||"jsonp"+pb++;if(e.data)e.data=(e.data+"").replace(N,"="+i+"$1");e.url=e.url.replace(N,"="+i+"$1");e.dataType="script";z[i]=z[i]||function(q){n=q;b();d();z[i]=v;try{delete z[i]}catch(p){}A&&A.removeChild(B)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===false&&m==="GET"){var s=J(),x=e.url.replace(tb,"$1_="+s+"$2");e.url=x+(x===e.url?(ja.test(e.url)?"&":"?")+"_="+s:"")}if(e.data&&m==="GET")e.url+=(ja.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&
-c.event.trigger("ajaxStart");s=(s=ub.exec(e.url))&&(s[1]&&s[1]!==location.protocol||s[2]!==location.host);if(e.dataType==="script"&&m==="GET"&&s){var A=r.getElementsByTagName("head")[0]||r.documentElement,B=r.createElement("script");B.src=e.url;if(e.scriptCharset)B.charset=e.scriptCharset;if(!i){var C=false;B.onload=B.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;b();d();B.onload=B.onreadystatechange=null;A&&B.parentNode&&
-A.removeChild(B)}}}A.insertBefore(B,A.firstChild);return v}var E=false,w=e.xhr();if(w){e.username?w.open(m,e.url,e.async,e.username,e.password):w.open(m,e.url,e.async);try{if(e.data||a&&a.contentType)w.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[e.url]);c.etag[e.url]&&w.setRequestHeader("If-None-Match",c.etag[e.url])}s||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",
-e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(fa){}if(e.beforeSend&&e.beforeSend.call(o,w,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");w.abort();return false}e.global&&f("ajaxSend",[w,e]);var g=w.onreadystatechange=function(q){if(!w||w.readyState===0||q==="abort"){E||d();E=true;if(w)w.onreadystatechange=c.noop}else if(!E&&w&&(w.readyState===4||q==="timeout")){E=true;w.onreadystatechange=c.noop;j=q==="timeout"?"timeout":!c.httpSuccess(w)?
-"error":e.ifModified&&c.httpNotModified(w,e.url)?"notmodified":"success";var p;if(j==="success")try{n=c.httpData(w,e.dataType,e)}catch(u){j="parsererror";p=u}if(j==="success"||j==="notmodified")i||b();else c.handleError(e,w,j,p);d();q==="timeout"&&w.abort();if(e.async)w=null}};try{var h=w.abort;w.abort=function(){w&&h.call(w);g("abort")}}catch(k){}e.async&&e.timeout>0&&setTimeout(function(){w&&!E&&g("timeout")},e.timeout);try{w.send(m==="POST"||m==="PUT"||m==="DELETE"?e.data:null)}catch(l){c.handleError(e,
-w,null,l);d()}e.async||g();return w}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=
-f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(j,n){if(c.isArray(n))c.each(n,
-function(o,m){b?f(j,m):d(j+"["+(typeof m==="object"||c.isArray(m)?o:"")+"]",m)});else!b&&n!=null&&typeof n==="object"?c.each(n,function(o,m){d(j+"["+o+"]",m)}):f(j,n)}function f(j,n){n=c.isFunction(n)?n():n;e[e.length]=encodeURIComponent(j)+"="+encodeURIComponent(n)}var e=[];if(b===v)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var i in a)d(i,a[i]);return e.join("&").replace(vb,"+")}});var ka={},wb=/toggle|show|hide/,xb=/^([+-]=)?([\d+-.]+)(.*)$/,
-W,ta=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(ka[d])f=ka[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();
-ka[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&
-c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var i=c.extend({},e),j,n=this.nodeType===1&&c(this).is(":hidden"),
-o=this;for(j in a){var m=j.replace(ha,ia);if(j!==m){a[m]=a[j];delete a[j];j=m}if(a[j]==="hide"&&n||a[j]==="show"&&!n)return i.complete.call(this);if((j==="height"||j==="width")&&this.style){i.display=c.css(this,"display");i.overflow=this.style.overflow}if(c.isArray(a[j])){(i.specialEasing=i.specialEasing||{})[j]=a[j][1];a[j]=a[j][0]}}if(i.overflow!=null)this.style.overflow="hidden";i.curAnim=c.extend({},a);c.each(a,function(s,x){var A=new c.fx(o,i,s);if(wb.test(x))A[x==="toggle"?n?"show":"hide":x](a);
-else{var B=xb.exec(x),C=A.cur(true)||0;if(B){x=parseFloat(B[2]);var E=B[3]||"px";if(E!=="px"){o.style[s]=(x||1)+E;C=(x||1)/A.cur(true)*C;o.style[s]=C+E}if(B[1])x=(B[1]==="-="?-1:1)*x+C;A.custom(C,x,E)}else A.custom(C,x,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",
-1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration==="number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,
-b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==
-null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(i){return e.step(i)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop===
-"width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=
-this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=
-c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=
-null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in r.documentElement?function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),
-f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=
-b,e=b.ownerDocument,i,j=e.documentElement,n=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var o=b.offsetTop,m=b.offsetLeft;(b=b.parentNode)&&b!==n&&b!==j;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;i=e?e.getComputedStyle(b,null):b.currentStyle;o-=b.scrollTop;m-=b.scrollLeft;if(b===d){o+=b.offsetTop;m+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){o+=parseFloat(i.borderTopWidth)||
-0;m+=parseFloat(i.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&i.overflow!=="visible"){o+=parseFloat(i.borderTopWidth)||0;m+=parseFloat(i.borderLeftWidth)||0}f=i}if(f.position==="relative"||f.position==="static"){o+=n.offsetTop;m+=n.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){o+=Math.max(j.scrollTop,n.scrollTop);m+=Math.max(j.scrollLeft,n.scrollLeft)}return{top:o,left:m}};c.offset={initialize:function(){var a=r.body,b=r.createElement("div"),
-d,f,e,i=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);
-d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i;a.removeChild(b);c.offset.initialize=c.noop},
-bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),i=parseInt(c.curCSS(a,"top",true),10)||0,j=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,d,e);d={top:b.top-e.top+i,left:b.left-
-e.left+j};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=
-this.offsetParent||r.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],i;if(!e)return null;if(f!==v)return this.each(function(){if(i=ua(this))i.scrollTo(!a?f:c(i).scrollLeft(),a?f:c(i).scrollTop());else this[d]=f});else return(i=ua(e))?"pageXOffset"in i?i[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&i.document.documentElement[d]||i.document.body[d]:e[d]}});
-c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(i){var j=c(this);j[d](f.call(this,i,j[d]()))});return"scrollTo"in e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||
-e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===v?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});z.jQuery=z.$=c})(window);
\ No newline at end of file
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/jquerybbq/jquery.bbq.min.js	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,18 @@
+/*
+ * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
+ * http://benalman.com/projects/jquery-bbq-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
+/*
+ * jQuery hashchange event - v1.2 - 2/11/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
\ No newline at end of file
--- a/htdocs/svg-edit/editor/js-hotkeys/README.md	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/js-hotkeys/README.md	Fri Apr 23 22:38:00 2010 +0200
@@ -1,47 +1,32 @@
 #About
-**jQuery.hotkeys** is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination.  
+**jQuery Hotkeys** is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination.  
 
-It is based on a library [Shortcut.js](http://www.openjs.com/scripts/events/keyboard_shortcuts/shortcut.js) written by [Binny V A](http://www.openjs.com/).
+This plugin is based off of the plugin by Tzury Bar Yochay: [jQuery.hotkeys](http://github.com/tzuryby/hotkeys)
 
 The syntax is as follows:
-<pre>
-$(expression).bind(<types>,<options>, <handler>);
-$(expression).unbind(<types>,<options>, <handler>);
-
-$(document).bind('keydown', 'Ctrl+a', fn);
 
-// e.g. replace '$' sign with 'EUR'
-$('input.foo').bind('keyup', '$', function(){
-    this.value = this.value.replace('$', 'EUR');
-});
-
-$('div.foo').unbind('keydown', 'Ctrl+a', fn);
-</pre>
-## [Live Demo](http://jshotkeys.googlepages.com/test-static-01.html)
+    $(expression).bind(types, keys, handler);
+    $(expression).unbind(types, handler);
+    
+    $(document).bind('keydown', 'ctrl+a', fn);
+    
+    // e.g. replace '$' sign with 'EUR'
+    $('input.foo').bind('keyup', '$', function(){
+      this.value = this.value.replace('$', 'EUR');
+    });
 
 ## Types
 Supported types are `'keydown'`, `'keyup'` and `'keypress'`
 
-## Options
-The options are `'combi'` i.e. the key combination, and `'disableInInput'` which allow your code not to be executed when the cursor is located inside an input ( `$(elem).is('input') || $(elem).is('textarea')` ).
-
-As you can see, the key combination can be passed as string or as an object. You may pass an object in case you wish to override the default option for `disableInInput` which is set to `false`:
-<pre>
-$(document).bind('keydown', {combi:'a', disableinInput: true}, fn);
-</pre>
-I.e. when cursor is within an input field, `'a'` will be inserted into the input field without interfering. 
+## Notes
 
 If you want to use more than one modifiers (e.g. alt+ctrl+z) you should define them by an alphabetical order e.g. alt+ctrl+shift
 
-Modifiers are case insensitive, i.e. 'Ctrl+a' 'ctrl+a'.
-
-## Handler
-In previous versions there was an option propagate which is removed now and implemented at the user code level.
-
-When using jQuery, if an event handler returns false, jQuery will call `stopPropagation()` and `preventDefault()`
+Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing.
 
 ## jQuery Compatibility
-Tested with *jQuery 1.2.6*
+
+Works with jQuery 1.4.2 and newer.
 
 It known to be working with all the major browsers on all available platforms (Win/Mac/Linux)
 
@@ -51,43 +36,10 @@
  * Safari-3
  * Chrome-0.2
 
-## Features added in this version (0.7.x)
- * Implemented as $.fn - let you use `this`.
- * jQuery selectors are supported.
- * Extending `$.fn.bind` and `$.fn.unbind` so you get a single interface for binding events to handlers
- 
-## Overriding jQuery
-The plugin wraps the following jQuery methods:
- * $.fn.bind
- * $.fn.unbind
- * $.find
-
-Even though the plugin overrides these methods, the original methods will *always* be called.
-
-The plugin will add functionality only for the `keydown`, `keyup` and `keypress` event types. Any other types are passed untouched to the original `'bind()'` and `'unbind()'` methods.
-
-Moreover, if you call `bind()` without passing the shortcut key combination e.g. `$(document).bind('keydown', fn)` only the original `'bind()'` method will be executed.
-
-I also modified the `$.fn.find` method by adding a single line at the top of the function body. here is the code:
-
-<pre>
-    jQuery.fn.find = function( selector ) {
-        // the line I added
-        this.query=selector;
-        // call jQuery original find
-        return jQuery.fn.__find__.apply(this, arguments);
-    };
-</pre>
-
-You can read about this at [jQuery's User Group](http://groups.google.com/group/jquery-en/browse_thread/thread/18f9825e8d22f18d)
-
-###Notes
+### Addendum
 
 Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as `Ctrl-t` for new tab, or `Ctrl-a` for selecting all text. You can always bubble them up to the browser by returning `true` in your handler.
 
 Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will *not* pass those events to the DOM at all.
 
-*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.*
-
-
-###Current Version is: beta 0.7
\ No newline at end of file
+*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.*
\ No newline at end of file
--- a/htdocs/svg-edit/editor/js-hotkeys/jquery.hotkeys.min.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/js-hotkeys/jquery.hotkeys.min.js	Fri Apr 23 22:38:00 2010 +0200
@@ -1,19 +1,15 @@
-(function(jQuery){jQuery.fn.__bind__=jQuery.fn.bind;jQuery.fn.__unbind__=jQuery.fn.unbind;jQuery.fn.__find__=jQuery.fn.find;var hotkeys={version:'0.7.9',override:/keypress|keydown|keyup/g,triggersMap:{},specialKeys:{27:'esc',9:'tab',32:'space',13:'return',8:'backspace',145:'scroll',20:'capslock',144:'numlock',19:'pause',45:'insert',36:'home',46:'del',35:'end',33:'pageup',34:'pagedown',37:'left',38:'up',39:'right',40:'down',109:'-',112:'f1',113:'f2',114:'f3',115:'f4',116:'f5',117:'f6',118:'f7',119:'f8',120:'f9',121:'f10',122:'f11',123:'f12',191:'/'},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":"\"",",":"<",".":">","/":"?","\\":"|"},newTrigger:function(type,combi,callback){var result={};result[type]={};result[type][combi]={cb:callback,disableInInput:false};return result;}};hotkeys.specialKeys=jQuery.extend(hotkeys.specialKeys,{96:'0',97:'1',98:'2',99:'3',100:'4',101:'5',102:'6',103:'7',104:'8',105:'9',106:'*',107:'+',109:'-',110:'.',111:'/'});jQuery.fn.find=function(selector){this.query=selector;return jQuery.fn.__find__.apply(this,arguments);};jQuery.fn.unbind=function(type,combi,fn){if(jQuery.isFunction(combi)){fn=combi;combi=null;}
-if(combi&&typeof combi==='string'){var selectorId=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();var hkTypes=type.split(' ');for(var x=0;x<hkTypes.length;x++){delete hotkeys.triggersMap[selectorId][hkTypes[x]][combi];}}
-return this.__unbind__(type,fn);};jQuery.fn.bind=function(type,data,fn){var handle=type.match(hotkeys.override);if(jQuery.isFunction(data)||!handle){return this.__bind__(type,data,fn);}
-else{var result=null,pass2jq=jQuery.trim(type.replace(hotkeys.override,''));if(pass2jq){result=this.__bind__(pass2jq,data,fn);}
-if(typeof data==="string"){data={'combi':data};}
-if(data.combi){for(var x=0;x<handle.length;x++){var eventType=handle[x];var combi=data.combi.toLowerCase(),trigger=hotkeys.newTrigger(eventType,combi,fn),selectorId=((this.prevObject&&this.prevObject.query)||(this[0].id&&this[0].id)||this[0]).toString();trigger[eventType][combi].disableInInput=data.disableInInput;if(!hotkeys.triggersMap[selectorId]){hotkeys.triggersMap[selectorId]=trigger;}
-else if(!hotkeys.triggersMap[selectorId][eventType]){hotkeys.triggersMap[selectorId][eventType]=trigger[eventType];}
-var mapPoint=hotkeys.triggersMap[selectorId][eventType][combi];if(!mapPoint){hotkeys.triggersMap[selectorId][eventType][combi]=[trigger[eventType][combi]];}
-else if(mapPoint.constructor!==Array){hotkeys.triggersMap[selectorId][eventType][combi]=[mapPoint];}
-else{hotkeys.triggersMap[selectorId][eventType][combi][mapPoint.length]=trigger[eventType][combi];}
-this.each(function(){var jqElem=jQuery(this);if(jqElem.attr('hkId')&&jqElem.attr('hkId')!==selectorId){selectorId=jqElem.attr('hkId')+";"+selectorId;}
-jqElem.attr('hkId',selectorId);});result=this.__bind__(handle.join(' '),data,hotkeys.handler)}}
-return result;}};hotkeys.findElement=function(elem){if(!jQuery(elem).attr('hkId')){if(jQuery.browser.opera||jQuery.browser.safari){while(!jQuery(elem).attr('hkId')&&elem.parentNode){elem=elem.parentNode;}}}
-return elem;};hotkeys.handler=function(event){var target=hotkeys.findElement(event.currentTarget),jTarget=jQuery(target),ids=jTarget.attr('hkId');if(ids){ids=ids.split(';');var code=event.which,type=event.type,special=hotkeys.specialKeys[code],character=!special&&String.fromCharCode(code).toLowerCase(),shift=event.shiftKey,ctrl=event.ctrlKey,alt=event.altKey||event.originalEvent.altKey,mapPoint=null;for(var x=0;x<ids.length;x++){if(hotkeys.triggersMap[ids[x]][type]){mapPoint=hotkeys.triggersMap[ids[x]][type];break;}}
-if(mapPoint){var trigger;if(!shift&&!ctrl&&!alt){trigger=mapPoint[special]||(character&&mapPoint[character]);}
-else{var modif='';if(alt)modif+='alt+';if(ctrl)modif+='ctrl+';if(shift)modif+='shift+';trigger=mapPoint[modif+special];if(!trigger){if(character){trigger=mapPoint[modif+character]||mapPoint[modif+hotkeys.shiftNums[character]]||(modif==='shift+'&&mapPoint[hotkeys.shiftNums[character]]);}}}
-if(trigger){var result=false;for(var x=0;x<trigger.length;x++){if(trigger[x].disableInInput){var elem=jQuery(event.target);if(jTarget.is("input")||jTarget.is("textarea")||jTarget.is("select")||elem.is("input")||elem.is("textarea")||elem.is("select")){return true;}}
-result=result||trigger[x].cb.apply(this,[event]);}
-return result;}}}};window.hotkeys=hotkeys;return jQuery;})(jQuery);
\ No newline at end of file
+/*
+ * jQuery Hotkeys Plugin
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * http://github.com/jeresig/jquery.hotkeys
+ *
+ * Based upon the plugin by Tzury Bar Yochay:
+ * http://github.com/tzuryby/hotkeys
+ *
+ * Original idea by:
+ * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
+*/
+
+(function(b){b.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};function a(d){if(typeof d.data!=="string"){return}var c=d.handler,e=d.data.toLowerCase().split(" ");d.handler=function(n){if(this!==n.target&&(/textarea|select/i.test(n.target.nodeName)||n.target.type==="text")){return}var h=n.type!=="keypress"&&b.hotkeys.specialKeys[n.which],o=String.fromCharCode(n.which).toLowerCase(),k,m="",g={};if(n.altKey&&h!=="alt"){m+="alt+"}if(n.ctrlKey&&h!=="ctrl"){m+="ctrl+"}if(n.metaKey&&!n.ctrlKey&&h!=="meta"){m+="meta+"}if(n.shiftKey&&h!=="shift"){m+="shift+"}if(h){g[m+h]=true}else{g[m+o]=true;g[m+b.hotkeys.shiftNums[o]]=true;if(m==="shift+"){g[b.hotkeys.shiftNums[o]]=true}}for(var j=0,f=e.length;j<f;j++){if(g[e[j]]){return c.apply(this,arguments)}}}}b.each(["keydown","keyup","keypress"],function(){b.event.special[this]={add:a}})})(jQuery);
\ No newline at end of file
--- a/htdocs/svg-edit/editor/locale/README.txt	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/README.txt	Fri Apr 23 22:38:00 2010 +0200
@@ -9,8 +9,9 @@
   * lang.cs.js
   * lang.de.js
   * lang.en.js
-  * lang.es.js  
+  * lang.es.js
   * lang.fr.js
+  * lang.ja.js
   * lang.nl.js
   * lang.ro.js
   * lang.sk.js
--- a/htdocs/svg-edit/editor/locale/lang.af.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.af.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elemente"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Klik op die Gereedskap"},
-{"id": "tools_ellipse_show", "title": "Ellips / Circle Gereedskap"},
-{"id": "tools_rect_show", "title": "Vierkante / Rect Gereedskap"},
 {"id": "zoom", "title": "Change zoom vlak"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.ar.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.ar.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "فك تجميع عناصر"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "أداة تكبير"},
-{"id": "tools_ellipse_show", "title": "القطع الناقص / الدائرة أداة"},
-{"id": "tools_rect_show", "title": "مربع / Rect أداة"},
 {"id": "zoom", "title": "تغيير مستوى التكبير"},
 {"id": "zoomLabel", "textContent": "التكبير:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.az.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.az.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse/Circle Tool"},
-{"id": "tools_rect_show", "title": "Square/Rect Tool"},
 {"id": "zoom", "title": "Change zoom level"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.be.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.be.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Элементы Разгруппировать"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Эліпс / круг інструментаў"},
-{"id": "tools_rect_show", "title": "Плошча / Rect Tool"},
 {"id": "zoom", "title": "Змяненне маштабу"},
 {"id": "zoomLabel", "textContent": "Павялічыць:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.bg.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.bg.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Разгрупирай Елементи"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Елипса / Circle Tool"},
-{"id": "tools_rect_show", "title": "Площ / Rect Tool "},
 {"id": "zoom", "title": "Промяна на ниво на мащабиране"},
 {"id": "zoomLabel", "textContent": "увеличение:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.ca.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.ca.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Desagrupar elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Lipse / Eina Cercle"},
-{"id": "tools_rect_show", "title": "Quadrat / Rect Eina"},
 {"id": "zoom", "title": "Canviar el nivell de zoom"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.cs.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.cs.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Zrušit seskupení"},
 {"id": "tool_wireframe", "title": "Zobrazit jen kostru"},
 {"id": "tool_zoom", "title": "Přiblížení"},
-{"id": "tools_ellipse_show", "title": "Elipsa / Kružnice"},
-{"id": "tools_rect_show", "title": "Čtverec / Obdélník"},
 {"id": "zoom", "title": "Změna přiblížení"},
 {"id": "zoomLabel", "textContent": "přiblížení:"},
 {"id": "sidepanel_handle", "textContent": "V r s t v y", "title": "Táhnutím změnit velikost"},
--- a/htdocs/svg-edit/editor/locale/lang.cy.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.cy.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Elfennau Ungroup"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Offer Chwyddo"},
-{"id": "tools_ellipse_show", "title": "Ellipse / Cylch Arfau"},
-{"id": "tools_rect_show", "title": "Sgwâr / Rect Tool"},
 {"id": "zoom", "title": "Newid lefel chwyddo"},
 {"id": "zoomLabel", "textContent": "chwyddo:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.da.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.da.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Opdel Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Skift zoomniveau"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.de.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.de.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Gruppierung aufheben"},
 {"id": "tool_wireframe", "title": "Drahtmodell Modus"},
 {"id": "tool_zoom", "title": "Zoomfaktor vergrößern oder verringern"},
-{"id": "tools_ellipse_show", "title": "Ellipsen und Kreise zeichnen"},
-{"id": "tools_rect_show", "title": "Rechtecke und Quadrate zeichnen"},
 {"id": "zoom", "title": "vergrößern"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "E b e n e n", "title": "Ziehe links/rechts um die Seitenleiste anzupassen"},
--- a/htdocs/svg-edit/editor/locale/lang.el.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.el.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Κατάργηση ομαδοποίησης Στοιχεία"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "Πλατεία / Ορθ Tool"},
 {"id": "zoom", "title": "Αλλαγή επίπεδο μεγέθυνσης"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.en.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.en.js	Fri Apr 23 22:38:00 2010 +0200
@@ -67,7 +67,7 @@
 {"id": "stroke_color", "title": "Change stroke color"},
 {"id": "stroke_style", "title": "Change stroke dash style"},
 {"id": "stroke_tool_bottom", "textContent": "stroke:"},
-{"id": "stroke_width", "title": "Change stroke width"},
+{"id": "stroke_width", "title": "Change stroke width by 1, shift-click to change by 0.1"},
 {"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
 {"id": "svginfo_change_background", "textContent": "Editor Background"},
 {"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
@@ -101,6 +101,7 @@
 {"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
 {"id": "tool_group", "title": "Group Elements"},
 {"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import Image"},
 {"id": "tool_italic", "title": "Italic Text"},
 {"id": "tool_line", "title": "Line Tool"},
 {"id": "tool_move_bottom", "title": "Move to Bottom"},
@@ -125,8 +126,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse/Circle Tool"},
-{"id": "tools_rect_show", "title": "Square/Rect Tool"},
 {"id": "zoom", "title": "Change zoom level"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.es.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.es.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Desagrupar objetos"},
 {"id": "tool_wireframe", "title": "Modo marco de alambre"},
 {"id": "tool_zoom", "title": "Zoom"},
-{"id": "tools_ellipse_show", "title": "Círculo / Elipse"},
-{"id": "tools_rect_show", "title": "Cuadrado / Rectángulo"},
 {"id": "zoom", "title": "Cambiar el nivel de zoom"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "C a p a s", "title": "Arrastrar hacia la izquierda/derecha para modificar el tamaño del panel lateral"},
--- a/htdocs/svg-edit/editor/locale/lang.et.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.et.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Lõhu Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellips / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Muuda suumi taset"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.fa.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.fa.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "‫خارج کردن عناصر از گروه ‬"},
 {"id": "tool_wireframe", "title": "‫حالت نمایش لبه ها ‬"},
 {"id": "tool_zoom", "title": "‫ابزار بزرگ نمایی ‬"},
-{"id": "tools_ellipse_show", "title": "‫ابزار بیضی/دایره ‬"},
-{"id": "tools_rect_show", "title": "‫ابزار مستطیل/مربع ‬"},
 {"id": "zoom", "title": "‫تغییر بزرگ نمایی‬"},
 {"id": "zoomLabel", "textContent": "‫بزرگ نمایی:‬"},
 {"id": "sidepanel_handle", "textContent": "‫لایه ها‬", "title": "‫برای تغییر اندازه منوی کناری، آن را به سمت راست/چپ بکشید ‬"},
--- a/htdocs/svg-edit/editor/locale/lang.fi.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.fi.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Suurennustyökalu"},
-{"id": "tools_ellipse_show", "title": "Ellipsi / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Muuta suurennustaso"},
 {"id": "zoomLabel", "textContent": "zoomin:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.fr.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.fr.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Dégrouper les éléments"},
 {"id": "tool_wireframe", "title": "Mode Fil de Fer"},
 {"id": "tool_zoom", "title": "Zoom"},
-{"id": "tools_ellipse_show", "title": "Cercle / Ellipse / Ellipse à main levée"},
-{"id": "tools_rect_show", "title": "Carré / Rectangle / Rectangle à main levée"},
 {"id": "zoom", "title": "Changer le niveau de zoom"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "C A L Q U E S", "title": "Tirer vers la gauche/droite pour redimensionner le panneau"},
--- a/htdocs/svg-edit/editor/locale/lang.fy.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.fy.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Groepering opheffe"},
 {"id": "tool_wireframe", "title": "Triemodel"},
 {"id": "tool_zoom", "title": "Zoom"},
-{"id": "tools_ellipse_show", "title": "Ellips/sirkel"},
-{"id": "tools_rect_show", "title": "Fjouwerkant/rjochthoeke"},
 {"id": "zoom", "title": "Yn-/útzoome"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a g e n", "title": "Sleep nei links/rjochts om it sidepaniel grutter as lytser te meitjen"},
--- a/htdocs/svg-edit/editor/locale/lang.ga.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.ga.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Eilimintí Díghrúpáil"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zúmáil Uirlis"},
-{"id": "tools_ellipse_show", "title": "Éilips / Ciorcal Uirlis"},
-{"id": "tools_rect_show", "title": "Mhuirfean / Rect Uirlis"},
 {"id": "zoom", "title": "Athraigh súmáil leibhéal"},
 {"id": "zoomLabel", "textContent": "súmáil isteach:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.gl.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.gl.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Elementos Desagrupadas"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Procura / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Recta Tool"},
 {"id": "zoom", "title": "Cambiar o nivel de zoom"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.he.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.he.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "אלמנטים פרק קבוצה"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "זום כלי"},
-{"id": "tools_ellipse_show", "title": "אליפסה / עיגול הכלי"},
-{"id": "tools_rect_show", "title": "ריבוע / כלי"},
 {"id": "zoom", "title": "שינוי גודל תצוגה"},
 {"id": "zoomLabel", "textContent": "זום:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.hi.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.hi.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,11 +125,9 @@
 {"id": "tool_ungroup", "title": "अंश को समूह से अलग करें"},
 {"id": "tool_wireframe", "title": "रूपरेखा मोड"},
 {"id": "tool_zoom", "title": "ज़ूम उपकरण"},
-{"id": "tools_ellipse_show", "title": "दीर्घवृत्त / सर्किल उपकरण"},
-{"id": "tools_rect_show", "title": "वर्ग / रंगरूट उपकरण"},
 {"id": "zoom", "title": "बदलें स्तर ज़ूम"},
 {"id": "zoomLabel", "textContent": "जूम:"},
-{"id": "sidepanel_handle", "textContent": "परतें", "title": "दायें/बाएं घसीट कर आकार बदलें"},
+{"id": "sidepanel_handle","textContent":"प र तें","title":"दायें/बाएं घसीट कर आकार बदलें"},
 {
  "js_strings": {
   "QerrorsRevertToSource": "आपके एस.वी.जी. स्रोत में त्रुटियों थी.\nक्या आप मूल एस.वी.जी स्रोत पर वापिस जाना चाहते हैं?", 
--- a/htdocs/svg-edit/editor/locale/lang.hr.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.hr.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Razgrupiranje Elementi"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Alat za zumiranje"},
-{"id": "tools_ellipse_show", "title": "Elipsa / Circle Tool"},
-{"id": "tools_rect_show", "title": "Trg / Prav Alat"},
 {"id": "zoom", "title": "Promjena razine zumiranja"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.hu.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.hu.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Szétbont elemei"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipszis / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Change nagyítási"},
 {"id": "zoomLabel", "textContent": "nagyítási:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.hy.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.hy.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse/Circle Tool"},
-{"id": "tools_rect_show", "title": "Square/Rect Tool"},
 {"id": "zoom", "title": "Change zoom level"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.id.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.id.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elemen"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Mengubah tingkat pembesaran"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.is.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.is.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Sporbaugur / Circle Tool"},
-{"id": "tools_rect_show", "title": "Ferningur / rect Tól"},
 {"id": "zoom", "title": "Breyta Stækkunarstig"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.it.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.it.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Separa Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Cambia il livello di zoom"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.ja.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.ja.js	Fri Apr 23 22:38:00 2010 +0200
@@ -1,158 +1,156 @@
 [
-{"id": "align_relative_to", "title": "整列するために相対的な ..."},
-{"id": "angle", "title": "変更の回転角"},
+{"id": "align_relative_to", "title": "揃える"},
+{"id": "angle", "title": "回転角の変更"},
 {"id": "angleLabel", "textContent": "角度:"},
-{"id": "bkgnd_color", "title": "変更の背景色/不透明度"},
-{"id": "circle_cx", "title": "変更円の佐川急便の座標"},
-{"id": "circle_cy", "title": "変更サークルサイ座標"},
+{"id": "bkgnd_color", "title": "背景色/不透明度の変更"},
+{"id": "circle_cx", "title": "円の中心を変更(X座標)"},
+{"id": "circle_cy", "title": "円の中心を変更(Y座標)"},
 {"id": "circle_r", "title": "変更円の半径"},
-{"id": "cornerRadiusLabel", "textContent": "コーナー半径:"},
-{"id": "curve_segments", "textContent": "Curve"},
-{"id": "ellipse_cx", "title": "の座標佐川急便楕円を変更する"},
-{"id": "ellipse_cy", "title": "変更楕円サイ座標"},
-{"id": "ellipse_rx", "title": "変更する楕円のx半径"},
-{"id": "ellipse_ry", "title": "変更する楕円のy半径"},
-{"id": "fill_color", "title": "変更の塗りつぶしの色"},
-{"id": "fill_tool_bottom", "textContent": "満ちる:"},
-{"id": "fitToContent", "textContent": "フィットコンテンツへ"},
-{"id": "fit_to_all", "textContent": "フィットすべてのコンテンツに"},
-{"id": "fit_to_canvas", "textContent": "フィットキャンバスに"},
-{"id": "fit_to_layer_content", "textContent": "に合うようにレイヤーのコンテンツ"},
-{"id": "fit_to_sel", "textContent": "フィットを選択する"},
-{"id": "font_family", "title": "フォントの変更ご家族"},
+{"id": "cornerRadiusLabel", "textContent": "角の半径:"},
+{"id": "curve_segments", "textContent": "カーブ"},
+{"id": "ellipse_cx", "title": "楕円の中心を変更(X座標)"},
+{"id": "ellipse_cy", "title": "楕円の中心を変更(Y座標)"},
+{"id": "ellipse_rx", "title": "楕円の半径を変更(X座標)"},
+{"id": "ellipse_ry", "title": "楕円の半径を変更(Y座標)"},
+{"id": "fill_color", "title": "塗りの色を変更"},
+{"id": "fill_tool_bottom", "textContent": "塗り:"},
+{"id": "fitToContent", "textContent": "コンテンツに合わせる"},
+{"id": "fit_to_all", "textContent": "すべてのコンテンツに合わせる"},
+{"id": "fit_to_canvas", "textContent": "キャンバスに合わせる"},
+{"id": "fit_to_layer_content", "textContent": "レイヤー上のコンテンツに合わせる"},
+{"id": "fit_to_sel", "textContent": "選択対象に合わせる"},
+{"id": "font_family", "title": "フォントファミリーの変更"},
 {"id": "font_size", "title": "文字サイズの変更"},
-{"id": "group_opacity", "title": "変更項目の不透明度を選択"},
+{"id": "group_opacity", "title": "不透明度"},
 {"id": "icon_large", "textContent": "Large"},
 {"id": "icon_medium", "textContent": "Medium"},
 {"id": "icon_small", "textContent": "Small"},
 {"id": "icon_xlarge", "textContent": "Extra Large"},
 {"id": "iheightLabel", "textContent": "高さ:"},
-{"id": "image_height", "title": "変更するイメージの高さ"},
-{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
-{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_height", "title": "画像の高さを変更"},
+{"id": "image_opt_embed", "textContent": "SVGファイルに埋め込む"},
+{"id": "image_opt_ref", "textContent": "画像を参照する"},
 {"id": "image_url", "title": "URLを変更"},
-{"id": "image_width", "title": "変更するイメージの幅"},
-{"id": "includedImages", "textContent": "Included Images"},
+{"id": "image_width", "title": "画像の幅を変更"},
+{"id": "includedImages", "textContent": "挿入された画像の扱い"},
 {"id": "iwidthLabel", "textContent": "幅:"},
 {"id": "largest_object", "textContent": "最大のオブジェクト"},
-{"id": "layer_delete", "title": "レイヤーの削除"},
-{"id": "layer_down", "title": "レイヤ下へ移動"},
-{"id": "layer_new", "title": "New Layer"},
-{"id": "layer_rename", "title": "名前を変更するレイヤ"},
-{"id": "layer_up", "title": "最大のレイヤに移動"},
-{"id": "layersLabel", "textContent": "層:"},
-{"id": "line_x1", "title": "変更行のx座標を開始"},
-{"id": "line_x2", "title": "変更行のx座標を終了"},
-{"id": "line_y1", "title": "変更直線y開始の座標"},
-{"id": "line_y2", "title": "変更直線y期の座標"},
+{"id": "layer_delete", "title": "レイヤの削除"},
+{"id": "layer_down", "title": "レイヤを下へ移動"},
+{"id": "layer_new", "title": "新規レイヤ"},
+{"id": "layer_rename", "title": "レイヤの名前を変更"},
+{"id": "layer_up", "title": "レイヤを上へ移動"},
+{"id": "layersLabel", "textContent": "レイヤ:"},
+{"id": "line_x1", "title": "開始X座標"},
+{"id": "line_x2", "title": "終了X座標"},
+{"id": "line_y1", "title": "開始Y座標"},
+{"id": "line_y2", "title": "終了Y座標"},
 {"id": "page", "textContent": "ページ"},
-{"id": "palette", "title": "をクリックして、色、シフトを埋めるストロークの色を変更するをクリックして変更する"},
-{"id": "path_node_x", "title": "Change node's x coordinate"},
-{"id": "path_node_y", "title": "Change node's y coordinate"},
-{"id": "rect_height", "title": "変更する四角形の高さ"},
-{"id": "rect_rx", "title": "変更長方形コーナー半径"},
-{"id": "rect_width", "title": "変更する長方形の幅"},
+{"id": "palette", "title": "クリックで塗りの色を選択、Shift+クリックで線の色を選択"},
+{"id": "path_node_x", "title": "ノードのX座標を変更"},
+{"id": "path_node_y", "title": "ノードのY座標を変更"},
+{"id": "rect_height", "title": "長方形の高さを変更"},
+{"id": "rect_rx", "title": "長方形の角の半径を変更"},
+{"id": "rect_width", "title": "長方形の幅を変更"},
 {"id": "relativeToLabel", "textContent": "相対:"},
 {"id": "rheightLabel", "textContent": "高さ:"},
 {"id": "rwidthLabel", "textContent": "幅:"},
-{"id": "seg_type", "title": "Change Segment type"},
-{"id": "selLayerLabel", "textContent": "Move elements to:"},
-{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
-{"id": "selectedPredefined", "textContent": "を選択する事前定義された:"},
-{"id": "selected_objects", "textContent": "選ばれたオブジェクト"},
-{"id": "selected_x", "title": "Change X coordinate"},
-{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "seg_type", "title": "線分の種類を変更"},
+{"id": "selLayerLabel", "textContent": "移動先レイヤ:"},
+{"id": "selLayerNames", "title": "選択対象を別のレイヤに移動"},
+{"id": "selectedPredefined", "textContent": "デフォルト"},
+{"id": "selected_objects", "textContent": "選択オブジェクト"},
+{"id": "selected_x", "title": "X座標を変更"},
+{"id": "selected_y", "title": "Y座標を変更"},
 {"id": "smallest_object", "textContent": "最小のオブジェクト"},
-{"id": "straight_segments", "textContent": "Straight"},
-{"id": "stroke_color", "title": "変更ストロークの色"},
-{"id": "stroke_style", "title": "変更ストロークダッシュスタイル"},
-{"id": "stroke_tool_bottom", "textContent": "打撃:"},
-{"id": "stroke_width", "title": "変更ストローク幅"},
-{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
-{"id": "svginfo_change_background", "textContent": "Editor Background"},
-{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
-{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "straight_segments", "textContent": "直線"},
+{"id": "stroke_color", "title": "線の色を変更"},
+{"id": "stroke_style", "title": "線種の変更"},
+{"id": "stroke_tool_bottom", "textContent": "線:"},
+{"id": "stroke_width", "title": "線幅の変更"},
+{"id": "svginfo_bg_note", "textContent": "※背景色はファイルに保存されません。"},
+{"id": "svginfo_change_background", "textContent": "エディタの背景色"},
+{"id": "svginfo_dim", "textContent": "キャンバスの大きさ"},
+{"id": "svginfo_editor_prefs", "textContent": "エディタの設定"},
 {"id": "svginfo_height", "textContent": "高さ:"},
-{"id": "svginfo_icons", "textContent": "Icon size"},
-{"id": "svginfo_image_props", "textContent": "Image Properties"},
-{"id": "svginfo_lang", "textContent": "Language"},
-{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_icons", "textContent": "アイコンの大きさ"},
+{"id": "svginfo_image_props", "textContent": "イメージの設定"},
+{"id": "svginfo_lang", "textContent": "言語"},
+{"id": "svginfo_title", "textContent": "タイトル"},
 {"id": "svginfo_width", "textContent": "幅:"},
-{"id": "text", "title": "変更するテキストの内容"},
+{"id": "text", "title": "テキストの内容の変更"},
 {"id": "tool_alignbottom", "title": "下揃え"},
 {"id": "tool_aligncenter", "title": "中央揃え"},
 {"id": "tool_alignleft", "title": "左揃え"},
-{"id": "tool_alignmiddle", "title": "整列中東"},
+{"id": "tool_alignmiddle", "title": "中央揃え"},
 {"id": "tool_alignright", "title": "右揃え"},
-{"id": "tool_aligntop", "title": "整列トップ"},
-{"id": "tool_bold", "title": "太字テキスト"},
-{"id": "tool_circle", "title": "サークル"},
-{"id": "tool_clear", "textContent": "新しいイメージ"},
-{"id": "tool_clone", "title": "クローン要素"},
-{"id": "tool_clone_multi", "title": "クローンの要素"},
-{"id": "tool_delete", "title": "削除する要素"},
-{"id": "tool_delete_multi", "title": "Delete Selected Elements"},
+{"id": "tool_aligntop", "title": "上揃え"},
+{"id": "tool_bold", "title": "太字"},
+{"id": "tool_circle", "title": "円"},
+{"id": "tool_clear", "textContent": "新規イメージ"},
+{"id": "tool_clone", "title": "複製"},
+{"id": "tool_clone_multi", "title": "選択対象を複製"},
+{"id": "tool_delete", "title": "削除"},
+{"id": "tool_delete_multi", "title": "選択対象を削除"},
 {"id": "tool_docprops", "textContent": "文書のプロパティ"},
 {"id": "tool_docprops_cancel", "textContent": "キャンセル"},
 {"id": "tool_docprops_save", "textContent": "OK"},
 {"id": "tool_ellipse", "title": "楕円"},
 {"id": "tool_fhellipse", "title": "フリーハンド楕円"},
 {"id": "tool_fhpath", "title": "鉛筆ツール"},
-{"id": "tool_fhrect", "title": "フリーハンドのRectangle"},
-{"id": "tool_group", "title": "グループ要素"},
+{"id": "tool_fhrect", "title": "フリーハンド長方形"},
+{"id": "tool_group", "title": "グループ化"},
 {"id": "tool_image", "title": "イメージツール"},
-{"id": "tool_italic", "title": "イタリック体のテキスト"},
-{"id": "tool_line", "title": "ラインツール"},
-{"id": "tool_move_bottom", "title": "下に移動"},
-{"id": "tool_move_top", "title": "トップに移動します。"},
-{"id": "tool_node_clone", "title": "Clone Node"},
-{"id": "tool_node_delete", "title": "Delete Node"},
-{"id": "tool_node_link", "title": "Link Control Points"},
-{"id": "tool_open", "textContent": "[イメージを開く"},
-{"id": "tool_path", "title": "Path tool"},
-{"id": "tool_rect", "title": "四角形"},
-{"id": "tool_redo", "title": "REDOログ"},
-{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_italic", "title": "イタリック体"},
+{"id": "tool_line", "title": "直線ツール"},
+{"id": "tool_move_bottom", "title": "奥に移動"},
+{"id": "tool_move_top", "title": "手前に移動"},
+{"id": "tool_node_clone", "title": "ノードを複製"},
+{"id": "tool_node_delete", "title": "ノードを削除"},
+{"id": "tool_node_link", "title": "制御点の接続"},
+{"id": "tool_open", "textContent": "イメージを開く"},
+{"id": "tool_path", "title": "パスツール"},
+{"id": "tool_rect", "title": "長方形"},
+{"id": "tool_redo", "title": "やり直し"},
+{"id": "tool_reorient", "title": "現在の角度を0度とする"},
 {"id": "tool_save", "textContent": "画像を保存"},
 {"id": "tool_select", "title": "選択ツール"},
-{"id": "tool_source", "title": "[編集]ソース"},
+{"id": "tool_source", "title": "ソースの編集"},
 {"id": "tool_source_cancel", "textContent": "キャンセル"},
-{"id": "tool_source_save", "textContent": "Apply Changes"},
-{"id": "tool_square", "title": "広場"},
+{"id": "tool_source_save", "textContent": "適用"},
+{"id": "tool_square", "title": "正方形"},
 {"id": "tool_text", "title": "テキストツール"},
-{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_topath", "title": "パスに変換"},
 {"id": "tool_undo", "title": "元に戻す"},
-{"id": "tool_ungroup", "title": "グループ化を解除要素"},
-{"id": "tool_wireframe", "title": "Wireframe Mode [F]"},
+{"id": "tool_ungroup", "title": "グループ化を解除"},
+{"id": "tool_wireframe", "title": "ワイヤーフレームで表示 [F]"},
 {"id": "tool_zoom", "title": "ズームツール"},
-{"id": "tools_ellipse_show", "title": "楕円/サークルツール"},
-{"id": "tools_rect_show", "title": "スクエア/ Rectツール"},
-{"id": "zoom", "title": "変更のズームレベル"},
+{"id": "zoom", "title": "ズーム倍率の変更"},
 {"id": "zoomLabel", "textContent": "ズーム:"},
-{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "ドラッグで幅の調整"},
 {
  "js_strings": {
-  "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", 
-  "QignoreSourceChanges": "Ignore changes made to SVG source?", 
-  "QmoveElemsToLayer": "Move selected elements to layer '%s'?", 
-  "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", 
-  "cancel": "Cancel", 
-  "dupeLayerName": "There is already a layer named that!", 
-  "enterNewImgURL": "Enter the new image URL", 
-  "enterNewLayerName": "Please enter the new layer name", 
-  "enterUniqueLayerName": "Please enter a unique layer name", 
-  "featNotSupported": "Feature not supported", 
-  "invalidAttrValGiven": "Invalid value given", 
+  "QerrorsRevertToSource": "ソースにエラーがあります。\n元のソースに戻しますか?", 
+  "QignoreSourceChanges": "ソースの変更を無視しますか?", 
+  "QmoveElemsToLayer": "選択した要素をレイヤー '%s' に移動しますか?", 
+  "QwantToClear": "キャンバスをクリアしますか?\nアンドゥ履歴も消去されます。", 
+  "cancel": "キャンセル", 
+  "dupeLayerName": "同名のレイヤーが既に存在します。", 
+  "enterNewImgURL": "画像のURLを入力してください。", 
+  "enterNewLayerName": "レイヤの新しい名前を入力してください。", 
+  "enterUniqueLayerName": "新規レイヤの一意な名前を入力してください。", 
+  "featNotSupported": "機能はサポートされていません。", 
+  "invalidAttrValGiven": "無効な値が指定されています。", 
   "key_backspace": "backspace", 
   "key_del": "delete", 
   "key_down": "down", 
   "key_up": "up", 
-  "layer": "Layer", 
-  "layerHasThatName": "Layer already has that name", 
-  "noContentToFitTo": "No content to fit to", 
+  "layer": "レイヤ", 
+  "layerHasThatName": "既に同名が付いています。", 
+  "noContentToFitTo": "合わせる対象のコンテンツがありません。", 
   "ok": "OK", 
-  "pathCtrlPtTooltip": "Drag control point to adjust curve properties", 
-  "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type"
+  "pathCtrlPtTooltip": "カーブの形状を調整するには、制御点をドラッグしてください。", 
+  "pathNodeTooltip": "移動するには、ノードをドラッグしてください。ノードをダブルクリックすると線分の種類を変更できます。"
  }
 }
 ]
\ No newline at end of file
--- a/htdocs/svg-edit/editor/locale/lang.ko.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.ko.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "그룹 해제 요소"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "줌 도구"},
-{"id": "tools_ellipse_show", "title": "타원 / 원형 도구"},
-{"id": "tools_rect_show", "title": "광장 / RECT 도구"},
 {"id": "zoom", "title": "변경 수준으로 확대"},
 {"id": "zoomLabel", "textContent": "축소:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.lt.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.lt.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Išgrupuoti elementai"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Įrankį"},
-{"id": "tools_ellipse_show", "title": "Elipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Keisti mastelį"},
 {"id": "zoomLabel", "textContent": "Padidinti:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.lv.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.lv.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Atgrupēt Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Elipse / Circle rīks"},
-{"id": "tools_rect_show", "title": "Kvadrātveida / Rect rīks"},
 {"id": "zoom", "title": "Pārmaiņu mērogu"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.mk.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.mk.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Елементи"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Алатка за зумирање"},
-{"id": "tools_ellipse_show", "title": "Елипса / круг Алатка"},
-{"id": "tools_rect_show", "title": "Square / Rect Алатка"},
 {"id": "zoom", "title": "Промена зум ниво"},
 {"id": "zoomLabel", "textContent": "зум:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.ms.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.ms.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elemen"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / rect Tool"},
 {"id": "zoom", "title": "Mengubah peringkat pembesaran"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.mt.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.mt.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellissi / Circle Tool"},
-{"id": "tools_rect_show", "title": "Pjazza / Rect Tool"},
 {"id": "zoom", "title": "Bidla zoom livell"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.nl.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.nl.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Groepering opheffen"},
 {"id": "tool_wireframe", "title": "Draadmodel"},
 {"id": "tool_zoom", "title": "Zoom"},
-{"id": "tools_ellipse_show", "title": "Ellips/cirkel"},
-{"id": "tools_rect_show", "title": "Vierkant/rechthoek"},
 {"id": "zoom", "title": "In-/uitzoomen"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a g e n", "title": "Sleep naar links/rechts om het zijpaneel te vergroten/verkleinen"},
--- a/htdocs/svg-edit/editor/locale/lang.no.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.no.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Dele opp Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse / sirkel Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Endre zoomnivå"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.pl.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.pl.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Elementy Rozgrupuj"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Elipsa / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Zmiana poziomu powiększenia"},
 {"id": "zoomLabel", "textContent": "Zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.pt-PT.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.pt-PT.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Elementos Desagrupar"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Elipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Alterar o nível de zoom"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.ro.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.ro.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Anulare Grupare Elemente"},
 {"id": "tool_wireframe", "title": "Mod Schelet"},
 {"id": "tool_zoom", "title": "Unealta de Zoom"},
-{"id": "tools_ellipse_show", "title": "Unealta de Elipsă / Cerc"},
-{"id": "tools_rect_show", "title": "Unealta de Pătrat / Dreptunghi"},
 {"id": "zoom", "title": "Schimbarea nivelului de zoom"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "S t r a t u r i", "title": "Trage stanga/dreapta pentru redimensionare  panou lateral"},
--- a/htdocs/svg-edit/editor/locale/lang.sk.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.sk.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Zrušiť skupinu"},
 {"id": "tool_wireframe", "title": "Drôtový model"},
 {"id": "tool_zoom", "title": "Priblíženie"},
-{"id": "tools_ellipse_show", "title": "Elipsa / Kružnica"},
-{"id": "tools_rect_show", "title": "Štvorec / Obdĺžnik"},
 {"id": "zoom", "title": "Zmena priblíženia"},
 {"id": "zoomLabel", "textContent": "priblíženie:"},
 {"id": "sidepanel_handle", "textContent": "V r s t v y", "title": "Ťahajte vľavo/vpravo na zmenu veľkosti"},
--- a/htdocs/svg-edit/editor/locale/lang.sl.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.sl.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Razdruži Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Elipsa / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / rect Tool"},
 {"id": "zoom", "title": "Spreminjanje povečave"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.sq.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.sq.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Elemente Ungroup"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Elips / Rrethi Tool"},
-{"id": "tools_rect_show", "title": "Sheshi / rect Tool"},
 {"id": "zoom", "title": "Ndryshimi zoom nivel"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.sr.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.sr.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Разгрупирање Елементи"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Алатка за зумирање"},
-{"id": "tools_ellipse_show", "title": "Елипса / круг Алат"},
-{"id": "tools_rect_show", "title": "Скуаре / прав Алат"},
 {"id": "zoom", "title": "Промените ниво зумирања"},
 {"id": "zoomLabel", "textContent": "зум:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.sv.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.sv.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Dela Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoomverktyget"},
-{"id": "tools_ellipse_show", "title": "Ellips / Circle Tool"},
-{"id": "tools_rect_show", "title": "Square / Rect Tool"},
 {"id": "zoom", "title": "Ändra zoomnivå"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.sw.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.sw.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "Mraba / Rect Tool"},
 {"id": "zoom", "title": "Change zoom ngazi"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.th.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.th.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "องค์ประกอบ Ungroup"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "เครื่องมือซูม"},
-{"id": "tools_ellipse_show", "title": "Ellipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "ตาราง / เครื่องมือ Rect"},
 {"id": "zoom", "title": "เปลี่ยนระดับการซูม"},
 {"id": "zoomLabel", "textContent": "ซูม:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.tl.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.tl.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Sangkap"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Mag-zoom Kasangkapan"},
-{"id": "tools_ellipse_show", "title": "Tambilugan / Circle Kasangkapan"},
-{"id": "tools_rect_show", "title": "Square / Rect Kasangkapan"},
 {"id": "zoom", "title": "Baguhin ang antas ng zoom"},
 {"id": "zoomLabel", "textContent": "mag-zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.tr.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.tr.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Çöz Elemanları"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Elips / Circle Aracı"},
-{"id": "tools_rect_show", "title": "Kare / Rect Aracı"},
 {"id": "zoom", "title": "Yakınlaştırma düzeyini değiştirebilirsiniz"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.uk.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.uk.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Елементи розгрупувати"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Еліпс / коло інструментів"},
-{"id": "tools_rect_show", "title": "Площа / Rect Tool"},
 {"id": "zoom", "title": "Зміна масштабу"},
 {"id": "zoomLabel", "textContent": "Збільшити:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.vi.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.vi.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "Ungroup Elements"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "Zoom Tool"},
-{"id": "tools_ellipse_show", "title": "Ellipse / Circle Tool"},
-{"id": "tools_rect_show", "title": "Vuông / Rect Tool"},
 {"id": "zoom", "title": "Thay đổi mức độ phóng"},
 {"id": "zoomLabel", "textContent": "zoom:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.yi.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.yi.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "ונגראָופּ עלעמענץ"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "פארגרעסער טול"},
-{"id": "tools_ellipse_show", "title": "עלליפּסע / סירקלע טול"},
-{"id": "tools_rect_show", "title": "קוואדראט / רעקט טול"},
 {"id": "zoom", "title": "ענדערן פארגרעסער הייך"},
 {"id": "zoomLabel", "textContent": "פארגרעסער:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- a/htdocs/svg-edit/editor/locale/lang.zh-CN.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.zh-CN.js	Fri Apr 23 22:38:00 2010 +0200
@@ -125,8 +125,6 @@
 {"id": "tool_ungroup", "title": "取消组合元素"},
 {"id": "tool_wireframe", "title": "Wireframe Mode"},
 {"id": "tool_zoom", "title": "缩放工具"},
-{"id": "tools_ellipse_show", "title": "椭圆/圆工具"},
-{"id": "tools_rect_show", "title": "广场/整流工具"},
 {"id": "zoom", "title": "更改缩放级别"},
 {"id": "zoomLabel", "textContent": "变焦:"},
 {"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/svg-edit/editor/locale/lang.zh-HK.js	Fri Apr 23 22:38:00 2010 +0200
@@ -0,0 +1,156 @@
+[
+{"id": "align_relative_to", "title": "相对对齐 ..."},
+{"id": "angle", "title": "旋转角度的变化"},
+{"id": "angleLabel", "textContent": "角:"},
+{"id": "bkgnd_color", "title": "更改背景颜色/不透明"},
+{"id": "circle_cx", "title": "改变循环的CX坐标"},
+{"id": "circle_cy", "title": "改变循环的赛扬坐标"},
+{"id": "circle_r", "title": "改变圆的半径"},
+{"id": "cornerRadiusLabel", "textContent": "角半径:"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "改变椭圆的CX坐标"},
+{"id": "ellipse_cy", "title": "改变椭圆的赛扬坐标"},
+{"id": "ellipse_rx", "title": "改变椭圆的x半径"},
+{"id": "ellipse_ry", "title": "改变椭圆的y半径"},
+{"id": "fill_color", "title": "更改填充颜色"},
+{"id": "fill_tool_bottom", "textContent": "充满:"},
+{"id": "fitToContent", "textContent": "适合内容"},
+{"id": "fit_to_all", "textContent": "适合于所有的内容"},
+{"id": "fit_to_canvas", "textContent": "适合画布"},
+{"id": "fit_to_layer_content", "textContent": "适合层内容"},
+{"id": "fit_to_sel", "textContent": "适合选择"},
+{"id": "font_family", "title": "更改字体家族"},
+{"id": "font_size", "title": "更改字体大小"},
+{"id": "group_opacity", "title": "更改所选项目不透明"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "iheightLabel", "textContent": "高度:"},
+{"id": "image_height", "title": "更改图像高度"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "更改网址"},
+{"id": "image_width", "title": "更改图像的宽度"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "iwidthLabel", "textContent": "宽度:"},
+{"id": "largest_object", "textContent": "最大对象"},
+{"id": "layer_delete", "title": "删除层"},
+{"id": "layer_down", "title": "层向下移动"},
+{"id": "layer_new", "title": "新层"},
+{"id": "layer_rename", "title": "重命名层"},
+{"id": "layer_up", "title": "移动层最多"},
+{"id": "layersLabel", "textContent": "层:"},
+{"id": "line_x1", "title": "更改行的起点的x坐标"},
+{"id": "line_x2", "title": "更改行的结束x坐标"},
+{"id": "line_y1", "title": "更改行的起点的y坐标"},
+{"id": "line_y2", "title": "更改行的结束y坐标"},
+{"id": "page", "textContent": "网页"},
+{"id": "palette", "title": "点击更改填充颜色,按住Shift键单击更改颜色中风"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height", "title": "更改矩形的高度"},
+{"id": "rect_rx", "title": "矩形角半径的变化"},
+{"id": "rect_width", "title": "更改矩形的宽度"},
+{"id": "relativeToLabel", "textContent": "相对于:"},
+{"id": "rheightLabel", "textContent": "身高:"},
+{"id": "rwidthLabel", "textContent": "宽度:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "选择预定义:"},
+{"id": "selected_objects", "textContent": "选对象"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "最小的对象"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "中风的颜色变化"},
+{"id": "stroke_style", "title": "更改行程冲刺风格"},
+{"id": "stroke_tool_bottom", "textContent": "敲击:"},
+{"id": "stroke_width", "title": "笔划宽度的变化"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "高度:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "宽度:"},
+{"id": "text", "title": "更改文字内容"},
+{"id": "tool_alignbottom", "title": "底部对齐"},
+{"id": "tool_aligncenter", "title": "居中对齐"},
+{"id": "tool_alignleft", "title": "左对齐"},
+{"id": "tool_alignmiddle", "title": "中间对齐"},
+{"id": "tool_alignright", "title": "右对齐"},
+{"id": "tool_aligntop", "title": "顶端对齐"},
+{"id": "tool_bold", "title": "粗体"},
+{"id": "tool_circle", "title": "圈"},
+{"id": "tool_clear", "textContent": "新形象"},
+{"id": "tool_clone", "title": "克隆元素"},
+{"id": "tool_clone_multi", "title": "克隆元素"},
+{"id": "tool_delete", "title": "删除元素"},
+{"id": "tool_delete_multi", "title": "删除所选元素"},
+{"id": "tool_docprops", "textContent": "文档属性"},
+{"id": "tool_docprops_cancel", "textContent": "取消"},
+{"id": "tool_docprops_save", "textContent": "保存"},
+{"id": "tool_ellipse", "title": "椭圆"},
+{"id": "tool_fhellipse", "title": "免费手椭圆"},
+{"id": "tool_fhpath", "title": "铅笔工具"},
+{"id": "tool_fhrect", "title": "免费手矩形"},
+{"id": "tool_group", "title": "族元素"},
+{"id": "tool_image", "title": "图像工具"},
+{"id": "tool_italic", "title": "斜体文本"},
+{"id": "tool_line", "title": "线工具"},
+{"id": "tool_move_bottom", "title": "移至底部"},
+{"id": "tool_move_top", "title": "移动到顶部"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_open", "textContent": "打开图像"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "矩形"},
+{"id": "tool_redo", "title": "重做"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "保存图像"},
+{"id": "tool_select", "title": "选择工具"},
+{"id": "tool_source", "title": "编辑源"},
+{"id": "tool_source_cancel", "textContent": "取消"},
+{"id": "tool_source_save", "textContent": "保存"},
+{"id": "tool_square", "title": "广场"},
+{"id": "tool_text", "title": "文字工具"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "撤消"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "缩放工具"},
+{"id": "zoom", "title": "更改缩放级别"},
+{"id": "zoomLabel", "textContent": "变焦:"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+  "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", 
+  "QignoreSourceChanges": "Ignore changes made to SVG source?", 
+  "QmoveElemsToLayer": "Move selected elements to layer '%s'?", 
+  "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", 
+  "cancel": "Cancel", 
+  "dupeLayerName": "There is already a layer named that!", 
+  "enterNewImgURL": "Enter the new image URL", 
+  "enterNewLayerName": "Please enter the new layer name", 
+  "enterUniqueLayerName": "Please enter a unique layer name", 
+  "featNotSupported": "Feature not supported", 
+  "invalidAttrValGiven": "Invalid value given", 
+  "key_backspace": "backspace", 
+  "key_del": "delete", 
+  "key_down": "down", 
+  "key_up": "up", 
+  "layer": "Layer", 
+  "layerHasThatName": "Layer already has that name", 
+  "noContentToFitTo": "No content to fit to", 
+  "ok": "OK", 
+  "pathCtrlPtTooltip": "Drag control point to adjust curve properties", 
+  "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type"
+ }
+}
+]
\ No newline at end of file
--- a/htdocs/svg-edit/editor/locale/lang.zh-TW.js	Fri Apr 23 22:29:49 2010 +0200
+++ b/htdocs/svg-edit/editor/locale/lang.zh-TW.js	Fri Apr 23 22:38:00 2010 +0200
@@ -87,12 +87,12 @@
 {"id":"tool_aligntop","title":"頂端對齊"},
 {"id":"tool_bold","title":"粗體"},
 {"id":"tool_circle","title":"圓"},
-{"id":"tool_clear","title":"清空圖像"},
+{"id":"tool_clear","textContent":"清空圖像"},
 {"id":"tool_clone","title":"複製"},
 {"id":"tool_clone_multi","title":"複製所選元素"},
 {"id":"tool_delete","title":"刪除"},
 {"id":"tool_delete_multi","title":"刪除所選元素"},
-{"id":"tool_docprops","title":"文件屬性"},
+{"id":"tool_docprops","textContent":"文件屬性"},
 {"id":"tool_docprops_cancel","textContent":"取消"},
 {"id":"tool_docprops_save","textContent":"保存"},
 {"id":"tool_ellipse","title":"橢圓"},
@@ -108,12 +108,12 @@
 {"id":"tool_node_clone","title":"增加節點"},
 {"id":"tool_node_delete","title":"刪除節點"},
 {"id":"tool_node_link","title":"將控制點連起來"},
-{"id":"tool_open","title":"打開圖像"},
+{"id":"tool_open","textContent":"打開圖像"},
 {"id":"tool_path","title":"路徑工具"},
 {"id":"tool_rect","title":"矩形"},
 {"id":"tool_redo","title":"復原"},
 {"id":"tool_reorient","title":"調整路徑"},
-{"id":"tool_save","title":"保存圖像"},
+{"id":"tool_save","textContent":"保存圖像"},
 {"id":"tool_select","title":"選擇工具"},
 {"id":"tool_source","title":"編輯SVG原始碼"},
 {"id":"tool_source_cancel","textContent":"取消"},
@@ -125,8 +125,6 @@
 {"id":"tool_ungroup","title":"取消群組"},
 {"id":"tool_wireframe","title":"框線模式(只瀏覽線條)"},
 {"id":"tool_zoom","title":"縮放工具"},
-{"id":"tools_ellipse_show","title":"橢圓/圓工具"},
-{"id":"tools_rect_show","title":"矩形/方形工具"},
 {"id":"zoom","title":"更改縮放級別"},
 {"id":"zoomLabel","textContent":"調整頁面大小:"},
 {"id":"sidepanel_handle","textContent":"圖層","title":"拖拉以改變側邊面板的大小"},
--- a/htdocs/svg-edit/editor/locale/lang.zh.js	Fri Apr 23 22:29:49 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-[
-{"id": "align_relative_to", "title": "相对对齐 ..."},
-{"id": "angle", "title": "旋转角度的变化"},
-{"id": "angleLabel", "textContent": "角:"},
-{"id": "bkgnd_color", "title": "更改背景颜色/不透明"},
-{"id": "circle_cx", "title": "改变循环的CX坐标"},
-{"id": "circle_cy", "title": "改变循环的赛扬坐标"},
-{"id": "circle_r", "title": "改变圆的半径"},
-{"id": "cornerRadiusLabel", "textContent": "角半径:"},
-{"id": "curve_segments", "textContent": "Curve"},
-{"id": "ellipse_cx", "title": "改变椭圆的CX坐标"},
-{"id": "ellipse_cy", "title": "改变椭圆的赛扬坐标"},
-{"id": "ellipse_rx", "title": "改变椭圆的x半径"},
-{"id": "ellipse_ry", "title": "改变椭圆的y半径"},
-{"id": "fill_color", "title": "更改填充颜色"},
-{"id": "fill_tool_bottom", "textContent": "充满:"},