[Checkins] SVN: z3c.website/trunk/src/z3c/website/ Improve website

Roger Ineichen roger at projekt01.ch
Fri May 25 02:20:23 EDT 2007


Log message for revision 75956:
  Improve website
  Added JQuery based rounded corner
  Implemented live search

Changed:
  U   z3c.website/trunk/src/z3c/website/browser/configure.zcml
  U   z3c.website/trunk/src/z3c/website/browser/member.py
  U   z3c.website/trunk/src/z3c/website/browser/members.pt
  U   z3c.website/trunk/src/z3c/website/browser/page.py
  A   z3c.website/trunk/src/z3c/website/browser/search.py
  A   z3c.website/trunk/src/z3c/website/browser/search.zcml
  A   z3c.website/trunk/src/z3c/website/browser/search_result.pt
  U   z3c.website/trunk/src/z3c/website/interfaces.py
  U   z3c.website/trunk/src/z3c/website/sampledata/README.txt
  U   z3c.website/trunk/src/z3c/website/skin/__init__.py
  U   z3c.website/trunk/src/z3c/website/skin/configure.zcml
  U   z3c.website/trunk/src/z3c/website/skin/demo.css
  U   z3c.website/trunk/src/z3c/website/skin/demo.js
  U   z3c.website/trunk/src/z3c/website/skin/img/adding.gif
  U   z3c.website/trunk/src/z3c/website/skin/img/adding.png
  U   z3c.website/trunk/src/z3c/website/skin/img/btnSearch.gif
  U   z3c.website/trunk/src/z3c/website/skin/img/btnSearch.png
  U   z3c.website/trunk/src/z3c/website/skin/img/content.gif
  U   z3c.website/trunk/src/z3c/website/skin/img/content.png
  U   z3c.website/trunk/src/z3c/website/skin/img/edit.gif
  U   z3c.website/trunk/src/z3c/website/skin/img/edit.png
  A   z3c.website/trunk/src/z3c/website/skin/img/link.gif
  A   z3c.website/trunk/src/z3c/website/skin/img/link.png
  A   z3c.website/trunk/src/z3c/website/skin/img/samples.gif
  A   z3c.website/trunk/src/z3c/website/skin/img/samples.png
  U   z3c.website/trunk/src/z3c/website/skin/img/search.gif
  U   z3c.website/trunk/src/z3c/website/skin/img/search.png
  U   z3c.website/trunk/src/z3c/website/skin/interface.js
  A   z3c.website/trunk/src/z3c/website/skin/jquery.corner.js
  U   z3c.website/trunk/src/z3c/website/tool/adding.pt
  U   z3c.website/trunk/src/z3c/website/tool/configure.zcml
  U   z3c.website/trunk/src/z3c/website/tool/content.pt
  U   z3c.website/trunk/src/z3c/website/tool/content.py
  U   z3c.website/trunk/src/z3c/website/tool/edit.pt
  U   z3c.website/trunk/src/z3c/website/tool/samples.pt
  U   z3c.website/trunk/src/z3c/website/tool/search.pt

-=-
Modified: z3c.website/trunk/src/z3c/website/browser/configure.zcml
===================================================================
--- z3c.website/trunk/src/z3c/website/browser/configure.zcml	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/browser/configure.zcml	2007-05-25 06:20:23 UTC (rev 75956)
@@ -3,6 +3,7 @@
     i18n_domain="z3c.website">
 
   <include file="sample.zcml" />
+  <include file="search.zcml" />
   <include file="site.zcml" />
   <include file="member.zcml" />
   <include file="page.zcml" />

Modified: z3c.website/trunk/src/z3c/website/browser/member.py
===================================================================
--- z3c.website/trunk/src/z3c/website/browser/member.py	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/browser/member.py	2007-05-25 06:20:23 UTC (rev 75956)
@@ -97,11 +97,7 @@
         self.widgets.ignoreRequest = self.ignoreRequest
         self.widgets.update()
 
-#    @button.buttonAndHandler(u'Cancel')
-#    def handleCancel(self, action):
-#        self.request.response.redirect(self.request.getURL())
 
-
 class RadioButtonColumn(column.Column):
 
     def renderCell(self, item, formatter):
@@ -154,7 +150,7 @@
     columns = (
         RadioButtonColumn(_('Sel')),
         GetTextColumn(_('Login'), 'lastName', getLogin),
-        GetTextColumn(_('FirstName'), 'email', getFirstName),
+        GetTextColumn(_('First Name'), 'email', getFirstName),
         GetTextColumn(_('Last Name'), 'phone', getLastName),
         GetTextColumn(_('Email'), 'phone', getEmail),
         )
@@ -183,7 +179,7 @@
             self.context, self.request, self.members, columns=self.columns,
             prefix='members.')
         formatter.widths = [25, 150, 150, 150, 150]
-        #formatter.cssClasses['table'] = 'list'
+        formatter.cssClasses['table'] = 'list'
         return formatter()
 
     @button.buttonAndHandler(u'Edit')

Modified: z3c.website/trunk/src/z3c/website/browser/members.pt
===================================================================
--- z3c.website/trunk/src/z3c/website/browser/members.pt	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/browser/members.pt	2007-05-25 06:20:23 UTC (rev 75956)
@@ -13,6 +13,8 @@
         <tal:block replace="structure view/table" />
         <div metal:use-macro="macro:form-buttons" />
       </td>
+	</tr>
+	<tr>
       <td valign="top" width="340">
 	        <tal:block replace="structure view/getEditForm" />
       </td>

Modified: z3c.website/trunk/src/z3c/website/browser/page.py
===================================================================
--- z3c.website/trunk/src/z3c/website/browser/page.py	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/browser/page.py	2007-05-25 06:20:23 UTC (rev 75956)
@@ -166,7 +166,13 @@
     fields = field.Fields(interfaces.IContent).select('title', 
         'description', 'keyword')
 
+    def __call__(self):
+        self.update()
+        layout = zope.component.getMultiAdapter((self, self.request),
+            ILayoutTemplate)
+        return layout(self)
 
+
 class ContentEditPagelet(form.EditForm):
     """Content edit page."""
 

Added: z3c.website/trunk/src/z3c/website/browser/search.py
===================================================================
--- z3c.website/trunk/src/z3c/website/browser/search.py	                        (rev 0)
+++ z3c.website/trunk/src/z3c/website/browser/search.py	2007-05-25 06:20:23 UTC (rev 75956)
@@ -0,0 +1,61 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id: __init__.py 69382 2006-08-09 13:26:53Z rogerineichen $
+"""
+__docformat__ = "reStructuredText"
+
+import zope.interface
+import zope.component
+from zope.traversing.browser import absoluteURL
+from zope.app.catalog.interfaces import ICatalog
+from zope.app.intid.interfaces import IIntIds
+
+from z3c.pagelet import browser
+from z3c.template.interfaces import ILayoutTemplate
+
+
+
+class SearchResultPagelet(browser.BrowserPagelet):
+    """Search result page"""
+
+    idxName = u'text'
+    catalogName = u'WebSiteCatalog'
+
+    def catalogResults(self):
+        query = self.request.get('webSiteLiveSearchInput', None)
+        if query is None:
+            return {}
+        query = u'%s*' % query
+        catalog = zope.component.getUtility(ICatalog, name=self.catalogName)
+        results = catalog.apply({self.idxName:query})
+        return results
+
+    def results(self):
+        uidutil = zope.component.getUtility(IIntIds)
+        for uid, score in self.catalogResults().items():
+            obj = uidutil.getObject(uid)
+            info = {}
+            info['obj'] = obj
+            info['title'] = obj.title
+            info['description'] = obj.description
+            info['url'] = absoluteURL(obj, self.request)
+            info['score'] = "%.4f" % score
+            yield info
+
+    def __call__(self):
+        self.update()
+        layout = zope.component.getMultiAdapter((self, self.request),
+            ILayoutTemplate)
+        return layout(self)
\ No newline at end of file

Added: z3c.website/trunk/src/z3c/website/browser/search.zcml
===================================================================
--- z3c.website/trunk/src/z3c/website/browser/search.zcml	                        (rev 0)
+++ z3c.website/trunk/src/z3c/website/browser/search.zcml	2007-05-25 06:20:23 UTC (rev 75956)
@@ -0,0 +1,21 @@
+<configure
+    xmlns:zope="http://namespaces.zope.org/zope"
+    xmlns="http://namespaces.zope.org/browser"
+    xmlns:z3c="http://namespaces.zope.org/z3c"
+    i18n_domain="z3c.website">
+
+  <z3c:pagelet
+      name="searchResult.html"
+      for="z3c.website.interfaces.IWebSite"
+      class=".search.SearchResultPagelet"
+      layer="z3c.website.layer.IWebSiteBrowserLayer"
+      permission="z3c.website.ManageSite"
+      />
+
+  <z3c:template
+      template="search_result.pt"
+      for=".search.SearchResultPagelet"
+      layer="z3c.website.layer.IWebSiteBrowserLayer"
+      />
+
+</configure>

Added: z3c.website/trunk/src/z3c/website/browser/search_result.pt
===================================================================
--- z3c.website/trunk/src/z3c/website/browser/search_result.pt	                        (rev 0)
+++ z3c.website/trunk/src/z3c/website/browser/search_result.pt	2007-05-25 06:20:23 UTC (rev 75956)
@@ -0,0 +1,26 @@
+<div class="headline" i18n:translate="">
+  Search Result
+</div>
+<div id="webSiteSearchResultDetail">
+  <tal:block repeat="info view/results">
+    <div tal:define="oddrow repeat/info/odd;
+                     url info/url"
+         tal:attributes="class python:oddrow and 'even' or 'odd'" >
+      <div class="item">
+        <div class="title">
+          <a href=""
+         tal:attributes="href string:${info/url}/@@SelectedManagementView.html"
+         tal:content="info/title" />
+          <a href="" target="_blank"
+             tal:attributes="href string:${info/url}/@@SelectedManagementView.html">
+          <img id="link" src="link.gif" width="14" height="14" alt="link"
+               tal:attributes="src context/++resource++img/link.gif" />
+          </a>
+        </div>
+        <div class="description" tal:content="info/description">
+          description
+        </div>
+      </div>
+    </div>
+  </tal:block>
+</div>

Modified: z3c.website/trunk/src/z3c/website/interfaces.py
===================================================================
--- z3c.website/trunk/src/z3c/website/interfaces.py	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/interfaces.py	2007-05-25 06:20:23 UTC (rev 75956)
@@ -122,7 +122,7 @@
 
 
 class ISamplePagelet(z3c.pagelet.interfaces.IPagelet):
-    """Sample pagelet using a special IPageletRenderer whic includes intro and 
+    """Sample pagelet using a special IPageletRenderer which includes intro and 
     footer templates."""
 
 

