You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@click.apache.org by sa...@apache.org on 2009/06/08 20:35:41 UTC

svn commit: r782719 - in /incubator/click/trunk/click: ./ examples/src/org/apache/click/examples/page/ajax/ examples/webapp/ajax/ examples/webapp/assets/css/ examples/webapp/assets/js/

Author: sabob
Date: Mon Jun  8 18:35:40 2009
New Revision: 782719

URL: http://svn.apache.org/viewvc?rev=782719&view=rev
Log:
replace Rico Accordion with jQuery Tools Accordion

Added:
    incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordion.java
      - copied, changed from r781460, incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordian.java
    incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.htm   (contents, props changed)
      - copied, changed from r781460, incubator/click/trunk/click/examples/webapp/ajax/ajax-accordian.htm
    incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.js
    incubator/click/trunk/click/examples/webapp/assets/css/tabs-accordion.css
    incubator/click/trunk/click/examples/webapp/assets/js/jquery.tools.min.js
Removed:
    incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordian.java
    incubator/click/trunk/click/examples/webapp/ajax/ajax-accordian-include.htm
    incubator/click/trunk/click/examples/webapp/ajax/ajax-accordian.htm
Modified:
    incubator/click/trunk/click/LICENSE.txt
    incubator/click/trunk/click/NOTICE.txt

Modified: incubator/click/trunk/click/LICENSE.txt
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/LICENSE.txt?rev=782719&r1=782718&r2=782719&view=diff
==============================================================================
--- incubator/click/trunk/click/LICENSE.txt (original)
+++ incubator/click/trunk/click/LICENSE.txt Mon Jun  8 18:35:40 2009
@@ -353,6 +353,27 @@
 
 ======================================================================
 
+JQUERY TOOLS LICENSE (MIT License)
+
+Copyright (c) 2009 Tero Piirainen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+======================================================================
+
 COLOR PICKER LICENSE (MIT License)
 
 Copyright 2008 Sebo Zoltan <ia...@yahoo.com>

Modified: incubator/click/trunk/click/NOTICE.txt
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/NOTICE.txt?rev=782719&r1=782718&r2=782719&view=diff
==============================================================================
--- incubator/click/trunk/click/NOTICE.txt (original)
+++ incubator/click/trunk/click/NOTICE.txt Mon Jun  8 18:35:40 2009
@@ -87,6 +87,12 @@
 
 ======================================================================
 
+This product includes the JQuery Tools JavaScript library, developed by
+Tero Piirainen, distributed under the terms of the MIT license.
+http://flowplayer.org/tools/index.html
+
+======================================================================
+
 This product includes the JQuery Star Rating plugin, developed by
 Fyneworks.com, distributed under the terms of the MIT license.
 http://www.fyneworks.com/jquery/star-rating/

Copied: incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordion.java (from r781460, incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordian.java)
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordion.java?p2=incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordion.java&p1=incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordian.java&r1=781460&r2=782719&rev=782719&view=diff
==============================================================================
--- incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordian.java (original)
+++ incubator/click/trunk/click/examples/src/org/apache/click/examples/page/ajax/AjaxAccordion.java Mon Jun  8 18:35:40 2009
@@ -18,16 +18,47 @@
  */
 package org.apache.click.examples.page.ajax;
 
+import java.util.HashMap;
+import java.util.List;
+import org.apache.click.element.CssImport;
+import org.apache.click.element.JsImport;
+import org.apache.click.element.JsScript;
 import org.apache.click.examples.page.BorderPage;
 
-
 /**
- * Provides an Ajax demo of Rico's Accordian.
+ * Provides an Ajax demo of <a target="_blank" class="external" href="http://flowplayer.org/tools/demos/tabs/accordion.html">jQuery Tools</a>
+ * Accordion.
  *
  * @author Malcolm Edgar
  */
