From ad1ccce7233bdaac75d4f286306a797a2e6e18d0 Mon Sep 17 00:00:00 2001
From: Rafael Monnerat <rafael@nexedi.com>
Date: Mon, 21 Jan 2013 18:12:18 -0200
Subject: [PATCH] JQzoom JQuery Plugin Initial Release

---
 .../erp5_jquery/jquery/plugin/jqzoom.xml      |  26 +
 .../plugin/jqzoom/jqzoom-core-pack.js.xml     |  69 ++
 .../jquery/plugin/jqzoom/jqzoom-core.js.xml   | 780 ++++++++++++++++++
 .../jquery/plugin/jqzoom/jqzoom.css.xml       | 163 ++++
 bt5/erp5_jquery_plugin_jqzoom/bt/change_log   |   2 +
 .../bt/copyright_list                         |   1 +
 .../bt/dependency_list                        |   1 +
 bt5/erp5_jquery_plugin_jqzoom/bt/description  |   1 +
 bt5/erp5_jquery_plugin_jqzoom/bt/license      |   1 +
 .../bt/maintainer_list                        |   1 +
 bt5/erp5_jquery_plugin_jqzoom/bt/revision     |   1 +
 .../bt/template_format_version                |   1 +
 .../bt/template_path_list                     |   2 +
 bt5/erp5_jquery_plugin_jqzoom/bt/title        |   1 +
 bt5/erp5_jquery_plugin_jqzoom/bt/version      |   1 +
 15 files changed, 1051 insertions(+)
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom.xml
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom-core-pack.js.xml
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom-core.js.xml
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom.css.xml
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/change_log
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/copyright_list
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/dependency_list
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/description
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/license
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/maintainer_list
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/revision
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/template_format_version
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/template_path_list
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/title
 create mode 100644 bt5/erp5_jquery_plugin_jqzoom/bt/version