Modified: z3c.website/trunk/src/z3c/website/sampledata/README.txt
===================================================================
--- z3c.website/trunk/src/z3c/website/sampledata/README.txt	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/sampledata/README.txt	2007-05-25 06:20:23 UTC (rev 75956)
@@ -68,13 +68,21 @@
   </script>
   <BLANKLINE>
   <script type="text/javascript"
-          src="http://localhost/++skin++Z3CWebSite/z3c/@@/jquery.resteditor.js">
+          src="http://localhost/++skin++Z3CWebSite/z3c/@@/jquery.livesearch.js">
   </script>
   <BLANKLINE>
   <script type="text/javascript"
+          src="http://localhost/++skin++Z3CWebSite/z3c/@@/jquery.corner.js">
+  </script>
+  <BLANKLINE>
+  <script type="text/javascript"
           src="http://localhost/++skin++Z3CWebSite/z3c/@@/demo.js">
   </script>
   <BLANKLINE>
+  <script type="text/javascript"
+          src="http://localhost/++skin++Z3CWebSite/z3c/@@/jquery.resteditor.js">
+  </script>
+  <BLANKLINE>
   <link type="text/css" rel="stylesheet"
         href="http://localhost/++skin++Z3CWebSite/z3c/@@/div-form.css"
         media="all" />
@@ -84,6 +92,10 @@
         media="all" />
   <BLANKLINE>
   <link type="text/css" rel="stylesheet"
+        href="http://localhost/++skin++Z3CWebSite/z3c/@@/jquery.livesearch.css"
+        media="all" />
+  <BLANKLINE>
+  <link type="text/css" rel="stylesheet"
         href="http://localhost/++skin++Z3CWebSite/z3c/@@/demo.css"
         media="all" />
   <BLANKLINE>

Modified: z3c.website/trunk/src/z3c/website/skin/__init__.py
===================================================================
--- z3c.website/trunk/src/z3c/website/skin/__init__.py	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/skin/__init__.py	2007-05-25 06:20:23 UTC (rev 75956)
@@ -27,6 +27,7 @@
 
 
 InterfaceJavaScriptViewlet = viewlet.JavaScriptViewlet('interface.js')
+JQueryCornerJavaScriptViewlet = viewlet.JavaScriptViewlet('jquery.corner.js')
 DemoJavaScriptViewlet = viewlet.JavaScriptViewlet('demo.js')
 DemoCSSViewlet = viewlet.CSSViewlet('demo.css')
 

Modified: z3c.website/trunk/src/z3c/website/skin/configure.zcml
===================================================================
--- z3c.website/trunk/src/z3c/website/skin/configure.zcml	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/skin/configure.zcml	2007-05-25 06:20:23 UTC (rev 75956)
@@ -20,6 +20,16 @@
       permission="zope.Public"
       />
 
+  <page
+      for="*"
+      name="SelectedManagementView.html"
+      permission="zope.Public"
+      class="zope.app.publisher.browser.managementviewselector.ManagementViewSelector"
+      allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher"
+      layer="z3c.website.layer.IWebSiteBrowserLayer"
+      />
+
+
   <!-- resource -->
   <zrt-resource
       name="demo.css"
@@ -34,6 +44,12 @@
       />
 
   <zrt-resource
+      name="jquery.corner.js"
+      file="jquery.corner.js"
+      layer="z3c.website.layer.IWebSiteBrowserLayer"
+      />
+
+  <zrt-resource
       name="demo.js"
       file="demo.js"
       layer="z3c.website.layer.IWebSiteBrowserLayer"
@@ -77,6 +93,16 @@
       />
 
   <viewlet
+      name="jquery.rounded.js"
+      for="*"
+      manager="z3c.website.layer.IJavaScript"
+      class=".JQueryCornerJavaScriptViewlet"
+      permission="zope.Public"
+      layer="z3c.website.layer.IWebSiteBrowserLayer"
+      weight="1000"
+      />
+
+  <viewlet
       name="demo.js"
       for="*"
       manager="z3c.website.layer.IJavaScript"

Modified: z3c.website/trunk/src/z3c/website/skin/demo.css
===================================================================
--- z3c.website/trunk/src/z3c/website/skin/demo.css	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/skin/demo.css	2007-05-25 06:20:23 UTC (rev 75956)
@@ -101,7 +101,6 @@
     position: relative;
     margin: 0px;
     padding: 0px;
-    /*background: #3E3C37 url(../img/topBG.gif) repeat-x top left;*/
     background-color: #E1E1E1;
 }
 
@@ -184,6 +183,7 @@
 #naviContainer {
 	width: 200px;
 	float: right;
+    background-color: white;
 	padding: 25px 20px 0px 0px;
 }
 
@@ -202,7 +202,6 @@
     height: 40px;
     line-height: 40px;
     color: #3257C2;
-	font-weight: bold;
     vertical-align: top;
 }
 
@@ -213,9 +212,15 @@
 
 
 div.naviBox .naviBoxBody {
+	font-size: 90%;
     color: #000000;
 }
 
+
+div.naviBox .naviBoxBody div {
+	padding-bottom: 5px;
+}
+
 div.boxSpacer {
     height: 10px;
 }
@@ -340,9 +345,6 @@
 
 /*---[ tool ]----------------------------------------------------------------*/
 
-#btnSearch {
-    border: none;
-}
 
 
 .button{
@@ -382,3 +384,72 @@
 	color: #999999;
 }
 
+/*---[ website live search result ]------------------------------------------*/
+#webSiteLiveSearchResultContainer {
+    
+}
+
+#webSiteLiveSearch input#liveSearchInput {
+    width: 140px;
+    vertical-align : middle;
+}
+
+#webSiteLiveSearch .btnSearch {
+    border: none;
+    vertical-align : middle;
+}
+
+#webSiteLiveSearchResult {
+    position: relative;
+    width: 200px;
+    border: #A7A78B solid 1px;
+	background-color: #F3F3EE;
+    margin: 5px 0px 0px -50px;
+}
+
+#webSiteLiveSearchResult a {
+    color: #666;
+}
+
+#webSiteLiveSearchResult .even {
+	background-color: #F3F3EE;
+    padding: 2px;
+}
+
+#webSiteLiveSearchResult .odd {
+	background-color: #E4E4DA;
+    padding: 2px;
+}
+
+#webSiteLiveSearchResult .left {
+    width: 120px;
+    text-align: left;
+    padding : 0;
+}
+
+#webSiteLiveSearchResult .right {
+    float: right;
+    padding : 0;
+}
+
+#webSiteSearchResultDetail .item {
+    padding: 5px;
+}
+
+#webSiteSearchResultDetail .title {
+    padding: 10px 0px 5px 0px;
+}
+
+#webSiteSearchResultDetail .description {
+    padding: 5px 0px 5px 10px;
+}
+
+#webSiteSearchResultDetail .even {
+	background-color: #F3F3EE;
+}
+
+#webSiteSearchResultDetail .odd {
+	background-color: #F9F9F7;
+}
+
+