-public class AjaxAccordian extends BorderPage {
+public class AjaxAccordion extends BorderPage {
+
+    public List getHeadElements() {
+
+        // Lazily load head elements
+        if (headElements == null) {
+            headElements = super.getHeadElements();
+
+            headElements.add(new JsImport("/assets/js/jquery-1.3.2.js"));
+            headElements.add(new JsImport("/assets/js/jquery.tools.min.js"));
+            headElements.add(new CssImport("/assets/css/tabs-accordion.css"));
 
-    public String jsInclude = "ajax/ajax-accordian-include.htm";
+            // Note the actual JavaScript necessary to setup the accordion is
+            // specified in the Page JavaScript template -> ajax-accordion.js.
+            headElements.add(new JsScript("/ajax/ajax-accordion.js", new HashMap()));
 
+            // Alternatively, the JsScript below could be used to add
+            // the necessary JavaScript to setup the accordion, for example:
+            /* String content =
+                "$(document).ready(function() {"
+              + "  $('#accordion').tabs('#accordion div', {"
+              + "    tabs: 'h2',"
+              + "    effect: 'slide'"
+              + "  });"
+              + "});";
+            headElements.add(new JsScript(content));
+            */
+        }
+        return headElements;
+    }
 }

Copied: incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.htm (from r781460, incubator/click/trunk/click/examples/webapp/ajax/ajax-accordian.htm)
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.htm?p2=incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.htm&p1=incubator/click/trunk/click/examples/webapp/ajax/ajax-accordian.htm&r1=781460&r2=782719&rev=782719&view=diff
==============================================================================
--- incubator/click/trunk/click/examples/webapp/ajax/ajax-accordian.htm (original)
+++ incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.htm Mon Jun  8 18:35:40 2009
@@ -17,77 +17,85 @@
    under the License.*#
 -->
 
-Demonstration of the <a href="http://openrico.org/">Rico</a> Accordion. 
-Please note the accordian CSS styles are defined in the <tt>/assets/css/style.css</tt> file.
+Demonstration of the <a href="http://flowplayer.org/tools/demos/tabs/accordion.html">jQuery Tools</a>
+Accordion. Please note the accordion CSS styles are defined in the <tt>/assets/css/tabs-accordion.css</tt> file.
 
-<div style="margin-top:2em; border-top-width:1px; border-top-style:solid;" id="accordionDiv">
+<div style="margin-top:2em;" id="accordion">
+	
+    <h2>Overview</h2>
 
-	<div id="panel1">
-	  <div id="panel1Header" class="accordionTabTitle">
-	  Overview</div>
-	  <div id="panel1Content"  class="accordionTabContent">
+    <div class="pane">
 		<br/>
-		This example illustrates how to use the Rico.Accordion behavior to transform a set of
-		divs into a first class accordion component.
+		This example illustrates how to use the jQuery Tools Accordion to
+    transform a set of divs into a first class accordion component.
 		<br/><br/>
-		The Rico.Accordion behavior makes use of the Effect.AccordionSize which is an effect that simultaneously
-		grows the height of one element while shrinking the height of another.  The Rico.Accordion behavior adds
-		the necessary event handlers on the respective divs to handle the visual aspects of expanding, collapsing
-		and hovering.
+		The jQuery Tools Tabs provides an effect that simultaneously grows the height
+    of one element while shrinking the height of another.  The Accordion behavior
+    adds the necessary event handlers on the respective divs to handle the
+    visual aspects of expanding, collapsing and hovering.
 	  </div>
-	</div>
 
-	<div id="panel2">
-	  <div id="panel2Header" class="accordionTabTitle">
-	  HTML Code</div>
-	  <div id="panel2Content" class="accordionTabContent">
+
+    <h2>HTML Code</h2>
+
+	  <div class="pane">
 		<br/>
-		The HTML structure is an outer div that holds all of the panels.  Then, each panel is just a
-		couple of DIVs (one for the header and one for the content) wrapped in an outer DIV.
+		The HTML structure is an outer div that holds all of the panels.  Then, each
+    panel consists of an H2 element for the header and a DIV for the content.
 <pre style="font-size:8pt;">
-&lt;div id="accordionDiv"&gt;
-   &lt;div id="overviewPanel"&gt;
-     &lt;div id="overviewHeader"&gt;
-       Overview &lt;/div&gt;
-      &lt;div id="panel1Content"&gt;
-       ... content text ...
-      &lt;/div&gt;
-   &lt;/div&gt;
+&lt;div id="accordion"&gt;
+
+  &lt;h2&gt;Overview&lt;/h2&gt;
+  &lt;div id="pane"&gt;
+    ... content text ...
+  &lt;/div&gt;
+
+  &lt;h2&gt;Chapter 1&lt;/h2&gt;
+  &lt;div id="pane"&gt;
+    ... content text ...
+  &lt;/div&gt;
+
 &lt;/div&gt;
 </pre>
 	  </div>
-	</div>
 
-	<div id="panel3">
-	  <div id="panel3Header"  class="accordionTabTitle">
-	  Rico Code</div>
-	  <div id="panel3Content" class="accordionTabContent">
-		<br/>To attach the accordion behavior to the accordion container div, construct a Rico.Accordion
-		object and pass the container to it.  Thats it!
+
+    <h2>jQuery Code</h2>
+
+    <div class="pane">
+		<br/>To attach the accordion behavior to the accordion container div,
+    select the target accordion div, and specify the tabs and header. Lastly
+    we provide an effect to show/hide panels.  Thats it!
 <pre style="font-size:8pt;">
-  new Rico.Accordion( $('accordionDiv') );
+  $("#accordion").tabs("#accordion div.pane", {
+    tabs: 'h2',
+    effect: 'slide'
+  }); </pre>
 
-     -or-
- 
-  new Rico.Accordion( $('accordionDiv'), '.accordionTabTitle', '.accordionTabContent' );</pre>
-
-		The second example specifies the height of the accordion panels.  There are  many other
-		configuration parameters that can be specified to modify various visual aspects of the
-		accordion. The panelHeight is the attribute that is most commonly overridden.
 	  </div>
-	</div>
 
-	<div id="panel4">
-	  <div id="panel4Header" class="accordionTabTitle">
-	  Important Note</div>
-	  <div id="panel4Content" class="accordionTabContent">
-		<br/>The content div for each panel should not be styled to have borders, margins, or padding.
-		When padding/margin is required, nest another DIV inside the content div and style it accordingly.
-		Also, the panel content should not grow beyond the panelHeight attribute of the configuration
-		parameter. On Firefox/Mac the scrollbar for an overflow area will cause the scrollbar to
-		always be visible--even when the panel is collapsed. You can resolve this by setting the
-		visibility of the contents when the panel starts to collapse or expand.<br/>&nbsp;
+    <h2>CSS Code</h2>
+
+    <div class="pane">
+		The Accordion is styled through a normal CSS stylesheet. Visual aspects such
+    as height, width, color can easily be specied via CSS.
+<pre style="font-size:8pt;">
+/* root element for accordion. */
+#accordion {
+  background-color:#F0F0F0;
+  width: 500px;
+}
+/* accordion header */
+#accordion h2 {
+  border: #F0F0F0 1px solid;
+  cursor:pointer;
+}
+/* accordion pane */
+#accordion div.pane {
+  border:1px solid #fff;
+  display:none;
+  height:250px;
+} </pre>
 	  </div>