diff --git a/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom.xml b/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom.xml
new file mode 100644
index 0000000000..929663b1b8
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>jqzoom</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom-core-pack.js.xml b/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom-core-pack.js.xml
new file mode 100644
index 0000000000..18a7ff9bd4
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom-core-pack.js.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Cacheable__manager_id</string> </key>
+            <value> <string>http_cache</string> </value>
+        </item>
+        <item>
+            <key> <string>_EtagSupport__etag</string> </key>
+            <value> <string>ts48589804.75</string> </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>jqzoom-core-pack.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>data</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+/*!\r\n
+ * jQzoom Evolution Library v2.3  - Javascript Image magnifier\r\n
+ * http://www.mind-projects.it\r\n
+ *\r\n
+ * Copyright 2011, Engineer Marco Renzi\r\n
+ * Licensed under the BSD license.\r\n
+ *\r\n
+ * Redistribution and use in source and binary forms, with or without\r\n
+ * modification, are permitted provided that the following conditions are met:\r\n
+ *     * Redistributions of source code must retain the above copyright\r\n
+ *       notice, this list of conditions and the following disclaimer.\r\n
+ *     * Redistributions in binary form must reproduce the above copyright\r\n
+ *       notice, this list of conditions and the following disclaimer in the\r\n
+ *       documentation and/or other materials provided with the distribution.\r\n
+ *     * Neither the name of the organization nor the\r\n
+ *       names of its contributors may be used to endorse or promote products\r\n
+ *       derived from this software without specific prior written permission.\r\n
+ *\r\n
+ * Date: 03 May 2011 22:16:00\r\n
+ */\r\n
+eval(function(p,a,c,k,e,r){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--)r[e(c)]=k[c]||e(c);k=[function(e){return r[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}(\'(8($){9 v=($.1A.2j&&$.1A.2k<7);9 w=$(1B.1C);9 y=$(y);9 z=F;$.3d.13=8(b){G 5.1Y(8(){9 a=5.3e.3f();A(a==\\\'a\\\'){Q 13(5,b)}})};13=8(g,h){9 j=2l;j=$(g).1D("13");A(j)G j;9 k=5;9 l=$.1E({},$.13.2m,h||{});k.3g=g;g.1p=$(g).R(\\\'1p\\\');g.1F=F;g.3h=F;g.1u=F;g.1h=F;g.1b={};g.2n=2l;g.14={};g.1G=F;$(g).D({\\\'3i-1i\\\':\\\'1v\\\',\\\'3j-3k\\\':\\\'1v\\\'});9 m=$("3l:3m(0)",g);g.V=$(g).R(\\\'V\\\');g.1Z=m.R(\\\'V\\\');9 n=($.1w(g.V).Y>0)?g.V:g.1Z;9 p=Q 2o(m);9 q=Q 2p();9 r=Q 2q();9 s=Q 2r();9 t=Q 2s();$(g).1H(\\\'2t\\\',8(e){e.2u();G F});9 u=[\\\'20\\\',\\\'1c\\\',\\\'1j\\\',\\\'1q\\\'];A($.3n($.1w(l.H),u)<0){l.H=\\\'20\\\'}$.1E(k,{21:8(){A($(".L",g).Y==0){g.L=$(\\\'<Z/>\\\').1I(\\\'L\\\');m.3o(g.L)}A(l.H==\\\'1j\\\'){l.15=p.w;l.16=p.h}A($(".22",g).Y==0){q.S()}A($(".23",g).Y==0){r.S()}A($(".2v",g).Y==0){t.S()}A(l.24||l.H==\\\'1c\\\'||l.1J){k.1K()}k.2w()},2w:8(){A(l.H==\\\'1c\\\'){$(".L",g).3p(8(){g.1G=17});$(".L",g).3q(8(){g.1G=F});1B.1C.3r=8(){G F};$(".L",g).D({1L:\\\'1r\\\'});$(".22",g).D({1L:\\\'3s\\\'})}A(l.H==\\\'1j\\\'){$(".1M",g).D({1L:\\\'3t\\\'})}$(".L",g).1H(\\\'3u 3v\\\',8(a){m.R(\\\'V\\\',\\\'\\\');$(g).R(\\\'V\\\',\\\'\\\');g.1F=17;p.1s();A(g.1h){k.25(a)}1k{k.1K()}});$(".L",g).1H(\\\'3w\\\',8(a){k.2x()});$(".L",g).1H(\\\'3x\\\',8(e){A(e.26>p.E.r||e.26<p.E.l||e.27<p.E.t||e.27>p.E.b){q.1N();G F}g.1F=17;A(g.1h&&!$(\\\'.23\\\',g).3y(\\\':2y\\\')){k.25(e)}A(g.1h&&(l.H!=\\\'1c\\\'||(l.H==\\\'1c\\\'&&g.1G))){q.1l(e)}});9 c=Q 2z();9 i=0;9 d=Q 2z();d=$(\\\'a\\\').3z(8(){9 a=Q 3A("3B[\\\\\\\\s]*:[\\\\\\\\s]*\\\'"+$.1w(g.1p)+"\\\'","i");9 b=$(5).R(\\\'1p\\\');A(a.3C(b)){G 5}});A(d.Y>0){9 f=d.3D(0,1);d.3E(f)}d.1Y(8(){A(l.24){9 a=$.1E({},1O("("+$.1w($(5).R(\\\'1p\\\'))+")"));c[i]=Q 28();c[i].1d=a.1x;i++}$(5).2t(8(e){A($(5).3F(\\\'29\\\')){G F}d.1Y(8(){$(5).3G(\\\'29\\\')});e.2u();k.2A(5);G F})})},1K:8(){A(g.1h==F&&g.1u==F){9 a=$(g).R(\\\'2B\\\');g.1u=17;s.2C(a)}},25:8(e){3H(g.2n);q.T();r.T()},2x:8(e){1P(l.H){1t\\\'1c\\\':W;1r:m.R(\\\'V\\\',g.1Z);$(g).R(\\\'V\\\',g.V);A(l.1J){q.1N()}1k{r.O();q.O()}W}g.1F=F},2A:8(a){g.1u=F;g.1h=F;9 b=Q 3I();b=$.1E({},1O("("+$.1w($(a).R(\\\'1p\\\'))+")"));A(b.1Q&&b.1x){9 c=b.1Q;9 d=b.1x;$(a).1I(\\\'29\\\');$(g).R(\\\'2B\\\',d);m.R(\\\'1d\\\',c);q.O();r.O();k.1K()}1k{2a(\\\'2D :: 2E 2F 1R 1x 2G 1Q.\\\');2b\\\'2D :: 2E 2F 1R 1x 2G 1Q.\\\';}G F}});A(m[0].3J){p.1s();A($(".L",g).Y==0)k.21()}8 2o(c){9 d=5;5.6=c[0];5.2H=8(){9 a=0;a=c.D(\\\'2c-B-P\\\');M=\\\'\\\';9 b=0;b=c.D(\\\'2c-C-P\\\');K=\\\'\\\';A(a){1R(i=0;i<3;i++){9 x=[];x=a.1S(i,1);A(2I(x)==F){M=M+\\\'\\\'+a.1S(i,1)}1k{W}}}A(b){1R(i=0;i<3;i++){A(!2I(b.1S(i,1))){K=K+b.1S(i,1)}1k{W}}}d.M=(M.Y>0)?1O(M):0;d.K=(K.Y>0)?1O(K):0};5.1s=8(){d.2H();d.w=c.P();d.h=c.12();d.1m=c.3K();d.1e=c.3L();d.E=c.1f();d.E.l=c.1f().C+d.K;d.E.t=c.1f().B+d.M;d.E.r=d.w+d.E.l;d.E.b=d.h+d.E.t;d.2J=c.1f().C+d.1m;d.3M=c.1f().B+d.1e};5.6.2K=8(){2a(\\\'1T 1U 1V X.\\\');2b\\\'1T 1U 1V X.\\\';};5.6.2L=8(){d.1s();A($(".L",g).Y==0)k.21()};G d};8 2s(){9 a=5;5.S=8(){5.6=$(\\\'<Z/>\\\').1I(\\\'2v\\\').D(\\\'2d\\\',\\\'2M\\\').2N(l.2O);$(\\\'.L\\\',g).S(5.6)};5.T=8(){5.6.B=(p.1e-5.6.12())/2;5.6.C=(p.1m-5.6.P())/2;5.6.D({B:5.6.B,C:5.6.C,11:\\\'18\\\',2d:\\\'2y\\\'})};5.O=8(){5.6.D(\\\'2d\\\',\\\'2M\\\')};G 5}8 2p(){9 d=5;5.6=$(\\\'<Z/>\\\').1I(\\\'22\\\');5.S=8(){$(\\\'.L\\\',g).S($(5.6).O());A(l.H==\\\'1q\\\'){5.X=Q 28();5.X.1d=p.6.1d;$(5.6).2e().S(5.X)}};5.2P=8(){5.6.w=(1W((l.15)/g.1b.x)>p.w)?p.w:(1W(l.15/g.1b.x));5.6.h=(1W((l.16)/g.1b.y)>p.h)?p.h:(1W(l.16/g.1b.y));5.6.B=(p.1e-5.6.h-2)/2;5.6.C=(p.1m-5.6.w-2)/2;5.6.D({B:0,C:0,P:5.6.w+\\\'I\\\',12:5.6.h+\\\'I\\\',11:\\\'18\\\',1g:\\\'1v\\\',2f:1+\\\'I\\\'});A(l.H==\\\'1q\\\'){5.X.1d=p.6.1d;$(5.6).D({\\\'2g\\\':1});$(5.X).D({11:\\\'18\\\',1g:\\\'1y\\\',C:-(5.6.C+1-p.K)+\\\'I\\\',B:-(5.6.B+1-p.M)+\\\'I\\\'})}};5.1N=8(){5.6.B=(p.1e-5.6.h-2)/2;5.6.C=(p.1m-5.6.w-2)/2;5.6.D({B:5.6.B,C:5.6.C});A(l.H==\\\'1q\\\'){$(5.X).D({11:\\\'18\\\',1g:\\\'1y\\\',C:-(5.6.C+1-p.K)+\\\'I\\\',B:-(5.6.B+1-p.M)+\\\'I\\\'})}s.1l()};5.1l=8(e){g.14.x=e.26;g.14.y=e.27;9 b=0;9 c=0;8 2Q(a){G g.14.x-(a.w)/2<p.E.l}8 2R(a){G g.14.x+(a.w)/2>p.E.r}8 2S(a){G g.14.y-(a.h)/2<p.E.t}8 2T(a){G g.14.y+(a.h)/2>p.E.b}b=g.14.x+p.K-p.E.l-(5.6.w+2)/2;c=g.14.y+p.M-p.E.t-(5.6.h+2)/2;A(2Q(5.6)){b=p.K-1}1k A(2R(5.6)){b=p.w+p.K-5.6.w-1}A(2S(5.6)){c=p.M-1}1k A(2T(5.6)){c=p.h+p.M-5.6.h-1}5.6.C=b;5.6.B=c;5.6.D({\\\'C\\\':b+\\\'I\\\',\\\'B\\\':c+\\\'I\\\'});A(l.H==\\\'1q\\\'){A($.1A.2j&&$.1A.2k>7){$(5.6).2e().S(5.X)}$(5.X).D({11:\\\'18\\\',1g:\\\'1y\\\',C:-(5.6.C+1-p.K)+\\\'I\\\',B:-(5.6.B+1-p.M)+\\\'I\\\'})}s.1l()};5.O=8(){m.D({\\\'2g\\\':1});5.6.O()};5.T=8(){A(l.H!=\\\'1j\\\'&&(l.2U||l.H==\\\'1c\\\')){5.6.T()}A(l.H==\\\'1q\\\'){m.D({\\\'2g\\\':l.2V})}};5.2h=8(){9 o={};o.C=d.6.C;o.B=d.6.B;G o};G 5};8 2q(){9 b=5;5.6=$("<Z 1z=\\\'23\\\'><Z 1z=\\\'1M\\\'><Z 1z=\\\'1X\\\'></Z><Z 1z=\\\'2i\\\'></Z></Z></Z>");5.U=$(\\\'<2W 1z="3N" 1d="3O:\\\\\\\'\\\\\\\';" 3P="0" 3Q="0" 3R="2X" 3S="3T" 3U="0" ></2W>\\\');5.1l=8(){5.6.1n=0;5.6.1o=0;A(l.H!=\\\'1j\\\'){1P(l.11){1t"C":5.6.1n=(p.E.l-p.K-J.N(l.19)-l.15>0)?(0-l.15-J.N(l.19)):(p.1m+J.N(l.19));5.6.1o=J.N(l.1a);W;1t"B":5.6.1n=J.N(l.19);5.6.1o=(p.E.t-p.M-J.N(l.1a)-l.16>0)?(0-l.16-J.N(l.1a)):(p.1e+J.N(l.1a));W;1t"2X":5.6.1n=J.N(l.19);5.6.1o=(p.E.t-p.M+p.1e+J.N(l.1a)+l.16<2Y.12)?(p.1e+J.N(l.1a)):(0-l.16-J.N(l.1a));W;1r:5.6.1n=(p.2J+J.N(l.19)+l.15<2Y.P)?(p.1m+J.N(l.19)):(0-l.15-J.N(l.19));5.6.1o=J.N(l.1a);W}}5.6.D({\\\'C\\\':5.6.1n+\\\'I\\\',\\\'B\\\':5.6.1o+\\\'I\\\'});G 5};5.S=8(){$(\\\'.L\\\',g).S(5.6);5.6.D({11:\\\'18\\\',1g:\\\'1v\\\',2Z:3V});A(l.H==\\\'1j\\\'){5.6.D({1L:\\\'1r\\\'});9 a=(p.K==0)?1:p.K;$(\\\'.1M\\\',5.6).D({2f:a+\\\'I\\\'})}$(\\\'.1M\\\',5.6).D({P:J.30(l.15)+\\\'I\\\',2f:a+\\\'I\\\'});$(\\\'.2i\\\',5.6).D({P:\\\'31%\\\',12:J.30(l.16)+\\\'I\\\'});$(\\\'.1X\\\',5.6).D({P:\\\'31%\\\',11:\\\'18\\\'});$(\\\'.1X\\\',5.6).O();A(l.V&&n.Y>0){$(\\\'.1X\\\',5.6).2N(n).T()}b.1l()};5.O=8(){1P(l.32){1t\\\'3W\\\':5.6.3X(l.33,8(){});W;1r:5.6.O();W}5.U.O()};5.T=8(){1P(l.34){1t\\\'3Y\\\':5.6.35();5.6.35(l.36,8(){});W;1r:5.6.T();W}A(v&&l.H!=\\\'1j\\\'){5.U.P=5.6.P();5.U.12=5.6.12();5.U.C=5.6.1n;5.U.B=5.6.1o;5.U.D({1g:\\\'1y\\\',11:"18",C:5.U.C,B:5.U.B,2Z:3Z,P:5.U.P+\\\'I\\\',12:5.U.12+\\\'I\\\'});$(\\\'.L\\\',g).S(5.U);5.U.T()}}};8 2r(){9 c=5;5.6=Q 28();5.2C=8(a){t.T();5.40=a;5.6.1i.11=\\\'18\\\';5.6.1i.2c=\\\'37\\\';5.6.1i.1g=\\\'1v\\\';5.6.1i.C=\\\'-41\\\';5.6.1i.B=\\\'37\\\';1B.1C.42(5.6);5.6.1d=a};5.1s=8(){9 a=$(5.6);9 b={};5.6.1i.1g=\\\'1y\\\';c.w=a.P();c.h=a.12();c.E=a.1f();c.E.l=a.1f().C;c.E.t=a.1f().B;c.E.r=c.w+c.E.l;c.E.b=c.h+c.E.t;b.x=(c.w/p.w);b.y=(c.h/p.h);g.1b=b;1B.1C.43(5.6);$(\\\'.2i\\\',g).2e().S(5.6);q.2P()};5.6.2K=8(){2a(\\\'1T 1U 1V 38 39 X.\\\');2b\\\'1T 1U 1V 38 39 X.\\\';};5.6.2L=8(){c.1s();t.O();g.1u=F;g.1h=17;A(l.H==\\\'1c\\\'||l.1J){q.T();r.T();q.1N()}};5.1l=8(){9 a=-g.1b.x*(q.2h().C-p.K+1);9 b=-g.1b.y*(q.2h().B-p.M+1);$(5.6).D({\\\'C\\\':a+\\\'I\\\',\\\'B\\\':b+\\\'I\\\'})};G 5};$(g).1D("13",k)};$.13={2m:{H:\\\'20\\\',15:3a,16:3a,19:10,1a:0,11:"44",24:17,2O:\\\'45 46\\\',V:17,2U:17,2V:0.4,1J:F,34:\\\'T\\\',32:\\\'O\\\',36:\\\'47\\\',33:\\\'48\\\'},3b:8(a){9 b=$(a).1D(\\\'13\\\');b.3b();G F},3c:8(a){9 b=$(a).1D(\\\'13\\\');b.3c();G F},49:8(a){z=17},4a:8(a){z=F}}})(4b);\',62,260,\'|||||this|node||function|var|||||||||||||||||||||||||||if|top|left|css|pos|false|return|zoomType|px|Math|bleft|zoomPad|btop|abs|hide|width|new|attr|append|show|ieframe|title|break|image|length|div||position|height|jqzoom|mousepos|zoomWidth|zoomHeight|true|absolute|xOffset|yOffset|scale|drag|src|oh|offset|display|largeimageloaded|style|innerzoom|else|setposition|ow|leftpos|toppos|rel|reverse|default|fetchdata|case|largeimageloading|none|trim|largeimage|block|class|browser|document|body|data|extend|zoom_active|mouseDown|bind|addClass|alwaysOn|load|cursor|zoomWrapper|setcenter|eval|switch|smallimage|for|substr|Problems|while|loading|parseInt|zoomWrapperTitle|each|imagetitle|standard|create|zoomPup|zoomWindow|preloadImages|activate|pageX|pageY|Image|zoomThumbActive|alert|throw|border|visibility|empty|borderWidth|opacity|getoffset|zoomWrapperImage|msie|version|null|defaults|timer|Smallimage|Lens|Stage|Largeimage|Loader|click|preventDefault|zoomPreload|init|deactivate|visible|Array|swapimage|href|loadimage|ERROR|Missing|parameter|or|findborder|isNaN|rightlimit|onerror|onload|hidden|html|preloadText|setdimensions|overleft|overright|overtop|overbottom|lens|imageOpacity|iframe|bottom|screen|zIndex|round|100|hideEffect|fadeoutSpeed|showEffect|fadeIn|fadeinSpeed|0px|the|big|300|disable|enable|fn|nodeName|toLowerCase|el|zoom_disabled|outline|text|decoration|img|eq|inArray|wrap|mousedown|mouseup|ondragstart|move|crosshair|mouseenter|mouseover|mouseleave|mousemove|is|filter|RegExp|gallery|test|splice|push|hasClass|removeClass|clearTimeout|Object|complete|outerWidth|outerHeight|bottomlimit|zoomIframe|javascript|marginwidth|marginheight|align|scrolling|no|frameborder|5001|fadeout|fadeOut|fadein|99|url|5000px|appendChild|removeChild|right|Loading|zoom|slow|2000|disableAll|enableAll|jQuery\'.split(\'|\'),0,{}))\r\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>size</string> </key>
+            <value> <int>9669</int> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom-core.js.xml b/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom-core.js.xml
new file mode 100644
index 0000000000..33eb4ba059
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom-core.js.xml
@@ -0,0 +1,780 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Cacheable__manager_id</string> </key>
+            <value> <string>http_cache</string> </value>
+        </item>
+        <item>
+            <key> <string>_EtagSupport__etag</string> </key>
+            <value> <string>ts58795626.09</string> </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>jqzoom-core.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>data</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+/*!\r\n
+ * jQzoom Evolution Library v2.3  - Javascript Image magnifier\r\n
+ * http://www.mind-projects.it\r\n
+ *\r\n
+ * Copyright 2011, Engineer Marco Renzi\r\n
+ * Licensed under the BSD license.\r\n
+ *\r\n
+ * Redistribution and use in source and binary forms, with or without\r\n
+ * modification, are permitted provided that the following conditions are met:\r\n
+ *     * Redistributions of source code must retain the above copyright\r\n
+ *       notice, this list of conditions and the following disclaimer.\r\n
+ *     * Redistributions in binary form must reproduce the above copyright\r\n
+ *       notice, this list of conditions and the following disclaimer in the\r\n
+ *       documentation and/or other materials provided with the distribution.\r\n
+ *     * Neither the name of the organization nor the\r\n
+ *       names of its contributors may be used to endorse or promote products\r\n
+ *       derived from this software without specific prior written permission.\r\n
+ *\r\n
+ * Date: 03 May 2011 22:16:00\r\n
+ */\r\n
+(function ($) {\r\n
+    //GLOBAL VARIABLES\r\n
+    var isIE6 = ($.browser.msie && $.browser.version < 7);\r\n
+    var body = $(document.body);\r\n
+    var window = $(window);\r\n
+    var jqzoompluging_disabled = false; //disabilita globalmente il plugin\r\n
+    $.fn.jqzoom = function (options) {\r\n
+        return this.each(function () {\r\n
+            var node = this.nodeName.toLowerCase();\r\n
+            if (node == \'a\') {\r\n
+                new jqzoom(this, options);\r\n
+            }\r\n
+        });\r\n
+    };\r\n
+    jqzoom = function (el, options) {\r\n
+        var api = null;\r\n
+        api = $(el).data("jqzoom");\r\n
+        if (api) return api;\r\n
+        var obj = this;\r\n
+        var settings = $.extend({}, $.jqzoom.defaults, options || {});\r\n
+        obj.el = el;\r\n
+        el.rel = $(el).attr(\'rel\');\r\n
+        //ANCHOR ELEMENT\r\n
+        el.zoom_active = false;\r\n
+        el.zoom_disabled = false; //to disable single zoom instance\r\n
+        el.largeimageloading = false; //tell us if large image is loading\r\n
+        el.largeimageloaded = false; //tell us if large image is loaded\r\n
+        el.scale = {};\r\n
+        el.timer = null;\r\n
+        el.mousepos = {};\r\n
+        el.mouseDown = false;\r\n
+        $(el).css({\r\n
+            \'outline-style\': \'none\',\r\n
+            \'text-decoration\': \'none\'\r\n
+        });\r\n
+        //BASE IMAGE\r\n
+        var img = $("img:eq(0)", el);\r\n
+        el.title = $(el).attr(\'title\');\r\n
+        el.imagetitle = img.attr(\'title\');\r\n
+        var zoomtitle = ($.trim(el.title).length > 0) ? el.title : el.imagetitle;\r\n
+        var smallimage = new Smallimage(img);\r\n
+        var lens = new Lens();\r\n
+        var stage = new Stage();\r\n
+        var largeimage = new Largeimage();\r\n
+        var loader = new Loader();\r\n
+        //preventing default click,allowing the onclick event [exmple: lightbox]\r\n
+        $(el).bind(\'click\', function (e) {\r\n
+            e.preventDefault();\r\n
+            return false;\r\n
+        });\r\n
+        //setting the default zoomType if not in settings\r\n
+        var zoomtypes = [\'standard\', \'drag\', \'innerzoom\', \'reverse\'];\r\n
+        if ($.inArray($.trim(settings.zoomType), zoomtypes) < 0) {\r\n
+            settings.zoomType = \'standard\';\r\n
+        }\r\n
+        $.extend(obj, {\r\n
+            create: function () { //create the main objects\r\n
+                //create ZoomPad\r\n
+                if ($(".zoomPad", el).length == 0) {\r\n
+                    el.zoomPad = $(\'<div/>\').addClass(\'zoomPad\');\r\n
+                    img.wrap(el.zoomPad);\r\n
+                }\r\n
+                if(settings.zoomType == \'innerzoom\'){\r\n
+                    settings.zoomWidth  = smallimage.w;\r\n
+                    settings.zoomHeight  =   smallimage.h;\r\n
+                }\r\n
+                //creating ZoomPup\r\n
+                if ($(".zoomPup", el).length == 0) {\r\n
+                    lens.append();\r\n
+                }\r\n
+                //creating zoomWindow\r\n
+                if ($(".zoomWindow", el).length == 0) {\r\n
+                    stage.append();\r\n
+                }\r\n
+                //creating Preload\r\n
+                if ($(".zoomPreload", el).length == 0) {\r\n
+                    loader.append();\r\n
+                }\r\n
+                //preloading images\r\n
+                if (settings.preloadImages || settings.zoomType == \'drag\' || settings.alwaysOn) {\r\n
+                    obj.load();\r\n
+                }\r\n
+                obj.init();\r\n
+            },\r\n
+            init: function () {\r\n
+                //drag option\r\n
+                if (settings.zoomType == \'drag\') {\r\n
+                    $(".zoomPad", el).mousedown(function () {\r\n
+                        el.mouseDown = true;\r\n
+                    });\r\n
+                    $(".zoomPad", el).mouseup(function () {\r\n
+                        el.mouseDown = false;\r\n
+                    });\r\n
+                    document.body.ondragstart = function () {\r\n
+                        return false;\r\n
+                    };\r\n
+                    $(".zoomPad", el).css({\r\n
+                        cursor: \'default\'\r\n
+                    });\r\n
+                    $(".zoomPup", el).css({\r\n
+                        cursor: \'move\'\r\n
+                    });\r\n
+                }\r\n
+                if (settings.zoomType == \'innerzoom\') {\r\n
+                    $(".zoomWrapper", el).css({\r\n
+                        cursor: \'crosshair\'\r\n
+                    });\r\n
+                }\r\n
+                $(".zoomPad", el).bind(\'mouseenter mouseover\', function (event) {\r\n
+                    img.attr(\'title\', \'\');\r\n
+                    $(el).attr(\'title\', \'\');\r\n
+                    el.zoom_active = true;\r\n
+                    //if loaded then activate else load large image\r\n
+                    smallimage.fetchdata();\r\n
+                    if (el.largeimageloaded) {\r\n
+                        obj.activate(event);\r\n
+                    } else {\r\n
+                        obj.load();\r\n
+                    }\r\n
+                });\r\n
+                $(".zoomPad", el).bind(\'mouseleave\', function (event) {\r\n
+                    obj.deactivate();\r\n
+                });\r\n
+                $(".zoomPad", el).bind(\'mousemove\', function (e) {\r\n
+\r\n
+                    //prevent fast mouse mevements not to fire the mouseout event\r\n
+                    if (e.pageX > smallimage.pos.r || e.pageX < smallimage.pos.l || e.pageY < smallimage.pos.t || e.pageY > smallimage.pos.b) {\r\n
+                        lens.setcenter();\r\n
+                        return false;\r\n
+                    }\r\n
+                    el.zoom_active = true;\r\n
+                    if (el.largeimageloaded && !$(\'.zoomWindow\', el).is(\':visible\')) {\r\n
+                        obj.activate(e);\r\n
+                    }\r\n
+                    if (el.largeimageloaded && (settings.zoomType != \'drag\' || (settings.zoomType == \'drag\' && el.mouseDown))) {\r\n
+                        lens.setposition(e);\r\n
+                    }\r\n
+                });\r\n
+                var thumb_preload = new Array();\r\n
+                var i = 0;\r\n
+                //binding click event on thumbnails\r\n
+                var thumblist = new Array();\r\n
+                thumblist = $(\'a\').filter(function () {\r\n
+                    var regex = new RegExp("gallery[\\\\s]*:[\\\\s]*\'" + $.trim(el.rel) + "\'", "i");\r\n
+                    var rel = $(this).attr(\'rel\');\r\n
+                    if (regex.test(rel)) {\r\n
+                        return this;\r\n
+                    }\r\n
+                });\r\n
+                if (thumblist.length > 0) {\r\n
+                    //getting the first to the last\r\n
+                    var first = thumblist.splice(0, 1);\r\n
+                    thumblist.push(first);\r\n
+                }\r\n
+                thumblist.each(function () {\r\n
+                    //preloading thumbs\r\n
+                    if (settings.preloadImages) {\r\n
+                        var thumb_options = $.extend({}, eval("(" + $.trim($(this).attr(\'rel\')) + ")"));\r\n
+                        thumb_preload[i] = new Image();\r\n
+                        thumb_preload[i].src = thumb_options.largeimage;\r\n
+                        i++;\r\n
+                    }\r\n
+                    $(this).click(function (e) {\r\n
+                        if($(this).hasClass(\'zoomThumbActive\')){\r\n
+                          return false;\r\n
+                        }\r\n
+                        thumblist.each(function () {\r\n
+                            $(this).removeClass(\'zoomThumbActive\');\r\n
+                        });\r\n
+                        e.preventDefault();\r\n
+                        obj.swapimage(this);\r\n
+                        return false;\r\n
+                    });\r\n
+                });\r\n
+            },\r\n
+            load: function () {\r\n
+                if (el.largeimageloaded == false && el.largeimageloading == false) {\r\n
+                    var url = $(el).attr(\'href\');\r\n
+                    el.largeimageloading = true;\r\n
+                    largeimage.loadimage(url);\r\n
+                }\r\n
+            },\r\n
+            activate: function (e) {\r\n
+                clearTimeout(el.timer);\r\n
+                //show lens and zoomWindow\r\n
+                lens.show();\r\n
+                stage.show();\r\n
+            },\r\n
+            deactivate: function (e) {\r\n
+                switch (settings.zoomType) {\r\n
+                case \'drag\':\r\n
+                    //nothing or lens.setcenter();\r\n
+                    break;\r\n
+                default:\r\n
+                    img.attr(\'title\', el.imagetitle);\r\n
+                    $(el).attr(\'title\', el.title);\r\n
+                    if (settings.alwaysOn) {\r\n
+                        lens.setcenter();\r\n
+                    } else {\r\n
+                        stage.hide();\r\n
+                        lens.hide();\r\n
+                    }\r\n
+                    break;\r\n
+                }\r\n
+                el.zoom_active = false;\r\n
+            },\r\n
+            swapimage: function (link) {\r\n
+                el.largeimageloading = false;\r\n
+                el.largeimageloaded = false;\r\n
+                var options = new Object();\r\n
+                options = $.extend({}, eval("(" + $.trim($(link).attr(\'rel\')) + ")"));\r\n
+                if (options.smallimage && options.largeimage) {\r\n
+                    var smallimage = options.smallimage;\r\n
+                    var largeimage = options.largeimage;\r\n
+                    $(link).addClass(\'zoomThumbActive\');\r\n
+                    $(el).attr(\'href\', largeimage);\r\n
+                    img.attr(\'src\', smallimage);\r\n
+                    lens.hide();\r\n
+                    stage.hide();\r\n
+                    obj.load();\r\n
+                } else {\r\n
+                    alert(\'ERROR :: Missing parameter for largeimage or smallimage.\');\r\n
+                    throw \'ERROR :: Missing parameter for largeimage or smallimage.\';\r\n
+                }\r\n
+                return false;\r\n
+            }\r\n
+        });\r\n
+        //sometimes image is already loaded and onload will not fire\r\n
+        if (img[0].complete) {\r\n
+            //fetching data from sallimage if was previously loaded\r\n
+            smallimage.fetchdata();\r\n
+            if ($(".zoomPad", el).length == 0) obj.create();\r\n
+        }\r\n
+/*========================================================,\r\n
+|   Smallimage\r\n
+|---------------------------------------------------------:\r\n
+|   Base image into the anchor element\r\n
+`========================================================*/\r\n
+\r\n
+        function Smallimage(image) {\r\n
+            var $obj = this;\r\n
+            this.node = image[0];\r\n
+            this.findborder = function () {\r\n
+                var bordertop = 0;\r\n
+                bordertop = image.css(\'border-top-width\');\r\n
+                btop = \'\';\r\n
+                var borderleft = 0;\r\n
+                borderleft = image.css(\'border-left-width\');\r\n
+                bleft = \'\';\r\n
+                if (bordertop) {\r\n
+                    for (i = 0; i < 3; i++) {\r\n
+                        var x = [];\r\n
+                        x = bordertop.substr(i, 1);\r\n
+                        if (isNaN(x) == false) {\r\n
+                            btop = btop + \'\' + bordertop.substr(i, 1);\r\n
+                        } else {\r\n
+                            break;\r\n
+                        }\r\n
+                    }\r\n
+                }\r\n
+                if (borderleft) {\r\n
+                    for (i = 0; i < 3; i++) {\r\n
+                        if (!isNaN(borderleft.substr(i, 1))) {\r\n
+                            bleft = bleft + borderleft.substr(i, 1)\r\n
+                        } else {\r\n
+                            break;\r\n
+                        }\r\n
+                    }\r\n
+                }\r\n
+                $obj.btop = (btop.length > 0) ? eval(btop) : 0;\r\n
+                $obj.bleft = (bleft.length > 0) ? eval(bleft) : 0;\r\n
+            };\r\n
+            this.fetchdata = function () {\r\n
+                $obj.findborder();\r\n
+                $obj.w = image.width();\r\n
+                $obj.h = image.height();\r\n
+                $obj.ow = image.outerWidth();\r\n
+                $obj.oh = image.outerHeight();\r\n
+                $obj.pos = image.offset();\r\n
+                $obj.pos.l = image.offset().left + $obj.bleft;\r\n
+                $obj.pos.t = image.offset().top + $obj.btop;\r\n
+                $obj.pos.r = $obj.w + $obj.pos.l;\r\n
+                $obj.pos.b = $obj.h + $obj.pos.t;\r\n
+                $obj.rightlimit = image.offset().left + $obj.ow;\r\n
+                $obj.bottomlimit = image.offset().top + $obj.oh;\r\n
+                \r\n
+            };\r\n
+            this.node.onerror = function () {\r\n
+                alert(\'Problems while loading image.\');\r\n
+                throw \'Problems while loading image.\';\r\n
+            };\r\n
+            this.node.onload = function () {\r\n
+                $obj.fetchdata();\r\n
+                if ($(".zoomPad", el).length == 0) obj.create();\r\n
+            };\r\n
+            return $obj;\r\n
+        };\r\n
+/*========================================================,\r\n
+|  Loader\r\n
+|---------------------------------------------------------:\r\n
+|  Show that the large image is loading\r\n
+`========================================================*/\r\n
+\r\n
+        function Loader() {\r\n
+            var $obj = this;\r\n
+            this.append = function () {\r\n
+                this.node = $(\'<div/>\').addClass(\'zoomPreload\').css(\'visibility\', \'hidden\').html(settings.preloadText);\r\n
+                $(\'.zoomPad\', el).append(this.node);\r\n
+            };\r\n
+            this.show = function () {\r\n
+                this.node.top = (smallimage.oh - this.node.height()) / 2;\r\n
+                this.node.left = (smallimage.ow - this.node.width()) / 2;\r\n
+                //setting position\r\n
+                this.node.css({\r\n
+                    top: this.node.top,\r\n
+                    left: this.node.left,\r\n
+                    position: \'absolute\',\r\n
+                    visibility: \'visible\'\r\n
+                });\r\n
+            };\r\n
+            this.hide = function () {\r\n
+                this.node.css(\'visibility\', \'hidden\');\r\n
+            };\r\n
+            return this;\r\n
+        }\r\n
+/*========================================================,\r\n
+|   Lens\r\n
+|---------------------------------------------------------:\r\n
+|   Lens over the image\r\n
+`========================================================*/\r\n
+\r\n
+        function Lens() {\r\n
+            var $obj = this;\r\n
+            this.node = $(\'<div/>\').addClass(\'zoomPup\');\r\n
+            //this.nodeimgwrapper = $("<div/>").addClass(\'zoomPupImgWrapper\');\r\n
+            this.append = function () {\r\n
+                $(\'.zoomPad\', el).append($(this.node).hide());\r\n
+                if (settings.zoomType == \'reverse\') {\r\n
+                    this.image = new Image();\r\n
+                    this.image.src = smallimage.node.src; // fires off async\r\n
+                    $(this.node).empty().append(this.image);\r\n
+                }\r\n
+            };\r\n
+            this.setdimensions = function () {\r\n
+                this.node.w = (parseInt((settings.zoomWidth) / el.scale.x) > smallimage.w ) ? smallimage.w : (parseInt(settings.zoomWidth / el.scale.x)); \r\n
+                this.node.h = (parseInt((settings.zoomHeight) / el.scale.y) > smallimage.h ) ? smallimage.h : (parseInt(settings.zoomHeight / el.scale.y)); \r\n
+                this.node.top = (smallimage.oh - this.node.h - 2) / 2;\r\n
+                this.node.left = (smallimage.ow - this.node.w - 2) / 2;\r\n
+                //centering lens\r\n
+                this.node.css({\r\n
+                    top: 0,\r\n
+                    left: 0,\r\n
+                    width: this.node.w + \'px\',\r\n
+                    height: this.node.h + \'px\',\r\n
+                    position: \'absolute\',\r\n
+                    display: \'none\',\r\n
+                    borderWidth: 1 + \'px\'\r\n
+                });\r\n
+\r\n
+\r\n
+\r\n
+                if (settings.zoomType == \'reverse\') {\r\n
+                    this.image.src = smallimage.node.src;\r\n
+                    $(this.node).css({\r\n
+                        \'opacity\': 1\r\n
+                    });\r\n
+\r\n
+                    $(this.image).css({\r\n
+                        position: \'absolute\',\r\n
+                        display: \'block\',\r\n
+                        left: -(this.node.left + 1 - smallimage.bleft) + \'px\',\r\n
+                        top: -(this.node.top + 1 - smallimage.btop) + \'px\'\r\n
+                    });\r\n
+\r\n
+                }\r\n
+            };\r\n
+            this.setcenter = function () {\r\n
+                //calculating center position\r\n
+                this.node.top = (smallimage.oh - this.node.h - 2) / 2;\r\n
+                this.node.left = (smallimage.ow - this.node.w - 2) / 2;\r\n
+                //centering lens\r\n
+                this.node.css({\r\n
+                    top: this.node.top,\r\n
+                    left: this.node.left\r\n
+                });\r\n
+                if (settings.zoomType == \'reverse\') {\r\n
+                    $(this.image).css({\r\n
+                        position: \'absolute\',\r\n
+                        display: \'block\',\r\n
+                        left: -(this.node.left + 1 - smallimage.bleft) + \'px\',\r\n
+                        top: -(this.node.top + 1 - smallimage.btop) + \'px\'\r\n
+                    });\r\n
+\r\n
+                }\r\n
+                //centering large image\r\n
+                largeimage.setposition();\r\n
+            };\r\n
+            this.setposition = function (e) {\r\n
+                el.mousepos.x = e.pageX;\r\n
+                el.mousepos.y = e.pageY;\r\n
+                var lensleft = 0;\r\n
+                var lenstop = 0;\r\n
+\r\n
+                function overleft(lens) {\r\n
+                    return el.mousepos.x - (lens.w) / 2 < smallimage.pos.l; \r\n
+                }\r\n
+\r\n
+                function overright(lens) {\r\n
+                    return el.mousepos.x + (lens.w) / 2 > smallimage.pos.r; \r\n
+                   \r\n
+                }\r\n
+\r\n
+                function overtop(lens) {\r\n
+                    return el.mousepos.y - (lens.h) / 2 < smallimage.pos.t; \r\n
+                }\r\n
+\r\n
+                function overbottom(lens) {\r\n
+                    return el.mousepos.y + (lens.h) / 2 > smallimage.pos.b; \r\n
+                }\r\n
+                \r\n
+                lensleft = el.mousepos.x + smallimage.bleft - smallimage.pos.l - (this.node.w + 2) / 2;\r\n
+                lenstop = el.mousepos.y + smallimage.btop - smallimage.pos.t - (this.node.h + 2) / 2;\r\n
+                if (overleft(this.node)) {\r\n
+                    lensleft = smallimage.bleft - 1;\r\n
+                } else if (overright(this.node)) {\r\n
+                    lensleft = smallimage.w + smallimage.bleft - this.node.w - 1;\r\n
+                }\r\n
+                if (overtop(this.node)) {\r\n
+                    lenstop = smallimage.btop - 1;\r\n
+                } else if (overbottom(this.node)) {\r\n
+                    lenstop = smallimage.h + smallimage.btop - this.node.h - 1;\r\n
+                }\r\n
+                \r\n
+                this.node.left = lensleft;\r\n
+                this.node.top = lenstop;\r\n
+                this.node.css({\r\n
+                    \'left\': lensleft + \'px\',\r\n
+                    \'top\': lenstop + \'px\'\r\n
+                });\r\n
+                if (settings.zoomType == \'reverse\') {\r\n
+                    if ($.browser.msie && $.browser.version > 7) {\r\n
+                        $(this.node).empty().append(this.image);\r\n
+                    }\r\n
+\r\n
+                    $(this.image).css({\r\n
+                        position: \'absolute\',\r\n
+                        display: \'block\',\r\n
+                        left: -(this.node.left + 1 - smallimage.bleft) + \'px\',\r\n
+                        top: -(this.node.top + 1 - smallimage.btop) + \'px\'\r\n
+                    });\r\n
+                }\r\n
+               \r\n
+                largeimage.setposition();\r\n
+            };\r\n
+            this.hide = function () {\r\n
+                img.css({\r\n
+                    \'opacity\': 1\r\n
+                });\r\n
+                this.node.hide();\r\n
+            };\r\n
+            this.show = function () {  \r\n
+                \r\n
+                if (settings.zoomType != \'innerzoom\' && (settings.lens || settings.zoomType == \'drag\')) {\r\n
+                    this.node.show();\r\n
+                }       \r\n
+\r\n
+                if (settings.zoomType == \'reverse\') {\r\n
+                    img.css({\r\n
+                        \'opacity\': settings.imageOpacity\r\n
+                    });\r\n
+                }\r\n
+            };\r\n
+            this.getoffset = function () {\r\n
+                var o = {};\r\n
+                o.left = $obj.node.left;\r\n
+                o.top = $obj.node.top;\r\n
+                return o;\r\n
+            };\r\n
+            return this;\r\n
+        };\r\n
+/*========================================================,\r\n
+|   Stage\r\n
+|---------------------------------------------------------:\r\n
+|   Window area that contains the large image\r\n
+`========================================================*/\r\n
+\r\n
+        function Stage() {\r\n
+            var $obj = this;\r\n
+            this.node = $("<div class=\'zoomWindow\'><div class=\'zoomWrapper\'><div class=\'zoomWrapperTitle\'></div><div class=\'zoomWrapperImage\'></div></div></div>");\r\n
+            this.ieframe = $(\'<iframe class="zoomIframe" src="javascript:\\\'\\\';" marginwidth="0" marginheight="0" align="bottom" scrolling="no" frameborder="0" ></iframe>\');\r\n
+            this.setposition = function () {\r\n
+                this.node.leftpos = 0;\r\n
+                this.node.toppos = 0;\r\n
+                if (settings.zoomType != \'innerzoom\') {\r\n
+                    //positioning\r\n
+                    switch (settings.position) {\r\n
+                    case "left":\r\n
+                        this.node.leftpos = (smallimage.pos.l - smallimage.bleft - Math.abs(settings.xOffset) - settings.zoomWidth > 0) ? (0 - settings.zoomWidth - Math.abs(settings.xOffset)) : (smallimage.ow + Math.abs(settings.xOffset));\r\n
+                        this.node.toppos = Math.abs(settings.yOffset);\r\n
+                        break;\r\n
+                    case "top":\r\n
+                        this.node.leftpos = Math.abs(settings.xOffset);\r\n
+                        this.node.toppos = (smallimage.pos.t - smallimage.btop - Math.abs(settings.yOffset) - settings.zoomHeight > 0) ? (0 - settings.zoomHeight - Math.abs(settings.yOffset)) : (smallimage.oh + Math.abs(settings.yOffset));\r\n
+                        break;\r\n
+                    case "bottom":\r\n
+                        this.node.leftpos = Math.abs(settings.xOffset);\r\n
+                        this.node.toppos = (smallimage.pos.t - smallimage.btop + smallimage.oh + Math.abs(settings.yOffset) + settings.zoomHeight < screen.height) ? (smallimage.oh + Math.abs(settings.yOffset)) : (0 - settings.zoomHeight - Math.abs(settings.yOffset));\r\n
+                        break;\r\n
+                    default:\r\n
+                        this.node.leftpos = (smallimage.rightlimit + Math.abs(settings.xOffset) + settings.zoomWidth < screen.width) ? (smallimage.ow + Math.abs(settings.xOffset)) : (0 - settings.zoomWidth - Math.abs(settings.xOffset));\r\n
+                        this.node.toppos = Math.abs(settings.yOffset);\r\n
+                        break;\r\n
+                    }\r\n
+                }\r\n
+                this.node.css({\r\n
+                    \'left\': this.node.leftpos + \'px\',\r\n
+                    \'top\': this.node.toppos + \'px\'\r\n
+                });\r\n
+                return this;\r\n
+            };\r\n
+            this.append = function () {\r\n
+                $(\'.zoomPad\', el).append(this.node);\r\n
+                this.node.css({\r\n
+                    position: \'absolute\',\r\n
+                    display: \'none\',\r\n
+                    zIndex: 5001\r\n
+                });\r\n
+                if (settings.zoomType == \'innerzoom\') {\r\n
+                    this.node.css({\r\n
+                        cursor: \'default\'\r\n
+                    });\r\n
+                    var thickness = (smallimage.bleft == 0) ? 1 : smallimage.bleft;\r\n
+                    $(\'.zoomWrapper\', this.node).css({\r\n
+                        borderWidth: thickness + \'px\'\r\n
+                    });    \r\n
+                }\r\n
+                \r\n
+                  $(\'.zoomWrapper\', this.node).css({\r\n
+                      width: Math.round(settings.zoomWidth) + \'px\' ,\r\n
+                      borderWidth: thickness + \'px\'\r\n
+                  });\r\n
+                  $(\'.zoomWrapperImage\', this.node).css({\r\n
+                      width: \'100%\',\r\n
+                      height: Math.round(settings.zoomHeight) + \'px\'\r\n
+                  });\r\n
+                  //zoom title\r\n
+                 $(\'.zoomWrapperTitle\', this.node).css({\r\n
+                        width: \'100%\',\r\n
+                        position: \'absolute\'\r\n
+                  });  \r\n
+              \r\n
+                $(\'.zoomWrapperTitle\', this.node).hide();\r\n
+                if (settings.title && zoomtitle.length > 0) {\r\n
+                    $(\'.zoomWrapperTitle\', this.node).html(zoomtitle).show();\r\n
+                }\r\n
+                $obj.setposition();\r\n
+            };\r\n
+            this.hide = function () {\r\n
+                switch (settings.hideEffect) {\r\n
+                case \'fadeout\':\r\n
+                    this.node.fadeOut(settings.fadeoutSpeed, function () {});\r\n
+                    break;\r\n
+                default:\r\n
+                    this.node.hide();\r\n
+                    break;\r\n
+                }\r\n
+                this.ieframe.hide();\r\n
+            };\r\n
+            this.show = function () {\r\n
+                switch (settings.showEffect) {\r\n
+                case \'fadein\':\r\n
+                    this.node.fadeIn();\r\n
+                    this.node.fadeIn(settings.fadeinSpeed, function () {});\r\n
+                    break;\r\n
+                default:\r\n
+                    this.node.show();\r\n
+                    break;\r\n
+                }\r\n
+                if (isIE6 && settings.zoomType != \'innerzoom\') {\r\n
+                    this.ieframe.width = this.node.width();\r\n
+                    this.ieframe.height = this.node.height();\r\n
+                    this.ieframe.left = this.node.leftpos;\r\n
+                    this.ieframe.top = this.node.toppos;\r\n
+                    this.ieframe.css({\r\n
+                        display: \'block\',\r\n
+                        position: "absolute",\r\n
+                        left: this.ieframe.left,\r\n
+                        top: this.ieframe.top,\r\n
+                        zIndex: 99,\r\n
+                        width: this.ieframe.width + \'px\',\r\n
+                        height: this.ieframe.height + \'px\'\r\n
+                    });\r\n
+                    $(\'.zoomPad\', el).append(this.ieframe);\r\n
+                    this.ieframe.show();\r\n
+                };\r\n
+            };\r\n
+        };\r\n
+/*========================================================,\r\n
+|   LargeImage\r\n
+|---------------------------------------------------------:\r\n
+|   The large detailed image\r\n
+`========================================================*/\r\n
+\r\n
+        function Largeimage() {\r\n
+            var $obj = this;\r\n
+            this.node = new Image();\r\n
+            this.loadimage = function (url) {\r\n
+                //showing preload\r\n
+                loader.show();\r\n
+                this.url = url;\r\n
+                this.node.style.position = \'absolute\';\r\n
+                this.node.style.border = \'0px\';\r\n
+                this.node.style.display = \'none\';\r\n
+                this.node.style.left = \'-5000px\';\r\n
+                this.node.style.top = \'0px\';\r\n
+                document.body.appendChild(this.node);\r\n
+                this.node.src = url; // fires off async\r\n
+            };\r\n
+            this.fetchdata = function () {\r\n
+                var image = $(this.node);\r\n
+                var scale = {};\r\n
+                this.node.style.display = \'block\';\r\n
+                $obj.w = image.width();\r\n
+                $obj.h = image.height();\r\n
+                $obj.pos = image.offset();\r\n
+                $obj.pos.l = image.offset().left;\r\n
+                $obj.pos.t = image.offset().top;\r\n
+                $obj.pos.r = $obj.w + $obj.pos.l;\r\n
+                $obj.pos.b = $obj.h + $obj.pos.t;\r\n
+                scale.x = ($obj.w / smallimage.w);\r\n
+                scale.y = ($obj.h / smallimage.h);\r\n
+                el.scale = scale;\r\n
+                document.body.removeChild(this.node);\r\n
+                $(\'.zoomWrapperImage\', el).empty().append(this.node);\r\n
+                //setting lens dimensions;\r\n
+                lens.setdimensions();\r\n
+            };\r\n
+            this.node.onerror = function () {\r\n
+                alert(\'Problems while loading the big image.\');\r\n
+                throw \'Problems while loading the big image.\';\r\n
+            };\r\n
+            this.node.onload = function () {\r\n
+                //fetching data\r\n
+                $obj.fetchdata();\r\n
+                loader.hide();\r\n
+                el.largeimageloading = false;\r\n
+                el.largeimageloaded = true;\r\n
+                if (settings.zoomType == \'drag\' || settings.alwaysOn) {\r\n
+                    lens.show();\r\n
+                    stage.show();\r\n
+                    lens.setcenter();\r\n
+                }\r\n
+            };\r\n
+            this.setposition = function () {\r\n
+                var left = -el.scale.x * (lens.getoffset().left - smallimage.bleft + 1);\r\n
+                var top = -el.scale.y * (lens.getoffset().top - smallimage.btop + 1);\r\n
+                $(this.node).css({\r\n
+                    \'left\': left + \'px\',\r\n
+                    \'top\': top + \'px\'\r\n
+                });\r\n
+            };\r\n
+            return this;\r\n
+        };\r\n
+        $(el).data("jqzoom", obj);\r\n
+    };\r\n
+    //es. $.jqzoom.disable(\'#jqzoom1\');\r\n
+    $.jqzoom = {\r\n
+        defaults: {\r\n
+            zoomType: \'standard\',\r\n
+            //innerzoom/standard/reverse/drag\r\n
+            zoomWidth: 300,\r\n
+            //zoomWindow  default width\r\n
+            zoomHeight: 300,\r\n
+            //zoomWindow  default height\r\n
+            xOffset: 10,\r\n
+            //zoomWindow x offset, can be negative(more on the left) or positive(more on the right)\r\n
+            yOffset: 0,\r\n
+            //zoomWindow y offset, can be negative(more on the left) or positive(more on the right)\r\n
+            position: "right",\r\n
+            //zoomWindow default position\r\n
+            preloadImages: true,\r\n
+            //image preload\r\n
+            preloadText: \'Loading zoom\',\r\n
+            title: true,\r\n
+            lens: true,\r\n
+            imageOpacity: 0.4,\r\n
+            alwaysOn: false,\r\n
+            showEffect: \'show\',\r\n
+            //show/fadein\r\n
+            hideEffect: \'hide\',\r\n
+            //hide/fadeout\r\n
+            fadeinSpeed: \'slow\',\r\n
+            //fast/slow/number\r\n
+            fadeoutSpeed: \'2000\' //fast/slow/number\r\n
+        },\r\n
+        disable: function (el) {\r\n
+            var api = $(el).data(\'jqzoom\');\r\n
+            api.disable();\r\n
+            return false;\r\n
+        },\r\n
+        enable: function (el) {\r\n
+            var api = $(el).data(\'jqzoom\');\r\n
+            api.enable();\r\n
+            return false;\r\n
+        },\r\n
+        disableAll: function (el) {\r\n
+            jqzoompluging_disabled = true;\r\n
+        },\r\n
+        enableAll: function (el) {\r\n
+            jqzoompluging_disabled = false;\r\n
+        }\r\n
+    };\r\n
+})(jQuery);
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>size</string> </key>
+            <value> <int>31322</int> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>jquery.jqzoom-core.js</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom.css.xml b/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom.css.xml
new file mode 100644
index 0000000000..7a4780f660
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jqzoom/jqzoom.css.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Cacheable__manager_id</string> </key>
+            <value> <string>http_cache</string> </value>
+        </item>
+        <item>
+            <key> <string>_EtagSupport__etag</string> </key>
+            <value> <string>ts48590418.74</string> </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>jqzoom.css</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/css</string> </value>
+        </item>
+        <item>
+            <key> <string>data</string> </key>
+            <value> <string>.zoomPad{\r\n
+\tposition:relative;\r\n
+\tfloat:left;\r\n
+\tz-index:99;\r\n
+\tcursor:crosshair;\r\n
+}\r\n
+\r\n
+\r\n
+.zoomPreload{\r\n
+   -moz-opacity:0.8;\r\n
+   opacity: 0.8;\r\n
+   filter: alpha(opacity = 80);\r\n
+   color: #333;\r\n
+   font-size: 12px;\r\n
+   font-family: Tahoma;\r\n
+   text-decoration: none;\r\n
+   border: 1px solid #CCC;\r\n
+   background-color: white;\r\n
+   padding: 8px;\r\n
+   text-align:center;\r\n
+   background-image: url(../images/zoomloader.gif);\r\n
+   background-repeat: no-repeat;\r\n
+   background-position: 43px 30px;\r\n
+   z-index:110;\r\n
+   width:90px;\r\n
+   height:43px;\r\n
+   position:absolute;\r\n
+   top:0px;\r\n
+   left:0px;\r\n
+    * width:100px;\r\n
+    * height:49px;\r\n
+}\r\n
+\r\n
+\r\n
+.zoomPup{\r\n
+\toverflow:hidden;\r\n
+\tbackground-color: #FFF;\r\n
+\t-moz-opacity:0.6;\r\n
+\topacity: 0.6;\r\n
+\tfilter: alpha(opacity = 60);\r\n
+\tz-index:120;\r\n
+\tposition:absolute;\r\n
+\tborder:1px solid #CCC;\r\n
+  z-index:101;\r\n
+  cursor:crosshair;\r\n
+}\r\n
+\r\n
+.zoomOverlay{\r\n
+\tposition:absolute;\r\n
+\tleft:0px;\r\n
+\ttop:0px;\r\n
+\tbackground:#FFF;\r\n
+\t/*opacity:0.5;*/\r\n
+\tz-index:5000;\r\n
+\twidth:100%;\r\n
+\theight:100%;\r\n
+\tdisplay:none;\r\n
+  z-index:101;\r\n
+}\r\n
+\r\n
+.zoomWindow{\r\n
+\tposition:absolute;\r\n
+\tleft:110%;\r\n
+\ttop:40px;\r\n
+\tbackground:#FFF;\r\n
+\tz-index:6000;\r\n
+\theight:auto;\r\n
+  z-index:10000;\r\n
+  z-index:110;\r\n
+}\r\n
+.zoomWrapper{\r\n
+\tposition:relative;\r\n
+\tborder:1px solid #999;\r\n
+  z-index:110;\r\n
+}\r\n
+.zoomWrapperTitle{\r\n
+\tdisplay:block;\r\n
+\tbackground:#999;\r\n
+\tcolor:#FFF;\r\n
+\theight:18px;\r\n
+\tline-height:18px;\r\n
+\twidth:100%;\r\n
+  overflow:hidden;\r\n
+\ttext-align:center;\r\n
+\tfont-size:10px;\r\n
+  position:absolute;\r\n
+  top:0px;\r\n
+  left:0px;\r\n
+  z-index:120;\r\n
+  -moz-opacity:0.6;\r\n
+  opacity: 0.6;\r\n
+  filter: alpha(opacity = 60);\r\n
+}\r\n
+.zoomWrapperImage{\r\n
+\tdisplay:block;\r\n
+  position:relative;\r\n
+  overflow:hidden;\r\n
+  z-index:110;\r\n
+\r\n
+}\r\n
+.zoomWrapperImage img{\r\n
+  border:0px;\r\n
+  display:block;\r\n
+  position:absolute;\r\n
+  z-index:101;\r\n
+}\r\n
+\r\n
+.zoomIframe{\r\n
+  z-index: -1;\r\n
+  filter:alpha(opacity=0);\r\n
+  -moz-opacity: 0.80;\r\n
+  opacity: 0.80;\r\n
+  position:absolute;\r\n
+  display:block;\r\n
+}\r\n
+\r\n
+/*********************************************************\r\n
+/ When clicking on thumbs jqzoom will add the class\r\n
+/ "zoomThumbActive" on the anchor selected\r\n
+/*********************************************************/</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>size</string> </key>
+            <value> <int>2139</int> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>jquery.jqzoom.css</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/change_log b/bt5/erp5_jquery_plugin_jqzoom/bt/change_log
new file mode 100644
index 0000000000..94271487f9
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/change_log
@@ -0,0 +1,2 @@
+2013-01-21 rafael
+* The initial commit
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/copyright_list b/bt5/erp5_jquery_plugin_jqzoom/bt/copyright_list
new file mode 100644
index 0000000000..a405760ae2
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/copyright_list
@@ -0,0 +1 @@
+2013 (c) Nexedi SA
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/dependency_list b/bt5/erp5_jquery_plugin_jqzoom/bt/dependency_list
new file mode 100644
index 0000000000..a3d3a39331
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/dependency_list
@@ -0,0 +1 @@
+erp5_jquery
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/description b/bt5/erp5_jquery_plugin_jqzoom/bt/description
new file mode 100644
index 0000000000..e059fd9d2b
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/description
@@ -0,0 +1 @@
+This Business Template contains only static files of jqzoom plugin.
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/license b/bt5/erp5_jquery_plugin_jqzoom/bt/license
new file mode 100644
index 0000000000..3a3e12bcad
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/license
@@ -0,0 +1 @@
+GPL
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/maintainer_list b/bt5/erp5_jquery_plugin_jqzoom/bt/maintainer_list
new file mode 100644
index 0000000000..23a62fbb45
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/maintainer_list
@@ -0,0 +1 @@
+rafael
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/revision b/bt5/erp5_jquery_plugin_jqzoom/bt/revision
new file mode 100644
index 0000000000..56a6051ca2
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/revision
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/template_format_version b/bt5/erp5_jquery_plugin_jqzoom/bt/template_format_version
new file mode 100644
index 0000000000..56a6051ca2
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/template_format_version
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/template_path_list b/bt5/erp5_jquery_plugin_jqzoom/bt/template_path_list
new file mode 100644
index 0000000000..ab01ac12c5
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/template_path_list
@@ -0,0 +1,2 @@
+portal_skins/erp5_jquery/jquery/plugin/jqzoom
+portal_skins/erp5_jquery/jquery/plugin/jqzoom/**
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/title b/bt5/erp5_jquery_plugin_jqzoom/bt/title
new file mode 100644
index 0000000000..0120342abe
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/title
@@ -0,0 +1 @@
+erp5_jquery_plugin_jqzoom
\ No newline at end of file
diff --git a/bt5/erp5_jquery_plugin_jqzoom/bt/version b/bt5/erp5_jquery_plugin_jqzoom/bt/version
new file mode 100644
index 0000000000..48360de846
--- /dev/null
+++ b/bt5/erp5_jquery_plugin_jqzoom/bt/version
@@ -0,0 +1 @@
+5.4.7
\ No newline at end of file
-- 
2.30.9