Modified: z3c.website/trunk/src/z3c/website/skin/demo.js
===================================================================
--- z3c.website/trunk/src/z3c/website/skin/demo.js	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/skin/demo.js	2007-05-25 06:20:23 UTC (rev 75956)
@@ -1,9 +1,18 @@
+function setWebSiteLiveSearchResult(response) {
+    // we use a default element id, use a custom callback if this doesn't fit
+    ele = $('#webSiteLiveSearchResultContainer');
+    if (response.content != null) {
+        $(ele).html(response.content)
+        $(ele).show('fast')
+    } else {
+        $(ele).hide('fast')
+    }
+}
+
 $(document).ready(function() {
+    // note: we use a none leaking fixed version of the fisheye menu, ri
     $('#dock').Fisheye(
         {maxWidth: 60,
-         items: 'a',
-         itemsText: 'span',
-         container: '.dock-container',
          itemWidth: 53,
          proximity: 90,
          halign : 'center'}
@@ -11,4 +20,10 @@
     $('form#JSONValidateSample input').jsonValidate();
     $('form#JSONValidateSample textarea').jsonValidate();
     $('textarea.restEditorWidget').restEditor();
+    $('#liveSearchInput').jsonLiveSearch();
+    settings = {searchMethodName:'getWebSiteLiveSearchResult',
+                callback: setWebSiteLiveSearchResult,
+                resultElementExpression: '#webSiteLiveSearchResultContainer'}
+    $('#webSiteLiveSearchInput').jsonLiveSearch(settings);
+    $('.naviBox').corner();
 });

Modified: z3c.website/trunk/src/z3c/website/skin/img/adding.gif
===================================================================
(Binary files differ)

Modified: z3c.website/trunk/src/z3c/website/skin/img/adding.png
===================================================================
(Binary files differ)

Modified: z3c.website/trunk/src/z3c/website/skin/img/btnSearch.gif
===================================================================
(Binary files differ)

Modified: z3c.website/trunk/src/z3c/website/skin/img/btnSearch.png
===================================================================
(Binary files differ)

Modified: z3c.website/trunk/src/z3c/website/skin/img/content.gif
===================================================================
(Binary files differ)

Modified: z3c.website/trunk/src/z3c/website/skin/img/content.png
===================================================================
(Binary files differ)

Modified: z3c.website/trunk/src/z3c/website/skin/img/edit.gif
===================================================================
(Binary files differ)

Modified: z3c.website/trunk/src/z3c/website/skin/img/edit.png
===================================================================
(Binary files differ)

Added: z3c.website/trunk/src/z3c/website/skin/img/link.gif
===================================================================
(Binary files differ)


Property changes on: z3c.website/trunk/src/z3c/website/skin/img/link.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: z3c.website/trunk/src/z3c/website/skin/img/link.png
===================================================================
(Binary files differ)


Property changes on: z3c.website/trunk/src/z3c/website/skin/img/link.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: z3c.website/trunk/src/z3c/website/skin/img/samples.gif
===================================================================
(Binary files differ)


Property changes on: z3c.website/trunk/src/z3c/website/skin/img/samples.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: z3c.website/trunk/src/z3c/website/skin/img/samples.png
===================================================================
(Binary files differ)


Property changes on: z3c.website/trunk/src/z3c/website/skin/img/samples.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: z3c.website/trunk/src/z3c/website/skin/img/search.gif
===================================================================
(Binary files differ)

Modified: z3c.website/trunk/src/z3c/website/skin/img/search.png
===================================================================
(Binary files differ)

Modified: z3c.website/trunk/src/z3c/website/skin/interface.js
===================================================================
--- z3c.website/trunk/src/z3c/website/skin/interface.js	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/skin/interface.js	2007-05-25 06:20:23 UTC (rev 75956)
@@ -1,8 +1,431 @@
-/*
- * Interface elements for jQuery - http://interface.eyecon.ro
+/**
+ * Interface Elements for jQuery
+ * utility function
  *
+ * http://interface.eyecon.ro
+ *
  * Copyright (c) 2006 Stefan Petre
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ *
+ */
+
+jQuery.iUtil = {
+	getPosition : function(e, forceIt)
+	{
+		var x = 0;
+		var y = 0;
+		var es = e.style;
+		var restoreStyles = false;
+		if (forceIt && jQuery.curCSS(e,'display') == 'none') {
+			var oldVisibility = es.visibility;
+			var oldPosition = es.position;
+			restoreStyles = true;
+			es.visibility = 'hidden';
+			es.display = 'block';
+			es.position = 'absolute';
+		}
+		var el = e;
+		if (el.getBoundingClientRect) { // IE
+			var box = el.getBoundingClientRect();
+			x = box.left + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) - 2;
+			y = box.top + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - 2;
+		} else {
+			x = el.offsetLeft;
+			y = el.offsetTop;
+			el = el.offsetParent;
+			if (e != el) {
+				while (el) {
+					x += el.offsetLeft;
+					y += el.offsetTop;
+					el = el.offsetParent;
+				}
+			}
+			if (jQuery.browser.safari && jQuery.curCSS(e, 'position') == 'absolute' ) {
+				x -= document.body.offsetLeft;
+				y -= document.body.offsetTop;
+			}
+			el = e.parentNode;
+			while (el && el.tagName.toUpperCase() != 'BODY' && el.tagName.toUpperCase() != 'HTML') 
+			{
+				if (jQuery.curCSS(el, 'display') != 'inline') {
+					x -= el.scrollLeft;
+					y -= el.scrollTop;
+				}
+				el = el.parentNode;
+			}
+		}
+		if (restoreStyles == true) {
+			es.display = 'none';
+			es.position = oldPosition;
+			es.visibility = oldVisibility;
+		}
+		return {x:x, y:y};
+	},
+	getPositionLite : function(el)
+	{
+		var x = 0, y = 0;
+		while(el) {
+			x += el.offsetLeft || 0;
+			y += el.offsetTop || 0;
+			el = el.offsetParent;
+		}
+		return {x:x, y:y};
+	},
+	getSize : function(e)
+	{
+		var w = parseInt(jQuery.curCSS(e,'width'), 10);
+		var h = parseInt(jQuery.curCSS(e,'height'), 10);
+		var wb = 0;
+		var hb = 0;
+		if (jQuery.curCSS(e, 'display') != 'none') {
+			wb = e.offsetWidth;
+			hb = e.offsetHeight;
+		} else {
+			var es = e.style;
+			var oldVisibility = es.visibility;
+			var oldPosition = es.position;
+			es.visibility = 'hidden';
+			es.display = 'block';
+			es.position = 'absolute';
+			wb = e.offsetWidth;
+			hb = e.offsetHeight;
+			es.display = 'none';
+			es.position = oldPosition;
+			es.visibility = oldVisibility;
+		}
+		return {w:w, h:h, wb:wb, hb:hb};
+	},
+	getSizeLite : function(el)
+	{
+		return {
+			wb:el.offsetWidth||0,
+			hb:el.offsetHeight||0
+		};
+	},
+	getClient : function(e)
+	{
+		var h, w;
+		if (e) {
+			w = e.clientWidth;
+			h = e.clientHeight;
+		} else {
+			var de = document.documentElement;
+			w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
+			h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
+		}
+		return {w:w,h:h};
+	},
+	getScroll : function (e)
+	{
+		var t=0, l=0, w=0, h=0, iw=0, ih=0;
+		if (e && e.nodeName.toLowerCase() != 'body') {
+			t = e.scrollTop;
+			l = e.scrollLeft;
+			w = e.scrollWidth;
+			h = e.scrollHeight;
+		} else  {
+			if (document.body) {
+				t = document.body.scrollTop;
+				l = document.body.scrollLeft;
+				w = document.body.scrollWidth;
+				h = document.body.scrollHeight;
+			} else if (document.documentElement) {
+				t = document.documentElement.scrollTop;
+				l = document.documentElement.scrollLeft;
+				w = document.documentElement.scrollWidth;
+				h = document.documentElement.scrollHeight;
+			}
+			iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
+			ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
+		}
+		return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
+	},
+	getMargins : function(e, toInteger)
+	{
+		var t = jQuery.curCSS(e,'marginTop') || '';
+		var r = jQuery.curCSS(e,'marginRight') || '';
+		var b = jQuery.curCSS(e,'marginBottom') || '';
+		var l = jQuery.curCSS(e,'marginLeft') || '';
+		if (toInteger)
+			return {
+				t: parseInt(t, 10)||0,
+				r: parseInt(r, 10)||0,
+				b: parseInt(b, 10)||0,
+				l: parseInt(l, 10)
+			};
+		else
+			return {t: t, r: r,	b: b, l: l};
+	},
+	getPadding : function(e, toInteger)
+	{
+		var t = jQuery.curCSS(e,'paddingTop') || '';
+		var r = jQuery.curCSS(e,'paddingRight') || '';
+		var b = jQuery.curCSS(e,'paddingBottom') || '';
+		var l = jQuery.curCSS(e,'paddingLeft') || '';
+		if (toInteger)
+			return {
+				t: parseInt(t, 10)||0,
+				r: parseInt(r, 10)||0,
+				b: parseInt(b, 10)||0,
+				l: parseInt(l, 10)
+			};
+		else
+			return {t: t, r: r,	b: b, l: l};
+	},
+	getBorder : function(e, toInteger)
+	{
+		var t = jQuery.curCSS(e,'borderTopWidth') || '';
+		var r = jQuery.curCSS(e,'borderRightWidth') || '';
+		var b = jQuery.curCSS(e,'borderBottomWidth') || '';
+		var l = jQuery.curCSS(e,'borderLeftWidth') || '';
+		if (toInteger)
+			return {
+				t: parseInt(t, 10)||0,
+				r: parseInt(r, 10)||0,
+				b: parseInt(b, 10)||0,
+				l: parseInt(l, 10)||0
+			};
+		else
+			return {t: t, r: r,	b: b, l: l};
+	},
+	getPointer : function(event)
+	{
+		var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;
+		var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;
+		return {x:x, y:y};
+	},
+	traverseDOM : function(nodeEl, func)
+	{
+		func(nodeEl);
+		nodeEl = nodeEl.firstChild;
+		while(nodeEl){
+			jQuery.iUtil.traverseDOM(nodeEl, func);
+			nodeEl = nodeEl.nextSibling;
+		}
+	},
+	purgeEvents : function(nodeEl)
+	{
+		jQuery.iUtil.traverseDOM(
+			nodeEl,
+			function(el)
+			{
+				for(var attr in el){
+					if(typeof el[attr] === 'function') {
+						el[attr] = null;
+					}
+				}
+			}
+		);
+	},
+	getInnerWidth :  function(el, scroll) {
+		var offsetW = el.offsetWidth;
+		return scroll ? Math.max(el.scrollWidth,offsetW) - offsetW + el.clientWidth:el.clientWidth;
+		/*return (scroll ? Math.max(el.scrollWidth,el.offsetWidth) : el.offsetWidth)
+					- (parseInt($.curCSS(el, 'borderLeftWidth'), 10)||0)
+					- (parseInt($.curCSS(el, 'borderRightWidth'), 10)||0);*/
+	},
+	getInnerHeight : function(el, scroll) {
+		var offsetH = el.offsetHeight;
+		return scroll ? Math.max(el.scrollHeight,offsetH) - offsetH + el.clientHeight:el.clientHeight;
+		/*return (scroll ? Math.max(el.scrollHeight,el.offsetHeight) : el.offsetHeight)
+					- (parseInt($.curCSS(el, 'borderTopWidth'), 10)||0)
+					- (parseInt($.curCSS(el, 'borderBottomWidth'), 10)||0);*/
+	},
+	getExtraWidth : function(el) {
+		if($.boxModel)
+			return (parseInt($.curCSS(el, 'paddingLeft'), 10)||0)
+				+ (parseInt($.curCSS(el, 'paddingRight'), 10)||0)
+				+ (parseInt($.curCSS(el, 'borderLeftWidth'), 10)||0)
+				+ (parseInt($.curCSS(el, 'borderRightWidth'), 10)||0);
+		return 0;
+	},
+	getExtraHeight : function(el) {
+		if($.boxModel)
+			return (parseInt($.curCSS(el, 'paddingTop'), 10)||0)
+				+ (parseInt($.curCSS(el, 'paddingBottom'), 10)||0)
+				+ (parseInt($.curCSS(el, 'borderTopWidth'), 10)||0)
+				+ (parseInt($.curCSS(el, 'borderBottomWidth'), 10)||0);
+		return 0;
+	},
+	isChildOf: function(parentEl, el, container) {
+		if (parentEl == el) {
+			return true;
+		}
+		if (parentEl.contains && !$.browser.safari) {
+			return parentEl.contains(el);
+		}
+		if ( parentEl.compareDocumentPosition ) {
+			return !!(parentEl.compareDocumentPosition(el) & 16);
+		}
+		var prEl = el.parentNode;
+		while(prEl && prEl != container) {
+			if (prEl == parentEl)
+				return true;
+			prEl = prEl.parentNode;
+		}
+		return false;
+	},
+	centerEl : function(el, axis)
+	{
+		var clientScroll = $.iUtil.getScroll();
+		var size = $.iUtil.getSize(el);
+		if (!axis || axis == 'vertically')
+			$(el).css(
+				{
+					top: clientScroll.t + ((Math.min(clientScroll.h,clientScroll.ih) - size.hb)/2) + 'px'
+				}
+			);
+		if (!axis || axis == 'horizontally')
+			$(el).css(
+				{
+					left: clientScroll.l + ((Math.min(clientScroll.w,clientScroll.iw) - size.wb)/2) + 'px'
+				}
+			);
+	}
+};
+
+// Helper function to support older browsers!
+[].indexOf || (Array.prototype.indexOf = function(v, n){
+	n = (n == null) ? 0 : n;
+	var m = this.length;
+	for (var i=n; i<m; i++)
+		if (this[i] == v)
+			return i;
+	return -1;
+});
+
+
+
+// fixed non leaking JQuery and interfaces based fisheye menu, ri
+/**
+ * Interface Elements for jQuery
+ * Fisheye menu
+ * 
+ * http://interface.eyecon.ro
+ * 
+ * Copyright (c) 2006 Stefan Petre
  * Dual licensed under the MIT (MIT-LICENSE.txt) 
  * and GPL (GPL-LICENSE.txt) licenses.
+ *
  */
- eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('6.15={3o:d(e){7 x=0;7 y=0;7 1Q=1A;7 A=e.L;8(6(e).H(\'Q\')==\'U\'){1E=A.1a;2y=A.O;A.1a=\'1F\';A.Q=\'1Y\';A.O=\'2e\';1Q=26}7 4=e;2P(4){x+=4.3B+(4.1I&&!6.3p.41?F(4.1I.2X)||0:0);y+=4.3x+(4.1I&&!6.3p.41?F(4.1I.2Z)||0:0);4=4.4e}4=e;2P(4&&4.4a&&4.4a.39()!=\'V\'){x-=4.1D||0;y-=4.1s||0;4=4.2x}8(1Q){A.Q=\'U\';A.O=2y;A.1a=1E}q{x:x,y:y}},4E:d(4){7 x=0,y=0;2P(4){x+=4.3B||0;y+=4.3x||0;4=4.4e}q{x:x,y:y}},35:d(e){7 w=6.H(e,\'1T\');7 h=6.H(e,\'36\');7 1e=0;7 1o=0;7 A=e.L;8(6(e).H(\'Q\')!=\'U\'){1e=e.1z;1o=e.2s}u{1E=A.1a;2y=A.O;A.1a=\'1F\';A.Q=\'1Y\';A.O=\'2e\';1e=e.1z;1o=e.2s;A.Q=\'U\';A.O=2y;A.1a=1E}q{w:w,h:h,1e:1e,1o:1o}},4P:d(4){q{1e:4.1z||0,1o:4.2s||0}},58:d(e){7 h,w,22;8(e){w=e.2a;h=e.29}u{22=D.Y;w=2z.3c||2N.3c||(22&&22.2a)||D.V.2a;h=2z.31||2N.31||(22&&22.29)||D.V.29}q{w:w,h:h}},3P:d(e){7 t,l,w,h,1J,1R;8(e&&e.2E.39()!=\'V\'){t=e.1s;l=e.1D;w=e.3j;h=e.3e;1J=0;1R=0}u{8(D.Y&&D.Y.1s){t=D.Y.1s;l=D.Y.1D;w=D.Y.3j;h=D.Y.3e}u 8(D.V){t=D.V.1s;l=D.V.1D;w=D.V.3j;h=D.V.3e}1J=2N.3c||D.Y.2a||D.V.2a||0;1R=2N.31||D.Y.29||D.V.29||0}q{t:t,l:l,w:w,h:h,1J:1J,1R:1R}},3L:d(e,1U){7 4=6(e);7 t=4.H(\'2j\')||\'\';7 r=4.H(\'2k\')||\'\';7 b=4.H(\'2n\')||\'\';7 l=4.H(\'2l\')||\'\';8(1U)q{t:F(t)||0,r:F(r)||0,b:F(b)||0,l:F(l)};u q{t:t,r:r,b:b,l:l}},56:d(e,1U){7 4=6(e);7 t=4.H(\'3w\')||\'\';7 r=4.H(\'3u\')||\'\';7 b=4.H(\'3s\')||\'\';7 l=4.H(\'3t\')||\'\';8(1U)q{t:F(t)||0,r:F(r)||0,b:F(b)||0,l:F(l)};u q{t:t,r:r,b:b,l:l}},4Z:d(e,1U){7 4=6(e);7 t=4.H(\'2Z\')||\'\';7 r=4.H(\'3G\')||\'\';7 b=4.H(\'3y\')||\'\';7 l=4.H(\'2X\')||\'\';8(1U)q{t:F(t)||0,r:F(r)||0,b:F(b)||0,l:F(l)||0};u q{t:t,r:r,b:b,l:l}},3T:d(2i){7 x=2i.53||(2i.52+(D.Y.1D||D.V.1D))||0;7 y=2i.51||(2i.54+(D.Y.1s||D.V.1s))||0;q{x:x,y:y}},3h:d(12,3g){3g(12);12=12.3F;2P(12){6.15.3h(12,3g);12=12.5a}},59:d(12){6.15.3h(12,d(4){S(7 1j 1q 4){8(2R 4[1j]===\'d\'){4[1j]=20}}})},57:d(4,27){7 1b=$.15.3P();7 3l=$.15.35(4);8(!27||27==\'4Y\')$(4).H({X:1b.t+((1i.3S(1b.h,1b.1R)-1b.t-3l.1o)/2)+\'K\'});8(!27||27==\'4Q\')$(4).H({N:1b.l+((1i.3S(1b.w,1b.1J)-1b.l-3l.1e)/2)+\'K\'})},4O:d(4,3U){7 3V=$(\'3q[@2u*="2w"]\',4||D),2w;3V.1V(d(){2w=k.2u;k.2u=3U;k.L.4M="4N:4R.4S.4W(2u=\'"+2w+"\')"})}};[].4i||(4V.4U.4i=d(v,n){n=(n==20)?0:n;7 m=k.1m;S(7 i=n;i<m;i++)8(k[i]==v)q i;q-1});6.3A=d(e){8(/^4T$|^4L$|^5b$|^5c$|^5t$|^5s$|^5r$|^5q$|^5u$|^V$|^5v$|^5z$|^5y$|^5x$|^5w$|^5p$|^5o$/i.2q(e.2E))q 1A;u q 26};6.E.5h=d(e,1p){7 c=e.3F;7 1d=c.L;1d.O=1p.O;1d.2j=1p.18.t;1d.2l=1p.18.l;1d.2n=1p.18.b;1d.2k=1p.18.r;1d.X=1p.X+\'K\';1d.N=1p.N+\'K\';e.2x.4f(c,e);e.2x.5g(e)};6.E.5f=d(e){8(!6.3A(e))q 1A;7 t=6(e);7 A=e.L;7 1Q=1A;7 J={};J.O=t.H(\'O\');8(t.H(\'Q\')==\'U\'){1E=t.H(\'1a\');A.1a=\'1F\';A.Q=\'\';1Q=26}J.32=6.15.35(e);J.18=6.15.3L(e);7 2Y=e.1I?e.1I.4g:t.H(\'5d\');J.X=F(t.H(\'X\'))||0;J.N=F(t.H(\'N\'))||0;7 3J=\'5e\'+F(1i.5i()*4p);7 1x=D.5j(/^3q$|^5n$|^5m$|^5l$|^5k$|^5A$|^2V$|^4u$|^4y$|^4z$|^4x$|^4v$|^4s$|^4H$/i.2q(e.2E)?\'4J\':e.2E);6.1j(1x,\'4F\',3J);1x.3X=\'4B\';7 R=1x.L;7 X=0;7 N=0;8(J.O==\'33\'||J.O==\'2e\'){X=J.X;N=J.N}R.Q=\'U\';R.X=X+\'K\';R.N=N+\'K\';R.O=J.O!=\'33\'&&J.O!=\'2e\'?\'33\':J.O;R.2K=\'1F\';R.36=J.32.1o+\'K\';R.1T=J.32.1e+\'K\';R.2j=J.18.t;R.2k=J.18.r;R.2n=J.18.b;R.2l=J.18.l;8(6.3p.4G){R.4g=2Y}u{R.4D=2Y}e.2x.4f(1x,e);A.2j=\'1M\';A.2k=\'1M\';A.2n=\'1M\';A.2l=\'1M\';A.O=\'2e\';A.4C=\'U\';A.X=\'1M\';A.N=\'1M\';8(1Q){A.Q=\'U\';A.1a=1E}1x.4A(e);R.Q=\'1Y\';q{J:J,4I:6(1x)}};6.E.2f={4K:[0,B,B],4r:[3E,B,B],4w:[4l,4l,4t],4X:[0,0,0],60:[0,0,B],6P:[3H,42,42],6O:[0,B,B],6N:[0,0,1L],6L:[0,1L,1L],6M:[3b,3b,3b],6Q:[0,6R,0],6W:[6V,6U,4k],6S:[1L,0,1L],6T:[6K,4k,47],6J:[B,3I,0],6B:[6A,50,6z],6x:[1L,0,0],6Y:[6C,6D,6I],6H:[6G,0,2U],6E:[B,0,B],6F:[B,6X,0],7a:[0,1v,0],7j:[75,0,7i],7f:[3E,3v,3I],7e:[7h,7l,3v],7g:[3r,B,B],7c:[4c,7d,4c],72:[2U,2U,2U],71:[B,70,74],76:[B,B,3r],7b:[0,B,0],79:[B,0,B],77:[1v,0,0],78:[0,0,1v],6Z:[1v,1v,0],73:[B,3H,0],7k:[B,2I,6y],6v:[1v,0,1v],5V:[B,0,0],5U:[2I,2I,2I],5T:[B,B,B],5R:[B,B,0]};6.E.1w=d(16,3z){8(6.E.2f[16])q{r:6.E.2f[16][0],g:6.E.2f[16][1],b:6.E.2f[16][2]};u 8(M=/^1N\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)$/.2A(16))q{r:F(M[1]),g:F(M[2]),b:F(M[3])};u 8(M=/1N\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)$/.2A(16))q{r:Z(M[1])*2.55,g:Z(M[2])*2.55,b:Z(M[3])*2.55};u 8(M=/^#([a-1H-1B-9])([a-1H-1B-9])([a-1H-1B-9])$/.2A(16))q{r:F("1C"+M[1]+M[1]),g:F("1C"+M[2]+M[2]),b:F("1C"+M[3]+M[3])};u 8(M=/^#([a-1H-1B-9]{2})([a-1H-1B-9]{2})([a-1H-1B-9]{2})$/.2A(16))q{r:F("1C"+M[1]),g:F("1C"+M[2]),b:F("1C"+M[3])};u q 3z==26?1A:{r:B,g:B,b:B}};6.E.4n={3y:1,2X:1,3G:1,2Z:1,5S:1,5B:1,36:1,N:1,5W:1,5X:1,2n:1,2l:1,2k:1,2j:1,62:1,2T:1,61:1,6w:1,1f:1,5Y:1,5Z:1,3s:1,3t:1,3u:1,3w:1,38:1,5Q:1,X:1,1T:1,2O:1};6.E.49={5P:1,5G:1,5H:1,5F:1,5E:1,16:1,5C:1};6.E.25=[\'5D\',\'5I\',\'5J\',\'5O\'];6.E.3k={\'3d\':[\'24\',\'3W\'],\'2B\':[\'24\',\'3f\'],\'2D\':[\'2D\',\'\'],\'2C\':[\'2C\',\'\']};6.3Q.4b({5N:d(1h,1G,P,2v){q k.2d(d(){7 2t=6.1G(1G,P,2v);7 e=28 6.4m(k,2t,1h)})},37:d(1G,2v){q k.2d(d(){7 2t=6.1G(1G,2v);7 e=28 6.37(k,2t)})},5M:d(14){q k.1V(d(){8(k.1n)6.3m(k,14)})},5K:d(14){q k.1V(d(){8(k.1n)6.3m(k,14);8(k.2d&&k.2d[\'E\'])k.2d.E=[]})}});6.4b({37:d(C,o){7 z=k,4o;z.14=d(){8(6.43(o.2M))o.2M.3Z(C)};z.2h=3O(d(){z.14()},o.1k);C.1n=z},P:{4q:d(p,n,4j,4d,1k){q((-1i.5L(p*1i.63)/2)+0.5)*4d+4j}},4m:d(C,o,1h){7 z=k,4o;7 y=C.L;7 44=6.H(C,"2K");7 1O=6.H(C,"Q");7 G={};z.2L=(28 46()).48();o.P=o.P&&6.P[o.P]?o.P:\'4q\';z.2Q=d(I,W){8(6.E.4n[I]){8(W==\'2H\'||W==\'2G\'||W==\'3N\'){8(!C.1r)C.1r={};7 r=Z(6.1y(C,I));C.1r[I]=r&&r>-4p?r:(Z(6.H(C,I))||0);W=W==\'3N\'?(1O==\'U\'?\'2H\':\'2G\'):W;o[W]=26;G[I]=W==\'2H\'?[0,C.1r[I]]:[C.1r[I],0];8(I!=\'1f\')y[I]=G[I][0]+(I!=\'2O\'&&I!=\'34\'?\'K\':\'\');u 6.1j(y,"1f",G[I][0])}u{G[I]=[Z(6.1y(C,I)),Z(W)||0]}}u 8(6.E.49[I])G[I]=[6.E.1w(6.1y(C,I)),6.E.1w(W)];u 8(/^2D$|2C$|24$|2B$|3d$/i.2q(I)){7 m=W.1t(/\\s+/g,\' \').1t(/1N\\s*\\(\\s*/g,\'1N(\').1t(/\\s*,\\s*/g,\',\').1t(/\\s*\\)/g,\')\').64(/([^\\s]+)/g);6n(I){2b\'2D\':2b\'2C\':2b\'3d\':2b\'2B\':m[3]=m[3]||m[1]||m[0];m[2]=m[2]||m[0];m[1]=m[1]||m[0];S(7 i=0;i<6.E.25.1m;i++){7 1l=6.E.3k[I][0]+6.E.25[i]+6.E.3k[I][1];G[1l]=I==\'2B\'?[6.E.1w(6.1y(C,1l)),6.E.1w(m[i])]:[Z(6.1y(C,1l)),Z(m[i])]}3R;2b\'24\':S(7 i=0;i<m.1m;i++){7 3n=Z(m[i]);7 2r=!6m(3n)?\'3W\':(!/6l|U|1F|6j|6k|6o|6p|6u|6t|6s|6q/i.2q(m[i])?\'3f\':1A);8(2r){S(7 j=0;j<6.E.25.1m;j++){1l=\'24\'+6.E.25[j]+2r;G[1l]=2r==\'3f\'?[6.E.1w(6.1y(C,1l)),6.E.1w(m[i])]:[Z(6.1y(C,1l)),3n]}}u{y[\'6r\']=m[i]}}3R}}u{y[I]=W}q 1A};S(p 1q 1h){8(p==\'L\'){7 1c=6.30(1h[p]);S(1P 1q 1c){k.2Q(1P,1c[1P])}}u 8(p==\'3X\'){8(D.2S)S(7 i=0;i<D.2S.1m;i++){7 1K=D.2S[i].1K||D.2S[i].6i||20;8(1K){S(7 j=0;j<1K.1m;j++){8(1K[j].6h==\'.\'+1h[p]){7 1X=28 69(\'\\.\'+1h[p]+\' {\');7 1g=1K[j].L.68;7 1c=6.30(1g.1t(1X,\'\').1t(/}/g,\'\'));S(1P 1q 1c){k.2Q(1P,1c[1P])}}}}}}u{k.2Q(p,1h[p])}}y.Q=1O==\'U\'?\'1Y\':1O;y.2K=\'1F\';z.14=d(){7 t=(28 46()).48();8(t>o.1k+z.2L){4h(z.2h);z.2h=20;S(p 1q G){8(p=="1f")6.1j(y,"1f",G[p][1]);u 8(2R G[p][1]==\'2V\')y[p]=\'1N(\'+G[p][1].r+\',\'+G[p][1].g+\',\'+G[p][1].b+\')\';u y[p]=G[p][1]+(p!=\'2O\'&&p!=\'34\'?\'K\':\'\')}8(o.2G||o.2H)S(7 p 1q C.1r)8(p=="1f")6.1j(y,p,C.1r[p]);u y[p]="";y.Q=o.2G?\'U\':(1O!=\'U\'?1O:\'1Y\');y.2K=44;C.1n=20;8(6.43(o.2M))o.2M.3Z(C)}u{7 n=t-k.2L;7 2c=n/o.1k;S(p 1q G){8(2R G[p][1]==\'2V\'){y[p]=\'1N(\'+F(6.P[o.P](2c,n,G[p][0].r,(G[p][1].r-G[p][0].r),o.1k))+\',\'+F(6.P[o.P](2c,n,G[p][0].g,(G[p][1].g-G[p][0].g),o.1k))+\',\'+F(6.P[o.P](2c,n,G[p][0].b,(G[p][1].b-G[p][0].b),o.1k))+\')\'}u{7 2W=6.P[o.P](2c,n,G[p][0],(G[p][1]-G[p][0]),o.1k);8(p=="1f")6.1j(y,"1f",2W);u y[p]=2W+(p!=\'2O\'&&p!=\'34\'?\'K\':\'\')}}}};z.2h=3O(d(){z.14()},13);C.1n=z},3m:d(C,14){8(14)C.1n.2L-=67;u{2z.4h(C.1n.2h);C.1n=20;6.65(C,"E")}}});6.30=d(1g){7 1c={};8(2R 1g==\'66\'){1g=1g.39().40(\';\');S(7 i=0;i<1g.1m;i++){1X=1g[i].40(\':\');8(1X.1m==2){1c[6.45(1X[0].1t(/\\-(\\w)/g,d(m,c){q c.6a()}))]=6.45(1X[1])}}}q 1c};6.1u={3K:d(o){q k.1V(d(){7 4=k;4.f={10:6(o.10,k),23:6(o.23,k),21:6.15.3o(k),T:o.T,2p:o.2p,1Z:o.1Z,3Y:o.3Y,17:o.17,2T:o.2T};6.1u.2J(4,0);6(2z).2F(\'6b\',d(){4.f.21=6.15.3o(4);6.1u.2J(4,0);6.1u.3i(4)});6.1u.3i(4);4.f.10.2F(\'6g\',d(){6(4.f.2p,k).1S(0).L.Q=\'1Y\'}).2F(\'6f\',d(){6(4.f.2p,k).1S(0).L.Q=\'U\'});6(D).2F(\'6e\',d(e){7 2g=6.15.3T(e);7 19=0;8(4.f.17&&4.f.17==\'3M\')7 2o=2g.x-4.f.21.x-(4.1z-4.f.T*4.f.10.1W())/2-4.f.T/2;u 8(4.f.17&&4.f.17==\'38\')7 2o=2g.x-4.f.21.x-4.1z+4.f.T*4.f.10.1W();u 7 2o=2g.x-4.f.21.x;7 3D=1i.3C(2g.y-4.f.21.y-4.2s/2,2);4.f.10.1V(d(2m){11=1i.6c(1i.3C(2o-2m*4.f.T,2)+3D);11-=4.f.T/2;11=11<0?0:11;11=11>4.f.1Z?4.f.1Z:11;11=4.f.1Z-11;3a=4.f.2T*11/4.f.1Z;k.L.1T=4.f.T+3a+\'K\';k.L.N=4.f.T*2m+19+\'K\';19+=3a});6.1u.2J(4,19)})})},2J:d(4,19){8(4.f.17)8(4.f.17==\'3M\')4.f.23.1S(0).L.N=(4.1z-4.f.T*4.f.10.1W())/2-19/2+\'K\';u 8(4.f.17==\'N\')4.f.23.1S(0).L.N=-19/4.f.10.1W()+\'K\';u 8(4.f.17==\'38\')4.f.23.1S(0).L.N=(4.1z-4.f.T*4.f.10.1W())-19/2+\'K\';4.f.23.1S(0).L.1T=4.f.T*4.f.10.1W()+19+\'K\'},3i:d(4){4.f.10.1V(d(2m){k.L.1T=4.f.T+\'K\';k.L.N=4.f.T*2m+\'K\'})}};6.3Q.6d=6.1u.3K;',62,456,'||||el||jQuery|var|if|||||function||fisheyeCfg|||||this||||options||return||||else||||||es|255|elem|document|fx|parseInt|props|css|tp|oldStyle|px|style|result|left|position|easing|display|wrs|for|itemWidth|none|body|vp|top|documentElement|parseFloat|items|distance|nodeEl||step|iUtil|color|halign|margins|toAdd|visibility|clientScroll|newStyles|cs|wb|opacity|styles|prop|Math|attr|duration|nmp|length|animationHandler|hb|old|in|orig|scrollTop|replace|iFisheye|128|parseColor|wr|curCSS|offsetWidth|false|F0|0x|scrollLeft|oldVisibility|hidden|speed|fA|currentStyle|iw|cssRules|139|0px|rgb|oldDisplay|np|restoreStyle|ih|get|width|toInteger|each|size|rule|block|proximity|null|pos|de|container|border|cssSides|true|axis|new|clientHeight|clientWidth|case|pr|queue|absolute|namedColors|pointer|timer|event|marginTop|marginRight|marginLeft|nr|marginBottom|posx|itemsText|test|sideEnd|offsetHeight|opt|src|callback|png|parentNode|oldPosition|window|exec|borderColor|padding|margin|nodeName|bind|hide|show|192|positionContainer|overflow|startTime|complete|self|zIndex|while|getValues|typeof|styleSheets|maxWidth|211|object|pValue|borderLeftWidth|oldFloat|borderTopWidth|parseStyle|innerHeight|sizes|relative|fontWeight|getSize|height|pause|right|toLowerCase|extraWidth|169|innerWidth|borderWidth|scrollHeight|Color|func|traverseDOM|positionItems|scrollWidth|cssSidesEnd|windowSize|stopAnim|floatVal|getPosition|browser|img|224|paddingBottom|paddingLeft|paddingRight|230|paddingTop|offsetTop|borderBottomWidth|notColor|fxCheckTag|offsetLeft|pow|posy|240|firstChild|borderRightWidth|165|140|wid|build|getMargins|center|toggle|setInterval|getScroll|fn|break|max|getPointer|emptyGIF|images|Width|className|valign|apply|split|opera||isFunction|oldOverflow|trim|Date||getTime|colorCssProps|tagName|extend|144|delta|offsetParent|insertBefore|styleFloat|clearInterval|indexOf|firstNum|107|245|fxe|cssProps|values|10000|linear|azure|dl|220|iframe|ul|beige|table|button|form|appendChild|fxWrapper|listStyle|cssFloat|getPositionLite|id|msie|ol|wrapper|div|aqua|td|filter|progid|fixPNG|getSizeLite|horizontally|DXImageTransform|Microsoft|tr|prototype|Array|AlphaImageLoader|black|vertically|getBorder||pageY|clientX|pageX|clientY||getPadding|centerEl|getClient|purgeEvents|nextSibling|tbody|caption|float|w_|buildWrapper|removeChild|destroyWrapper|random|createElement|select|hr|input|br|meta|optgroup|colgroup|col|tfoot|thead|th|header|option|frameset|frame|script|textarea|fontSize|outlineColor|Top|borderTopColor|borderRightColor|borderBottomColor|borderLeftColor|Right|Bottom|stopAll|cos|stop|animate|Left|backgroundColor|textIndent|yellow|bottom|white|silver|red|letterSpacing|lineHeight|outlineOffset|outlineWidth|blue|minHeight|maxHeight|PI|match|dequeue|string|100000000|cssText|RegExp|toUpperCase|resize|sqrt|Fisheye|mousemove|mouseout|mouseover|selectorText|rules|dotted|dashed|transparent|isNaN|switch|solid|double|outset|borderStyle|inset|ridge|groove|purple|minWidth|darkred|203|204|153|darkorchid|233|150|fuchsia|gold|148|darkviolet|122|darkorange|85|darkcyan|darkgrey|darkblue|cyan|brown|darkgreen|100|darkmagenta|darkolivegreen|183|189|darkkhaki|215|darksalmon|olive|182|lightpink|lightgrey|orange|193||lightyellow|maroon|navy|magenta|green|lime|lightgreen|238|lightblue|khaki|lightcyan|173|130|indigo|pink|216'.split('|'),0,{}))
+
+/**
+ * Build a Fisheye menu from a list of links
+ *
+ * @name Fisheye
+ * @description Build a Fisheye menu from a list of links
+ * @param Hash hash A hash of parameters
+ * @option String items items selection
+ * @option String container container element
+ * @option Integer itemWidth the minimum width for each item
+ * @option Integer maxWidth the maximum width for each item
+ * @option String itemsText selection of element that contains the text for each item
+ * @option Integer proximity the distance from element that make item to interact
+ * @option String valign vertical alignment
+ * @option String halign horizontal alignment
+ *
+ * @type jQuery
+ * @cat Plugins/Interface
+ * @author Stefan Petre
+ */
+jQuery.iFisheye = {
+	build : function(options){
+		return this.each(
+			function(){
+				var el = this;
+                var items = jQuery('a', this);
+				var itemsText ='span';
+				var container = jQuery('.dock-container', this);
+				el.fisheyeCfg = {
+					pos : jQuery.iUtil.getPosition(this),
+					itemWidth: options.itemWidth,
+					itemsText: options.itemsText,
+					proximity: options.proximity,
+					valign: options.valign,
+					halign: options.halign,
+					maxWidth : options.maxWidth
+				};
+				jQuery.iFisheye.positionContainer(el, container, items, 0);
+				jQuery(window).bind(
+					'resize',
+					function(){
+						el.fisheyeCfg.pos = jQuery.iUtil.getPosition(el);
+						jQuery.iFisheye.positionContainer(el, container, items, 0);
+						jQuery.iFisheye.positionItems(el, items);
+					}
+				);
+				jQuery.iFisheye.positionItems(el, items);
+				items.bind('mouseover',
+						function(){
+							jQuery('span', this).get(0).style.display = 'block';
+						}
+					)
+					.bind(
+						'mouseout',
+						function(){
+							jQuery('span', this).get(0).style.display = 'none';
+						}
+					);
+				jQuery(document).bind(
+					'mousemove',
+					function(e)
+					{
+						var pointer = jQuery.iUtil.getPointer(e);
+						var toAdd = 0;
+						if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'center')
+							var posx = pointer.x - el.fisheyeCfg.pos.x - (el.offsetWidth - el.fisheyeCfg.itemWidth * items.size())/2 - el.fisheyeCfg.itemWidth/2;
+						else if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'right')
+							var posx = pointer.x - el.fisheyeCfg.pos.x - el.offsetWidth + el.fisheyeCfg.itemWidth * items.size();
+						else 
+							var posx = pointer.x - el.fisheyeCfg.pos.x;
+						var posy = Math.pow(pointer.y - el.fisheyeCfg.pos.y - el.offsetHeight/2,2);
+						items.each(
+							function(nr)
+							{
+								distance = Math.sqrt(
+									Math.pow(posx - nr*el.fisheyeCfg.itemWidth, 2)
+									+ posy
+								);
+								distance -= el.fisheyeCfg.itemWidth/2;
+								
+								distance = distance < 0 ? 0 : distance;
+								distance = distance > el.fisheyeCfg.proximity ? el.fisheyeCfg.proximity : distance;
+								distance = el.fisheyeCfg.proximity - distance;
+								
+								extraWidth = el.fisheyeCfg.maxWidth * distance/el.fisheyeCfg.proximity;
+								
+								this.style.width = el.fisheyeCfg.itemWidth + extraWidth + 'px';
+								this.style.left = el.fisheyeCfg.itemWidth * nr + toAdd + 'px';
+								toAdd += extraWidth;
+							}
+						);
+						jQuery.iFisheye.positionContainer(el, container, items, toAdd);
+					}
+				);
+			}
+		)
+	},
+	positionContainer : function(el, container, items, toAdd){
+		if (el.fisheyeCfg.halign)
+			if (el.fisheyeCfg.halign == 'center')
+				container.get(0).style.left = (el.offsetWidth - el.fisheyeCfg.itemWidth * items.size())/2 - toAdd/2 + 'px';
+			else if (el.fisheyeCfg.halign == 'left')
+				container.get(0).style.left =  - toAdd/items.size() + 'px';
+			else if (el.fisheyeCfg.halign == 'right')
+			    container.get(0).style.left =  (el.offsetWidth - el.fisheyeCfg.itemWidth * items.size()) - toAdd/2 + 'px';
+		container.get(0).style.width = el.fisheyeCfg.itemWidth * items.size() + toAdd + 'px';
+	},
+	positionItems : function(el, items){
+		items.each(
+			function(nr)
+			{
+				this.style.width = el.fisheyeCfg.itemWidth + 'px';
+				this.style.left = el.fisheyeCfg.itemWidth * nr + 'px';
+			}
+		);
+	}
+};
+
+jQuery.fn.Fisheye = jQuery.iFisheye.build;