-	</div>
 
-</div>
\ No newline at end of file
+</div>

Propchange: incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.htm
------------------------------------------------------------------------------
    svn:mergeinfo = 

Added: incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.js
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.js?rev=782719&view=auto
==============================================================================
--- incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.js (added)
+++ incubator/click/trunk/click/examples/webapp/ajax/ajax-accordion.js Mon Jun  8 18:35:40 2009
@@ -0,0 +1,40 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+/**
+ * The ajax-accordion Page JavaScript.
+ */
+
+// Wait until browser DOM is loaded
+$(document).ready(function() {
+
+    // Setup accordion
+    $("#accordion").tabs("#accordion div.pane", {
+        tabs: 'h2',
+        effect: 'slide'
+    });
+
+    // Enable accordion hover effect for IE
+    $('#accordion h2').hover(
+        function() {
+            $(this).addClass('hover');
+        },
+        function() {
+            $(this).removeClass('hover');
+        }
+        );
+});

Added: incubator/click/trunk/click/examples/webapp/assets/css/tabs-accordion.css
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/examples/webapp/assets/css/tabs-accordion.css?rev=782719&view=auto
==============================================================================
--- incubator/click/trunk/click/examples/webapp/assets/css/tabs-accordion.css (added)
+++ incubator/click/trunk/click/examples/webapp/assets/css/tabs-accordion.css Mon Jun  8 18:35:40 2009
@@ -0,0 +1,69 @@
+/*
+ * jquery.tools 1.0.0 - The missing UI library
+ *
+ * [tools.tabs-1.0.0, tools.tooltip-1.0.0, tools.scrollable-1.0.3, tools.overlay-1.0.2, tools.expose-1.0.2]
+ *
+ * Copyright (c) 2009 Tero Piirainen
+ * http://flowplayer.org/tools/
+ *
+ * Dual licensed under MIT and GPL 2+ licenses
+ * http://www.opensource.org/licenses
+ *
+ * -----
+ *
+ * Build: Wed Jun 03 08:30:25 GMT+00:00 2009
+ */
+
+/* root element for accordion. */
+#accordion {
+	background-color:#F0F0F0;
+	border:1px solid #333;
+}
+
+/* accordion header */
+#accordion h2 {
+	background-color:#D0D0D0;
+	margin:0;
+  color: #000000;
+	padding:5px 15px;
+	font-size:14px;
+	font-weight:normal;
+  border-color: #F0F0F0 #707070 #707070 #F0F0F0;
+  border-width: 1px;
+  border-style: solid;
+	cursor:pointer;
+}
+
+/* The h2.hover caters for IE which doesn't support :hover */
+#accordion h2:hover, #accordion h2.hover {
+  background-color:#909090;
+  color: #FFFFFF;
+}
+
+/* currently active header */
+#accordion h2.current {
+	cursor:default;
+	background-color:#707070;
+  border-color: #F0F0F0 #303030 #303030 #F0F0F0;
+  border-width: 1px;
+  border-style: solid;
+  color: #FFFFFF;
+}
+
+/* accordion pane */
+#accordion div.pane {
+	border:1px solid #fff;
+	border-width:0 2px;
+	display:none;
+	height:250px;
+	padding:15px;
+	font-size:12px;
+}
+
+/* a title inside pane */
+#accordion div.pane h3 {
+	font-weight:normal;
+	margin:0 0 -5px 0;
+	font-size:16px;
+	color:#999;
+}

Added: incubator/click/trunk/click/examples/webapp/assets/js/jquery.tools.min.js
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/examples/webapp/assets/js/jquery.tools.min.js?rev=782719&view=auto
==============================================================================
--- incubator/click/trunk/click/examples/webapp/assets/js/jquery.tools.min.js (added)
+++ incubator/click/trunk/click/examples/webapp/assets/js/jquery.tools.min.js Mon Jun  8 18:35:40 2009
@@ -0,0 +1,20 @@
+/*
+ * jquery.tools 1.0.0 - The missing UI library
+ * 
+ * [tools.tabs-1.0.0, tools.tooltip-1.0.0, tools.scrollable-1.0.3, tools.overlay-1.0.2, tools.expose-1.0.2]
+ * 
+ * Copyright (c) 2009 Tero Piirainen
+ * http://flowplayer.org/tools/
+ *
+ * Dual licensed under MIT and GPL 2+ licenses
+ * http://www.opensource.org/licenses
+ * 
+ * -----
+ * 
+ * Build: Wed Jun 03 08:30:25 GMT+00:00 2009
+ */
+(function(c){c.tools=c.tools||{version:{}};c.tools.version.tabs="1.0.0";c.tools.addTabEffect=function(d,e){b[d]=e};var b={"default":function(d){this.getPanes().hide().eq(d).show()},fade:function(d){this.getPanes().hide().eq(d).fadeIn()},slide:function(d){this.getCurrentPane().slideUp("fast");this.getPanes().eq(d).slideDown()},horizontal:function(d){if(!c._hW){c._hW=this.getPanes().eq(0).width()}this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(d).animate({width:c._hW},function(){c(this).show()})}};function a(e,f,g){var d=this;var h;function i(j,k){c(d).bind(j,function(m,l){if(k&&k.call(this,l.index)===false&&l){l.proceed=false}});return d}c.each(g,function(j,k){if(c.isFunction(k)){i(j,k)}});c.extend(this,{click:function(k){if(k===h){return d}var m=d.getCurrentPane();var l=e.eq(k);if(typeof k=="string"){l=e.filter("[href="+k+"]");k=e.index(l)}if(!l.length){if(h>=0){return d}k=g.initialIndex;l=e.eq(k)}var j={index:k,proceed:true};c(d).trigg
 erHandler("onBeforeClick",j);if(!j.proceed){return d}l.addClass(g.current);b[g.effect].call(d,k);c(d).triggerHandler("onClick",j);e.removeClass(g.current);l.addClass(g.current);h=k;return d},getTabs:function(){return e},getPanes:function(){return f},getCurrentPane:function(){return f.eq(h)},getCurrentTab:function(){return e.eq(h)},getIndex:function(){return h},next:function(){return d.click(h+1)},prev:function(){return d.click(h-1)},onBeforeClick:function(j){return i("onBeforeClick",j)},onClick:function(j){return i("onClick",j)}});e.each(function(j){c(this).bind(g.event,function(k){d.click(j);if(!g.history){return k.preventDefault()}})});if(g.history){e.history(function(j,k){d.click(k||0)})}if(location.hash){d.click(location.hash)}else{d.click(g.initialIndex)}f.find("a[href^=#]").click(function(){d.click(c(this).attr("href"))})}c.fn.tabs=function(g,d){var e=this.eq(typeof conf=="number"?conf:0).data("tabs");if(e){return e}var f={tabs:"a",current:"current",onBeforeClick:null,
 onClick:null,effect:"default",history:false,initialIndex:0,event:"click",api:false};if(c.isFunction(d)){d={onBeforeClick:d}}c.extend(f,d);this.each(function(){var h=c(this).find(f.tabs);if(!h.length){h=c(this).children()}var i=g.jquery?g:c(g);e=new a(h,i,f);c(this).data("tabs",e)});return f.api?e:this}})(jQuery);(function(b){var c,a;b.prototype.history=function(e){var d=this;if(b.browser.msie){if(!a){a=b("<iframe />").hide().get(0);b("body").append(a);setInterval(function(){var f=a.contentWindow.document;var g=f.location.hash;if(c!==g){b.event.trigger("hash",g);c=g}},100)}d.bind("click.hash",function(g){var f=a.contentWindow.document;f.open().close();f.location.hash=b(this).attr("href")});d.eq(0).triggerHandler("click.hash")}else{setInterval(function(){var f=location.hash;if(d.filter("[href*="+f+"]").length&&f!==c){c=f;b.event.trigger("hash",f)}},100)}b(window).bind("hash",e);return this}})(jQuery);