Added: z3c.website/trunk/src/z3c/website/skin/jquery.corner.js
===================================================================
--- z3c.website/trunk/src/z3c/website/skin/jquery.corner.js	                        (rev 0)
+++ z3c.website/trunk/src/z3c/website/skin/jquery.corner.js	2007-05-25 06:20:23 UTC (rev 75956)
@@ -0,0 +1,152 @@
+/*
+ * jQuery corner plugin
+ *
+ * version 1.7 (1/26/2007)
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ */
+
+/**
+ * The corner() method provides a simple way of styling DOM elements.  
+ *
+ * corner() takes a single string argument:  $().corner("effect corners width")
+ *
+ *   effect:  The name of the effect to apply, such as round or bevel. 
+ *            If you don't specify an effect, rounding is used.
+ *
+ *   corners: The corners can be one or more of top, bottom, tr, tl, br, or bl. 
+ *            By default, all four corners are adorned. 
+ *
+ *   width:   The width specifies the width of the effect; in the case of rounded corners this 
+ *            will be the radius of the width. 
+ *            Specify this value using the px suffix such as 10px, and yes it must be pixels.
+ *
+ * For more details see: http://methvin.com/jquery/jq-corner.html
+ * For a full demo see:  http://malsup.com/jquery/corner/
+ *
+ *
+ * @example $('.adorn').corner();
+ * @desc Create round, 10px corners 
+ *
+ * @example $('.adorn').corner("25px");
+ * @desc Create round, 25px corners 
+ *
+ * @example $('.adorn').corner("notch bottom");
+ * @desc Create notched, 10px corners on bottom only
+ *
+ * @example $('.adorn').corner("tr dog 25px");
+ * @desc Create dogeared, 25px corner on the top-right corner only
+ *
+ * @example $('.adorn').corner("round 8px").parent().css('padding', '4px').corner("round 10px");
+ * @desc Create a rounded border effect by styling both the element and its parent
+ * 
+ * @name corner
+ * @type jQuery
+ * @param String options Options which control the corner style
+ * @cat Plugins/Corner
+ * @return jQuery
+ * @author Dave Methvin (dave.methvin at gmail.com)
+ * @author Mike Alsup (malsup at gmail.com)
+ */
+jQuery.fn.corner = function(o) {
+    function hex2(s) {
+        var s = parseInt(s).toString(16);
+        return ( s.length < 2 ) ? '0'+s : s;
+    };
+    function gpc(node) {
+        for ( ; node && node.nodeName.toLowerCase() != 'html'; node = node.parentNode  ) {
+            var v = jQuery.css(node,'backgroundColor');
+            if ( v.indexOf('rgb') >= 0 ) { 
+                rgb = v.match(/\d+/g); 
+                return '#'+ hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
+            }
+            if ( v && v != 'transparent' )
+                return v;
+        }
+        return '#ffffff';
+    };
+    function getW(i) {
+        switch(fx) {
+        case 'round':  return Math.round(width*(1-Math.cos(Math.asin(i/width))));
+        case 'cool':   return Math.round(width*(1+Math.cos(Math.asin(i/width))));
+        case 'sharp':  return Math.round(width*(1-Math.cos(Math.acos(i/width))));
+        case 'bite':   return Math.round(width*(Math.cos(Math.asin((width-i-1)/width))));
+        case 'slide':  return Math.round(width*(Math.atan2(i,width/i)));
+        case 'jut':    return Math.round(width*(Math.atan2(width,(width-i-1))));
+        case 'curl':   return Math.round(width*(Math.atan(i)));
+        case 'tear':   return Math.round(width*(Math.cos(i)));
+        case 'wicked': return Math.round(width*(Math.tan(i)));
+        case 'long':   return Math.round(width*(Math.sqrt(i)));
+        case 'sculpt': return Math.round(width*(Math.log((width-i-1),width)));
+        case 'dog':    return (i&1) ? (i+1) : width;
+        case 'dog2':   return (i&2) ? (i+1) : width;
+        case 'dog3':   return (i&3) ? (i+1) : width;
+        case 'fray':   return (i%2)*width;
+        case 'notch':  return width; 
+        case 'bevel':  return i+1;
+        }
+    };
+    o = (o||"").toLowerCase();
+    var keep = /keep/.test(o);                       // keep borders?
+    var cc = ((o.match(/cc:(#[0-9a-f]+)/)||[])[1]);  // corner color
+    var sc = ((o.match(/sc:(#[0-9a-f]+)/)||[])[1]);  // strip color
+    var width = parseInt((o.match(/(\d+)px/)||[])[1]) || 10; // corner width
+    var re = /round|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dog/;
+    var fx = ((o.match(re)||['round'])[0]);
+    var edges = { T:0, B:1 };
+    var opts = {
+        TL:  /top|tl/.test(o),       TR:  /top|tr/.test(o),
+        BL:  /bottom|bl/.test(o),    BR:  /bottom|br/.test(o)
+    };
+    if ( !opts.TL && !opts.TR && !opts.BL && !opts.BR )
+        opts = { TL:1, TR:1, BL:1, BR:1 };
+    var strip = document.createElement('div');
+    strip.style.overflow = 'hidden';
+    strip.style.height = '1px';
+    strip.style.backgroundColor = sc || 'transparent';
+    strip.style.borderStyle = 'solid';
+    return this.each(function(index){
+        var pad = {
+            T: parseInt(jQuery.css(this,'paddingTop'))||0,     R: parseInt(jQuery.css(this,'paddingRight'))||0,
+            B: parseInt(jQuery.css(this,'paddingBottom'))||0,  L: parseInt(jQuery.css(this,'paddingLeft'))||0
+        };
+
+        if (jQuery.browser.msie) this.style.zoom = 1; // force 'hasLayout' in IE
+        if (!keep) this.style.border = 'none';
+        strip.style.borderColor = cc || gpc(this.parentNode);
+        var cssHeight = jQuery.curCSS(this, 'height');
+
+        for (var j in edges) {
+            var bot = edges[j];
+            strip.style.borderStyle = 'none '+(opts[j+'R']?'solid':'none')+' none '+(opts[j+'L']?'solid':'none');
+            var d = document.createElement('div');
+            var ds = d.style;
+
+            bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild);
+
+            if (bot && cssHeight != 'auto') {
+                if (jQuery.css(this,'position') == 'static')
+                    this.style.position = 'relative';
+                ds.position = 'absolute';
+                ds.bottom = ds.left = ds.padding = ds.margin = '0';
+                if (jQuery.browser.msie)
+                    ds.setExpression('width', 'this.parentNode.offsetWidth');
+                else
+                    ds.width = '100%';
+            }
+            else {
+                ds.margin = !bot ? '-'+pad.T+'px -'+pad.R+'px '+(pad.T-width)+'px -'+pad.L+'px' : 
+                                    (pad.B-width)+'px -'+pad.R+'px -'+pad.B+'px -'+pad.L+'px';                
+            }
+
+            for (var i=0; i < width; i++) {
+                var w = Math.max(0,getW(i));
+                var e = strip.cloneNode(false);
+                e.style.borderWidth = '0 '+(opts[j+'R']?w:0)+'px 0 '+(opts[j+'L']?w:0)+'px';
+                bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild);
+            }
+        }
+    });
+};

Modified: z3c.website/trunk/src/z3c/website/tool/adding.pt
===================================================================
--- z3c.website/trunk/src/z3c/website/tool/adding.pt	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/tool/adding.pt	2007-05-25 06:20:23 UTC (rev 75956)
@@ -1,7 +1,7 @@
 <div class="naviBoxContainer">
   <div class="naviBox">
     <div class="naviBoxHeader">
-      <img src="adding.gif" alt="adding" height="32" width="32"
+      <img src="adding.gif" alt="adding" height="24" width="24"
 	            tal:attributes="src context/++resource++img/adding.gif" />
       <tal:block i18n:translate="">Adding</tal:block>
     </div>

Modified: z3c.website/trunk/src/z3c/website/tool/configure.zcml
===================================================================
--- z3c.website/trunk/src/z3c/website/tool/configure.zcml	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/tool/configure.zcml	2007-05-25 06:20:23 UTC (rev 75956)
@@ -18,7 +18,7 @@
       manager="z3c.website.tool.IToolManager"
       template="search.pt"
       layer="z3c.website.layer.IWebSiteBrowserLayer"
-      permission="z3c.website.ManageContent"
+      permission="zope.Public"
       weight="1"
       />
 
@@ -41,7 +41,7 @@
       template="samples.pt"
       layer="z3c.website.layer.IWebSiteBrowserLayer"
       permission="zope.Public"
-      weight="3"
+      weight="2"
       />
 
   <viewlet

Modified: z3c.website/trunk/src/z3c/website/tool/content.pt
===================================================================
--- z3c.website/trunk/src/z3c/website/tool/content.pt	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/tool/content.pt	2007-05-25 06:20:23 UTC (rev 75956)
@@ -1,7 +1,7 @@
 <div class="naviBoxContainer">
   <div class="naviBox">
     <div class="naviBoxHeader">
-      <img src="content.gif" alt="navigation" height="32" width="32"
+      <img src="content.gif" alt="navigation" height="24" width="24"
 	            tal:attributes="src context/++resource++img/content.gif" />
       <tal:block i18n:translate="">Content</tal:block>
     </div>

Modified: z3c.website/trunk/src/z3c/website/tool/content.py
===================================================================
--- z3c.website/trunk/src/z3c/website/tool/content.py	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/tool/content.py	2007-05-25 06:20:23 UTC (rev 75956)
@@ -22,15 +22,19 @@
 from zope.app.container.interfaces import IContainer
 from zope.viewlet import viewlet
 
+from z3c.website import interfaces
 import z3c.website.layer
 
 
 class Content(viewlet.ViewletBase):
     """Content tool."""
+    res = None
 
     def items(self):
-        res = []
-        append = res.append
+        if self.res is not None:
+            return self.res
+        self.res = []
+        append = self.res.append
         try:
             if IContainer.providedBy(self.context):
                 # get childs if we stay at a container
@@ -48,4 +52,13 @@
         except KeyError:
             # site does not exist right now
             pass
-        return res
+        return self.res
+
+    def render(self, *args, **kw):
+        """See zope.contentprovider.interfaces.IContentProvider"""
+        if len(self.items()) == 0:
+            return u''
+        if interfaces.ISamples.providedBy(self.context) or \
+            interfaces.ISample.providedBy(self.context):
+            return u''
+        return self.index(*args, **kw)

Modified: z3c.website/trunk/src/z3c/website/tool/edit.pt
===================================================================
--- z3c.website/trunk/src/z3c/website/tool/edit.pt	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/tool/edit.pt	2007-05-25 06:20:23 UTC (rev 75956)
@@ -1,7 +1,7 @@
 <div class="naviBoxContainer">
   <div class="naviBox">
     <div class="naviBoxHeader">
-      <img src="edit.gif" alt="edit" height="32" width="32"
+      <img src="edit.gif" alt="edit" height="24" width="24"
 	            tal:attributes="src context/++resource++img/edit.gif" />
       <tal:block i18n:translate="">Manage</tal:block>
     </div>

Modified: z3c.website/trunk/src/z3c/website/tool/samples.pt
===================================================================
--- z3c.website/trunk/src/z3c/website/tool/samples.pt	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/tool/samples.pt	2007-05-25 06:20:23 UTC (rev 75956)
@@ -1,9 +1,9 @@
 <div class="naviBoxContainer">
   <div class="naviBox">
     <div class="naviBoxHeader">
-      <img src="content.gif" alt="navigation" height="32" width="32"
-	            tal:attributes="src context/++resource++img/content.gif" />
-      <tal:block i18n:translate="">Content</tal:block>
+      <img src="samples.gif" alt="navigation" height="24" width="24"
+	            tal:attributes="src context/++resource++img/samples.gif" />
+      <tal:block i18n:translate="">Samples</tal:block>
     </div>
     <div class="naviBoxBody">
     <div tal:repeat="sample view/samples">

Modified: z3c.website/trunk/src/z3c/website/tool/search.pt
===================================================================
--- z3c.website/trunk/src/z3c/website/tool/search.pt	2007-05-25 06:17:22 UTC (rev 75955)
+++ z3c.website/trunk/src/z3c/website/tool/search.pt	2007-05-25 06:20:23 UTC (rev 75956)
@@ -1,18 +1,21 @@
 <div class="naviBoxContainer">
   <div class="naviBox">
     <div class="naviBoxHeader">
-      <img src="search.gif" alt="search" height="32" width="32"
+      <img src="search.gif" alt="search" height="24" width="24"
 	            tal:attributes="src context/++resource++img/search.gif" />
-      <tal:block i18n:translate="">Search</tal:block>
+      <tal:block i18n:translate="">
+        Search
+      </tal:block>
     </div>
     <div class="naviBoxBody">
-     <form action="#">
-	 <div id="searchForm">
-	 <input type="text" id="liveSearch" />
-	 <input type="image" id="btnSearch" src="" alt="Search button" 
+      <form id="webSiteLiveSearch" name="webSiteLiveSearch" action="./searchResult.html" method="post"
+             tal:attributes="action string:${context/@@siteURL}/searchResult.html">
+        <input id="webSiteLiveSearchInput" type="text" name="webSiteLiveSearchInput" />
+        <input type="image" class="btnSearch" src="" alt="Search button" width="24" height="24"
 	        tal:attributes="src context/++resource++img/btnSearch.gif" />
-	 </div>
-	 </form>
+        <div id="webSiteLiveSearchResultContainer" style="display: none;">
+        </div>
+      </form>
     </div>
   </div>
   <div class="boxSpacer">



More information about the Checkins mailing list