+(function(c){c.tools=c.tools||{version:{}};c.tools.version.tooltip="1.0.0";var b={toggle:[function(){this.getTip().show()},function(){this.getTip().hide()}]};c.tools.addTipEffect=function(d,f,e){b[d]=[f,e]};c.tools.addTipEffect("slideup",function(){var d=this.getConf();var e=d.slideOffset||10;this.getTip().css({opacity:0}).animate({top:"-="+e,opacity:d.opacity},d.slideInSpeed||200).show()},function(){var d=this.getConf();var e=d.slideOffset||10;this.getTip().animate({top:"-="+e,opacity:0},d.slideOutSpeed||200,function(){c(this).hide().animate({top:"+="+(e*2)},0)})});function a(g,e){var d=this;function i(j,k){c(d).bind(j,function(m,l){if(k&&k.call(this)===false&&l){l.proceed=false}});return d}c.each(e,function(j,k){if(c.isFunction(k)){i(j,k)}});var f=e.triggers?c(e.triggers):g.prev(e.trigger);if(!f.length){throw"cannot find trigges for tip: "+g.selector}f.bind(f.is("input")?"focus":"mouseover",function(j){d.show(j);g.hover(function(){d.show()},function(){d.hide()})});f.bind(f
 .is("input")?"blur":"mouseout",function(){d.hide()});g.css("opacity",e.opacity);var h=0;c.extend(d,{show:function(o){if(o){f=c(o.target)}clearTimeout(h);if(g.is(":animated")||g.is(":visible")){return d}var n={proceed:true};c(d).trigger("onBeforeShow",n);if(!n.proceed){return d}var m=f.position().top-g.outerHeight();var j=g.outerHeight()+f.outerHeight();var q=e.position[0];if(q=="center"){m+=j/2}if(q=="bottom"){m+=j}var k=f.outerWidth()+g.outerWidth();var l=f.position().left+f.outerWidth();q=e.position[1];if(q=="center"){l-=k/2}if(q=="left"){l-=k}m+=e.offset[0];l+=e.offset[1];g.css({position:"absolute",top:m,left:l});b[e.effect][0].call(d);c(d).trigger("onShow");return d},hide:function(){clearTimeout(h);h=setTimeout(function(){if(g.is(":animated")||!g.is(":visible")){return d}var j={proceed:true};c(d).trigger("onBeforeHide",j);if(!j.proceed){return d}b[e.effect][1].call(d);c(d).trigger("onHide")},e.delay||1);return d},isShown:function(){return g.is(":visible, :animated")},get
 Conf:function(){return e},getTip:function(){return g},getTrigger:function(){return f},onBeforeShow:function(j){return i("onBeforeShow",j)},onShow:function(j){return i("onShow",j)},onBeforeHide:function(j){return i("onBeforeHide",j)},onHide:function(j){return i("onHide",j)}})}c.prototype.tooltip=function(d){var e=this.eq(typeof d=="number"?d:0).data("tooltip");if(e){return e}var f={trigger:null,triggers:null,effect:"slideup",delay:30,opacity:1,position:["top","center"],offset:[0,0],api:false};if(c.isFunction(d)){d={onBeforeShow:d}}c.extend(f,d);this.each(function(){e=new a(c(this),f);c(this).data("tooltip",e)});return f.api?e:this}})(jQuery);
+(function(b){b.tools=b.tools||{version:{}};b.tools.version.scrollable="1.0.3";var c=null;function a(p,m){var s=this;if(!c){c=s}function n(t,u){b(s).bind(t,function(w,v){if(u&&u.call(this,v.index)===false&&v){v.proceed=false}});return s}b.each(m,function(t,u){if(b.isFunction(u)){n(t,u)}});var d=!m.vertical;var f=b(m.items,p);var j=0;function l(u,t){return u.indexOf("#")!=-1?b(u).eq(0):t.siblings(u).eq(0)}var q=l(m.navi,p);var g=l(m.prev,p);var i=l(m.next,p);var h=l(m.prevPage,p);var o=l(m.nextPage,p);b.extend(s,{getIndex:function(){return j},getConf:function(){return m},getSize:function(){return s.getItems().size()},getPageAmount:function(){return Math.ceil(this.getSize()/m.size)},getPageIndex:function(){return Math.ceil(j/m.size)},getRoot:function(){return p},getItemWrap:function(){return f},getItems:function(){return f.children()},seekTo:function(w,u,A){u=u||m.speed;if(b.isFunction(u)){A=u;u=m.speed}if(w<0){w=0}if(w>s.getSize()-m.size){return s}var B=s.getItems().eq(w);if(!
 B.length){return s}var t={index:w,proceed:true};b(s).trigger("onBeforeSeek",t);if(!t.proceed){return s}if(d){var v=-B.position().left;f.animate({left:v},u,m.easing,A?function(){A.call(s)}:null)}else{var z=-B.position().top;f.animate({top:z},u,m.easing,A?function(){A.call(s)}:null)}if(q.length){var x=m.activeClass;var y=Math.ceil(w/m.size);y=Math.min(y,q.children().length-1);q.children().removeClass(x).eq(y).addClass(x)}if(w===0){g.add(h).addClass(m.disabledClass)}else{g.add(h).removeClass(m.disabledClass)}if(w>=s.getSize()-m.size){i.add(o).addClass(m.disabledClass)}else{i.add(o).removeClass(m.disabledClass)}c=s;j=w;b(s).trigger("onSeek",{index:w});return s},move:function(v,u,t){var w=j+v;if(m.loop&&w>(s.getSize()-m.size)){w=0}return this.seekTo(w,u,t)},next:function(u,t){return this.move(1,u,t)},prev:function(u,t){return this.move(-1,u,t)},movePage:function(v,u,t){return this.move(m.size*v,u,t)},setPage:function(x,y,v){var u=m.size;var t=u*x;var w=t+u>=this.getSize();if(w){t
 =this.getSize()-m.size}return this.seekTo(t,y,v)},prevPage:function(u,t){return this.setPage(this.getPageIndex()-1,u,t)},nextPage:function(u,t){return this.setPage(this.getPageIndex()+1,u,t)},begin:function(u,t){return this.seekTo(0,u,t)},end:function(u,t){return this.seekTo(this.getSize()-m.size,u,t)},reload:function(){return r()},click:function(u,x,v){var w=s.getItems().eq(u);var t=m.activeClass;if(u<0||u>=this.getSize()){return s}if(m.size==2){if(u==s.getIndex()){u--}s.getItems().removeClass(t);w.addClass(t);return this.seekTo(u,x,v)}if(!w.hasClass(t)){s.getItems().removeClass(t);w.addClass(t);var z=Math.floor(m.size/2);var y=u-z;if(y>s.getSize()-m.size){y=s.getSize()-m.size}if(y!==u){return this.seekTo(y,x,v)}}return s},onBeforeSeek:function(t){return n("onBeforeSeek",t)},onSeek:function(t){return n("onSeek",t)}});if(b.isFunction(b.fn.mousewheel)){p.bind("mousewheel.scrollable",function(u,v){var t=b.browser.opera?1:-1;s.move(v>0?t:-t,50);return false})}g.addClass(m.disab
 ledClass).click(function(){s.prev()});i.click(function(){s.next()});o.click(function(){s.nextPage()});h.addClass(m.disabledClass).click(function(){s.prevPage()});if(m.keyboard){b(document).unbind("keydown.scrollable").bind("keydown.scrollable",function(t){var u=c;if(!u){return}if(d&&(t.keyCode==37||t.keyCode==39)){u.move(t.keyCode==37?-1:1);return t.preventDefault()}if(!d&&(t.keyCode==38||t.keyCode==40)){u.move(t.keyCode==38?-1:1);return t.preventDefault()}return true})}function r(){if(q.is(":empty")||q.data("me")==s){q.empty();q.data("me",s);for(var u=0;u<s.getPageAmount();u++){var v=b("<"+m.naviItem+"/>").attr("href",u).click(function(x){var w=b(this);w.parent().children().removeClass(m.activeClass);w.addClass(m.activeClass);s.setPage(w.attr("href"));return x.preventDefault()});if(u===0){v.addClass(m.activeClass)}q.append(v)}}else{var t=q.children();t.each(function(w){var x=b(this);x.attr("href",w);if(w===0){x.addClass(m.activeClass)}x.click(function(){q.find("."+m.activeC
 lass).removeClass(m.activeClass);x.addClass(m.activeClass);s.setPage(x.attr("href"))})})}if(m.clickable){s.getItems().each(function(x,w){var y=b(this);if(!y.data("set")){y.bind("click.scrollable",function(){s.click(x)});y.data("set",true)}})}if(m.hoverClass){s.getItems().hover(function(){b(this).addClass(m.hoverClass)},function(){b(this).removeClass(m.hoverClass)})}return s}r();var e=null;function k(){e=setInterval(function(){if(m.interval===0){clearInterval(e)}s.next()},m.interval)}if(m.interval>0){p.hover(function(){clearInterval(e)},function(){k()});k()}}b.fn.scrollable=function(d){var e=this.eq(typeof d=="number"?d:0).data("scrollable");if(e){return e}var f={size:5,vertical:false,clickable:true,loop:false,interval:0,speed:400,keyboard:true,activeClass:"active",disabledClass:"disabled",hoverClass:null,easing:"swing",items:".items",prev:".prev",next:".next",prevPage:".prevPage",nextPage:".nextPage",navi:".navi",naviItem:"a",api:false,onBeforeSeek:null,onSeek:null};b.extend
 (f,d);this.each(function(){e=new a(b(this),f);b(this).data("scrollable",e)});return f.api?e:this}})(jQuery);
+(function(b){b.tools=b.tools||{version:{}};b.tools.version.overlay="1.0.2";var c=[];function a(h,d){var q=this,p=b(window),f,m,r,i,k,l;var e=d.expose&&b.tools.version.expose;function n(o,s){b(q).bind(o,function(u,t){if(s&&s.call(this)===false&&t){t.proceed=false}});return q}b.each(d,function(o,s){if(b.isFunction(s)){n(o,s)}});var j=d.target||h.attr("rel");var g=j?b(j):null;if(!g){g=h}else{k=h}p.load(function(){l=g.attr("overlay");if(!l){l=g.css("backgroundImage");if(!l){throw"background-image CSS property not set for overlay element: "+j}l=l.substring(l.indexOf("(")+1,l.indexOf(")")).replace(/\"/g,"");g.css("backgroundImage","none");g.attr("overlay",l)}r=g.outerWidth({margin:true});i=g.outerHeight({margin:true});m=b('<img src="'+l+'"/>');m.css({border:0,position:"absolute",display:"none"}).width(r).attr("overlay",true);b("body").append(m);if(k){k.bind("click.overlay",function(o){q.load(o.pageY-p.scrollTop(),o.pageX-p.scrollLeft());return o.preventDefault()})}if(!d.close||!g.
 find(d.close).length){g.prepend('<div class="close"></div>');d.close="div.close"}f=g.find(d.close);f.bind("click.overlay",function(){q.close()});if(d.preload){setTimeout(function(){var o=new Image();o.src=l},2000)}});b.extend(q,{load:function(v,u){if(q.isOpened()){return q}if(d.oneInstance){b.each(c,function(){this.close()})}var t={proceed:true};b(q).trigger("onBeforeLoad",t);if(!t.proceed){return q}if(e){m.expose(d.expose);m.expose().load()}v=v||d.start.top;u=u||d.start.left;var o=d.finish.top;var s=d.finish.left;if(o=="center"){o=Math.max((p.height()-i)/2,0)}if(s=="center"){s=Math.max((p.width()-r)/2,0)}if(!d.start.absolute){v+=p.scrollTop();u+=p.scrollLeft()}if(!d.finish.absolute){o+=p.scrollTop();s+=p.scrollLeft()}m.css({top:v,left:u,width:d.start.width,zIndex:d.zIndex}).show();m.animate({top:o,left:s,width:r},d.speed,function(){g.css({position:"absolute",top:o,left:s});var w=m.css("zIndex");f.add(g).css("zIndex",++w);g.fadeIn(d.fadeInSpeed,function(){b(q).trigger("onLoa
 d")})});return q},close:function(){if(!q.isOpened()){return q}var t={proceed:true};b(q).trigger("onBeforeClose",t);if(!t.proceed){return q}if(e){m.expose().close()}if(m.is(":visible")){g.hide();var s=d.start.top;var o=d.start.left;if(k){t=k.offset();s=t.top+k.height()/2;o=t.left+k.width()/2}m.animate({top:s,left:o,width:0},d.closeSpeed,function(){b(q).trigger("onClose",t)})}return q},getBackgroundImage:function(){return m},getContent:function(){return g},getTrigger:function(){return k},isOpened:function(){return g.is(":visible")},getConf:function(){return d},onBeforeLoad:function(o){return n("onBeforeLoad",o)},onLoad:function(o){return n("onLoad",o)},onBeforeClose:function(o){return n("onBeforeClose",o)},onClose:function(o){return n("onClose",o)}});b(document).keydown(function(o){if(o.keyCode==27){q.close()}});if(d.closeOnClick){b(document).bind("click.overlay",function(o){if(!g.is(":visible, :animated")){return}var s=b(o.target);if(s.attr("overlay")){return}if(s.parents("[o
 verlay]").length){return}q.close()})}}b.fn.overlay=function(e){var f=this.eq(typeof e=="number"?e:0).data("overlay");if(f){return f}var d=b(window);var g={start:{top:Math.round(d.height()/2),left:Math.round(d.width()/2),width:0,absolute:false},finish:{top:80,left:"center",absolute:false},speed:"normal",fadeInSpeed:"fast",closeSpeed:"fast",close:null,oneInstance:true,closeOnClick:true,preload:true,zIndex:9999,api:false,expose:null,target:null};if(b.isFunction(e)){e={onBeforeLoad:e}}b.extend(true,g,e);this.each(function(){f=new a(b(this),g);c.push(f);b(this).data("overlay",f)});return g.api?f:this}})(jQuery);
+(function(b){b.tools=b.tools||{version:{}};b.tools.version.expose="1.0.2";function a(){var e=b(window).width();if(b.browser.mozilla){return e}var d;if(window.innerHeight&&window.scrollMaxY){d=window.innerWidth+window.scrollMaxX}else{if(document.body.scrollHeight>document.body.offsetHeight){d=document.body.scrollWidth}else{d=document.body.offsetWidth}}return d<e?d+20:e}function c(g,h){var e=this,d=null,f=false,i=0;function j(k,l){b(e).bind(k,function(n,m){if(l&&l.call(this)===false&&m){m.proceed=false}});return e}b.each(h,function(k,l){if(b.isFunction(l)){j(k,l)}});b(window).bind("resize.expose",function(){if(d){d.css({width:a(),height:b(document).height()})}});b.extend(this,{getMask:function(){return d},getExposed:function(){return g},getConf:function(){return h},isLoaded:function(){return f},load:function(){if(f){return e}i=g.eq(0).css("zIndex");if(h.maskId){d=b("#"+h.maskId)}if(!d||!d.length){d=b("<div/>").css({position:"absolute",top:0,left:0,width:a(),height:b(document).
 height(),display:"none",opacity:0,zIndex:h.zIndex});if(h.maskId){d.attr("id",h.maskId)}b("body").append(d);var k=d.css("backgroundColor");if(!k||k=="transparent"||k=="rgba(0, 0, 0, 0)"){d.css("backgroundColor",h.color)}if(h.closeOnEsc){b(document).bind("keydown.unexpose",function(n){if(n.keyCode==27){e.close()}})}if(h.closeOnClick){d.bind("click.unexpose",function(){e.close()})}}var m={proceed:true};b(e).trigger("onBeforeLoad",m);if(!m.proceed){return e}b.each(g,function(){var n=b(this);if(!/relative|absolute/i.test(n.css("position"))){n.css("position","relative")}});g.css({zIndex:h.zIndex+1});var l=d.height();if(!this.isLoaded()){d.css({opacity:0,display:"block"}).fadeTo(h.loadSpeed,h.opacity,function(){if(d.height()!=l){d.css("height",l)}b(e).trigger("onLoad")})}f=true;return e},close:function(){if(!f){return e}var k={proceed:true};b(e).trigger("onBeforeClose",k);if(k.proceed===false){return e}d.fadeOut(h.closeSpeed,function(){b(e).trigger("onClose");g.css({zIndex:b.browse
 r.msie?i:null})});f=false;return e},onBeforeLoad:function(k){return j("onBeforeLoad",k)},onLoad:function(k){return j("onLoad",k)},onBeforeClose:function(k){return j("onBeforeClose",k)},onClose:function(k){return j("onClose",k)}})}b.fn.expose=function(d){var e=this.eq(typeof d=="number"?d:0).data("expose");if(e){return e}var f={maskId:null,loadSpeed:"slow",closeSpeed:"fast",closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.8,color:"#456",api:false};if(typeof d=="string"){d={color:d}}b.extend(f,d);this.each(function(){e=new c(b(this),f);b(this).data("expose",e)});return f.api?e:this}})(jQuery);