Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Paul Graydon
erp5
Commits
b6ad0793
Commit
b6ad0793
authored
Dec 19, 2012
by
Kazuhiko Shiozaki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add non-minified version, fix license and add version and web site url in description.
parent
018fbe01
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1105 additions
and
3 deletions
+1105
-3
bt5/erp5_jquery_plugin_jcarousel/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jcarousel/jquery.jcarousel.js.xml
...p5_jquery/jquery/plugin/jcarousel/jquery.jcarousel.js.xml
+1101
-0
bt5/erp5_jquery_plugin_jcarousel/bt/description
bt5/erp5_jquery_plugin_jcarousel/bt/description
+2
-1
bt5/erp5_jquery_plugin_jcarousel/bt/license
bt5/erp5_jquery_plugin_jcarousel/bt/license
+1
-1
bt5/erp5_jquery_plugin_jcarousel/bt/revision
bt5/erp5_jquery_plugin_jcarousel/bt/revision
+1
-1
No files found.
bt5/erp5_jquery_plugin_jcarousel/PathTemplateItem/portal_skins/erp5_jquery/jquery/plugin/jcarousel/jquery.jcarousel.js.xml
0 → 100644
View file @
b6ad0793
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"File"
module=
"OFS.Image"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_EtagSupport__etag
</string>
</key>
<value>
<string>
ts55933350.5
</string>
</value>
</item>
<item>
<key>
<string>
__name__
</string>
</key>
<value>
<string>
jquery.jcarousel.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[
/*!\n
* jCarousel - Riding carousels with jQuery\n
* http://sorgalla.com/jcarousel/\n
*\n
* Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)\n
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n
*\n
* Built on top of the jQuery library\n
* http://jquery.com\n
*\n
* Inspired by the "Carousel Component" by Bill Scott\n
* http://billwscott.com/carousel/\n
*/\n
\n
/*global window, jQuery */\n
(function($) {\n
// Default configuration properties.\n
var defaults = {\n
vertical: false,\n
rtl: false,\n
start: 1,\n
offset: 1,\n
size: null,\n
scroll: 3,\n
visible: null,\n
animation: \'normal\',\n
easing: \'swing\',\n
auto: 0,\n
wrap: null,\n
initCallback: null,\n
setupCallback: null,\n
reloadCallback: null,\n
itemLoadCallback: null,\n
itemFirstInCallback: null,\n
itemFirstOutCallback: null,\n
itemLastInCallback: null,\n
itemLastOutCallback: null,\n
itemVisibleInCallback: null,\n
itemVisibleOutCallback: null,\n
animationStepCallback: null,\n
buttonNextHTML: \'<div>
</div>
\',\n
buttonPrevHTML: \'
<div></div>
\',\n
buttonNextEvent: \'click\',\n
buttonPrevEvent: \'click\',\n
buttonNextCallback: null,\n
buttonPrevCallback: null,\n
itemFallbackDimension: null\n
}, windowLoaded = false;\n
\n
$(window).bind(\'load.jcarousel\', function() { windowLoaded = true; });\n
\n
/**\n
* The jCarousel object.\n
*\n
* @constructor\n
* @class jcarousel\n
* @param e {HTMLElement} The element to create the carousel for.\n
* @param o {Object} A set of key/value pairs to set as configuration properties.\n
* @cat Plugins/jCarousel\n
*/\n
$.jcarousel = function(e, o) {\n
this.options = $.extend({}, defaults, o || {});\n
\n
this.locked = false;\n
this.autoStopped = false;\n
\n
this.container = null;\n
this.clip = null;\n
this.list = null;\n
this.buttonNext = null;\n
this.buttonPrev = null;\n
this.buttonNextState = null;\n
this.buttonPrevState = null;\n
\n
// Only set if not explicitly passed as option\n
if (!o || o.rtl === undefined) {\n
this.options.rtl = ($(e).attr(\'dir\') || $(\'html\').attr(\'dir\') || \'\').toLowerCase() == \'rtl\';\n
}\n
\n
this.wh = !this.options.vertical ? \'width\' : \'height\';\n
this.lt = !this.options.vertical ? (this.options.rtl ? \'right\' : \'left\') : \'top\';\n
\n
// Extract skin class\n
var skin = \'\', split = e.className.split(\' \');\n
\n
for (var i = 0; i
< split.length
;
i++)
{\n
if
(split[i].indexOf(\'jcarousel-skin\')
!=
-1)
{\n
$(e).removeClass(split[i]);\n
skin =
split[i];\n
break;\n
}\n
}\n
\n
if
(e.nodeName.toUpperCase()
==
\'UL\'
||
e.nodeName.toUpperCase()
==
\'OL\')
{\n
this.list =
$(e);\n
this.clip =
this.list.parents(\'.jcarousel-clip\');\n
this.container =
this.list.parents(\'.jcarousel-container\');\n
}
else
{\n
this.container =
$(e);\n
this.list =
this.container.find(\'ul,ol\').eq(0);\n
this.clip =
this.container.find(\'.jcarousel-clip\');\n
}\n
\n
if
(this.clip.size()
===
0)
{\n
this.clip =
this.list.wrap(\'<div
></div>
\').parent();\n
}\n
\n
if (this.container.size() === 0) {\n
this.container = this.clip.wrap(\'
<div></div>
\').parent();\n
}\n
\n
if (skin !== \'\'
&&
this.container.parent()[0].className.indexOf(\'jcarousel-skin\') == -1) {\n
this.container.wrap(\'
<div
class=
" \'+ skin + \'"
></div>
\');\n
}\n
\n
this.buttonPrev = $(\'.jcarousel-prev\', this.container);\n
\n
if (this.buttonPrev.size() === 0
&&
this.options.buttonPrevHTML !== null) {\n
this.buttonPrev = $(this.options.buttonPrevHTML).appendTo(this.container);\n
}\n
\n
this.buttonPrev.addClass(this.className(\'jcarousel-prev\'));\n
\n
this.buttonNext = $(\'.jcarousel-next\', this.container);\n
\n
if (this.buttonNext.size() === 0
&&
this.options.buttonNextHTML !== null) {\n
this.buttonNext = $(this.options.buttonNextHTML).appendTo(this.container);\n
}\n
\n
this.buttonNext.addClass(this.className(\'jcarousel-next\'));\n
\n
this.clip.addClass(this.className(\'jcarousel-clip\')).css({\n
position: \'relative\'\n
});\n
\n
this.list.addClass(this.className(\'jcarousel-list\')).css({\n
overflow: \'hidden\',\n
position: \'relative\',\n
top: 0,\n
margin: 0,\n
padding: 0\n
}).css((this.options.rtl ? \'right\' : \'left\'), 0);\n
\n
this.container.addClass(this.className(\'jcarousel-container\')).css({\n
position: \'relative\'\n
});\n
\n
if (!this.options.vertical
&&
this.options.rtl) {\n
this.container.addClass(\'jcarousel-direction-rtl\').attr(\'dir\', \'rtl\');\n
}\n
\n
var di = this.options.visible !== null ? Math.ceil(this.clipping() / this.options.visible) : null;\n
var li = this.list.children(\'li\');\n
\n
var self = this;\n
\n
if (li.size() > 0) {\n
var wh = 0, j = this.options.offset;\n
li.each(function() {\n
self.format(this, j++);\n
wh += self.dimension(this, di);\n
});\n
\n
this.list.css(this.wh, (wh + 100) + \'px\');\n
\n
// Only set if not explicitly passed as option\n
if (!o || o.size === undefined) {\n
this.options.size = li.size();\n
}\n
}\n
\n
// For whatever reason, .show() does not work in Safari...\n
this.container.css(\'display\', \'block\');\n
this.buttonNext.css(\'display\', \'block\');\n
this.buttonPrev.css(\'display\', \'block\');\n
\n
this.funcNext = function() { self.next(); };\n
this.funcPrev = function() { self.prev(); };\n
this.funcResize = function() { \n
if (self.resizeTimer) {\n
clearTimeout(self.resizeTimer);\n
}\n
\n
self.resizeTimer = setTimeout(function() {\n
self.reload();\n
}, 100);\n
};\n
\n
if (this.options.initCallback !== null) {\n
this.options.initCallback(this, \'init\');\n
}\n
\n
if (!windowLoaded
&&
$.browser.safari) {\n
this.buttons(false, false);\n
$(window).bind(\'load.jcarousel\', function() { self.setup(); });\n
} else {\n
this.setup();\n
}\n
};\n
\n
// Create shortcut for internal use\n
var $jc = $.jcarousel;\n
\n
$jc.fn = $jc.prototype = {\n
jcarousel: \'0.2.8\'\n
};\n
\n
$jc.fn.extend = $jc.extend = $.extend;\n
\n
$jc.fn.extend({\n
/**\n
* Setups the carousel.\n
*\n
* @method setup\n
* @return undefined\n
*/\n
setup: function() {\n
this.first = null;\n
this.last = null;\n
this.prevFirst = null;\n
this.prevLast = null;\n
this.animating = false;\n
this.timer = null;\n
this.resizeTimer = null;\n
this.tail = null;\n
this.inTail = false;\n
\n
if (this.locked) {\n
return;\n
}\n
\n
this.list.css(this.lt, this.pos(this.options.offset) + \'px\');\n
var p = this.pos(this.options.start, true);\n
this.prevFirst = this.prevLast = null;\n
this.animate(p, false);\n
\n
$(window).unbind(\'resize.jcarousel\', this.funcResize).bind(\'resize.jcarousel\', this.funcResize);\n
\n
if (this.options.setupCallback !== null) {\n
this.options.setupCallback(this);\n
}\n
},\n
\n
/**\n
* Clears the list and resets the carousel.\n
*\n
* @method reset\n
* @return undefined\n
*/\n
reset: function() {\n
this.list.empty();\n
\n
this.list.css(this.lt, \'0px\');\n
this.list.css(this.wh, \'10px\');\n
\n
if (this.options.initCallback !== null) {\n
this.options.initCallback(this, \'reset\');\n
}\n
\n
this.setup();\n
},\n
\n
/**\n
* Reloads the carousel and adjusts positions.\n
*\n
* @method reload\n
* @return undefined\n
*/\n
reload: function() {\n
if (this.tail !== null
&&
this.inTail) {\n
this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail);\n
}\n
\n
this.tail = null;\n
this.inTail = false;\n
\n
if (this.options.reloadCallback !== null) {\n
this.options.reloadCallback(this);\n
}\n
\n
if (this.options.visible !== null) {\n
var self = this;\n
var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0;\n
this.list.children(\'li\').each(function(i) {\n
wh += self.dimension(this, di);\n
if (i + 1
< self.first
)
{\n
lt =
wh;\n
}\n
});\n
\n
this.list.css(this.wh,
wh
+
\'px\');\n
this.list.css(this.lt,
-lt
+
\'px\');\n
}\n
\n
this.scroll(this.first,
false);\n
},\n
\n
/**\n
*
Locks
the
carousel.\n
*\n
*
@method
lock\n
*
@return
undefined\n
*/\n
lock:
function()
{\n
this.locked =
true;\n
this.buttons();\n
},\n
\n
/**\n
*
Unlocks
the
carousel.\n
*\n
*
@method
unlock\n
*
@return
undefined\n
*/\n
unlock:
function()
{\n
this.locked =
false;\n
this.buttons();\n
},\n
\n
/**\n
*
Sets
the
size
of
the
carousel.\n
*\n
*
@method
size\n
*
@return
undefined\n
*
@param
s
{Number}
The
size
of
the
carousel.\n
*/\n
size:
function(s)
{\n
if
(s
!==
undefined)
{\n
this.options.size =
s;\n
if
(!this.locked)
{\n
this.buttons();\n
}\n
}\n
\n
return
this.options.size;\n
},\n
\n
/**\n
*
Checks
whether
a
list
element
exists
for
the
given
index
(or
index
range).\n
*\n
*
@method
get\n
*
@return
bool\n
*
@param
i
{Number}
The
index
of
the
(first)
element.\n
*
@param
i2
{Number}
The
index
of
the
last
element.\n
*/\n
has:
function(i,
i2)
{\n
if
(
i2 =
==
undefined
||
!i2)
{\n
i2 =
i;\n
}\n
\n
if
(this.options.size
!==
null
&&
i2
>
this.options.size) {\n
i2 = this.options.size;\n
}\n
\n
for (var j = i; j
<
= i2; j++) {\n
var e = this.get(j);\n
if (!e.length || e.hasClass(\'jcarousel-item-placeholder\')) {\n
return false;\n
}\n
}\n
\n
return true;\n
},\n
\n
/**\n
* Returns a jQuery object with list element for the given index.\n
*\n
* @method get\n
* @return jQuery\n
* @param i {Number} The index of the element.\n
*/\n
get: function(i) {\n
return $(\'>.jcarousel-item-\' + i, this.list);\n
},\n
\n
/**\n
* Adds an element for the given index to the list.\n
* If the element already exists, it updates the inner html.\n
* Returns the created element as jQuery object.\n
*\n
* @method add\n
* @return jQuery\n
* @param i {Number} The index of the element.\n
* @param s {String} The innerHTML of the element.\n
*/\n
add: function(i, s) {\n
var e = this.get(i), old = 0, n = $(s);\n
\n
if (e.length === 0) {\n
var c, j = $jc.intval(i);\n
e = this.create(i);\n
while (true) {\n
c = this.get(--j);\n
if (j
<
= 0 || c.length) {\n
if (j
<
= 0) {\n
this.list.prepend(e);\n
} else {\n
c.after(e);\n
}\n
break;\n
}\n
}\n
} else {\n
old = this.dimension(e);\n
}\n
\n
if (n.get(0).nodeName.toUpperCase() == \'LI\') {\n
e.replaceWith(n);\n
e = n;\n
} else {\n
e.empty().append(s);\n
}\n
\n
this.format(e.removeClass(this.className(\'jcarousel-item-placeholder\')), i);\n
\n
var di = this.options.visible !== null ? Math.ceil(this.clipping() / this.options.visible) : null;\n
var wh = this.dimension(e, di) - old;\n
\n
if (i > 0
&&
i
< this.first
)
{\n
this.list.css(this.lt,
$jc.intval(this.list.css(this.lt))
-
wh
+
\'px\');\n
}\n
\n
this.list.css(this.wh,
$jc.intval(this.list.css(this.wh))
+
wh
+
\'px\');\n
\n
return
e;\n
},\n
\n
/**\n
*
Removes
an
element
for
the
given
index
from
the
list.\n
*\n
*
@method
remove\n
*
@return
undefined\n
*
@param
i
{Number}
The
index
of
the
element.\n
*/\n
remove:
function(i)
{\n
var
e =
this.get(i);\n
\n
//
Check
if
item
exists
and
is
not
currently
visible\n
if
(!e.length
||
(i
>
= this.first
&&
i
<
= this.last)) {\n
return;\n
}\n
\n
var d = this.dimension(e);\n
\n
if (i
< this.first
)
{\n
this.list.css(this.lt,
$jc.intval(this.list.css(this.lt))
+
d
+
\'px\');\n
}\n
\n
e.remove();\n
\n
this.list.css(this.wh,
$jc.intval(this.list.css(this.wh))
-
d
+
\'px\');\n
},\n
\n
/**\n
*
Moves
the
carousel
forwards.\n
*\n
*
@method
next\n
*
@return
undefined\n
*/\n
next:
function()
{\n
if
(this.tail
!==
null
&&
!this.inTail)
{\n
this.scrollTail(false);\n
}
else
{\n
this.scroll(((
this.options.wrap =
=
\'both\'
||
this.options.wrap =
=
\'last\')
&&
this.options.size
!==
null
&&
this.last =
=
this.options.size)
?
1
:
this.first
+
this.options.scroll);\n
}\n
},\n
\n
/**\n
*
Moves
the
carousel
backwards.\n
*\n
*
@method
prev\n
*
@return
undefined\n
*/\n
prev:
function()
{\n
if
(this.tail
!==
null
&&
this.inTail)
{\n
this.scrollTail(true);\n
}
else
{\n
this.scroll(((
this.options.wrap =
=
\'both\'
||
this.options.wrap =
=
\'first\')
&&
this.options.size
!==
null
&&
this.first =
=
1)
?
this.options.size
:
this.first
-
this.options.scroll);\n
}\n
},\n
\n
/**\n
*
Scrolls
the
tail
of
the
carousel.\n
*\n
*
@method
scrollTail\n
*
@return
undefined\n
*
@param
b
{Boolean}
Whether
scroll
the
tail
back
or
forward.\n
*/\n
scrollTail:
function(b)
{\n
if
(this.locked
||
this.animating
||
!this.tail)
{\n
return;\n
}\n
\n
this.pauseAuto();\n
\n
var
pos =
$jc.intval(this.list.css(this.lt));\n
\n
pos =
!b
?
pos
-
this.tail
:
pos
+
this.tail;\n
this.inTail =
!b;\n
\n
//
Save
for
callbacks\n
this.prevFirst =
this.first;\n
this.prevLast =
this.last;\n
\n
this.animate(pos);\n
},\n
\n
/**\n
*
Scrolls
the
carousel
to
a
certain
position.\n
*\n
*
@method
scroll\n
*
@return
undefined\n
*
@param
i
{Number}
The
index
of
the
element
to
scoll
to.\n
*
@param
a
{Boolean}
Flag
indicating
whether
to
perform
animation.\n
*/\n
scroll:
function(i,
a)
{\n
if
(this.locked
||
this.animating)
{\n
return;\n
}\n
\n
this.pauseAuto();\n
this.animate(this.pos(i),
a);\n
},\n
\n
/**\n
*
Prepares
the
carousel
and
return
the
position
for
a
certian
index.\n
*\n
*
@method
pos\n
*
@return
{Number}\n
*
@param
i
{Number}
The
index
of
the
element
to
scoll
to.\n
*
@param
fv
{Boolean}
Whether
to
force
last
item
to
be
visible.\n
*/\n
pos:
function(i,
fv)
{\n
var
pos =
$jc.intval(this.list.css(this.lt));\n
\n
if
(this.locked
||
this.animating)
{\n
return
pos;\n
}\n
\n
if
(this.options.wrap
!=
\'circular\')
{\n
i =
i
<
1
?
1
:
(this.options.size
&&
i
>
this.options.size ? this.options.size : i);\n
}\n
\n
var back = this.first > i;\n
\n
// Create placeholders, new list width/height\n
// and new list position\n
var f = this.options.wrap != \'circular\'
&&
this.first
<
= 1 ? 1 : this.first;\n
var c = back ? this.get(f) : this.get(this.last);\n
var j = back ? f : f - 1;\n
var e = null, l = 0, p = false, d = 0, g;\n
\n
while (back ? --j >= i : ++j
< i
)
{\n
e =
this.get(j);\n
p =
!e.length;\n
if
(
e.length =
==
0)
{\n
e =
this.create(j).addClass(this.className(\'jcarousel-item-placeholder\'));\n
c[back
?
\'before\'
:
\'after\'
](e);\n
\n
if
(this.first
!==
null
&&
this.options.wrap =
=
\'circular\'
&&
this.options.size
!==
null
&&
(j
<=
0
||
j
>
this.options.size)) {\n
g = this.get(this.index(j));\n
if (g.length) {\n
e = this.add(j, g.clone(true));\n
}\n
}\n
}\n
\n
c = e;\n
d = this.dimension(e);\n
\n
if (p) {\n
l += d;\n
}\n
\n
if (this.first !== null
&&
(this.options.wrap == \'circular\' || (j >= 1
&&
(this.options.size === null || j
<
= this.options.size)))) {\n
pos = back ? pos + d : pos - d;\n
}\n
}\n
\n
// Calculate visible items\n
var clipping = this.clipping(), cache = [], visible = 0, v = 0;\n
c = this.get(i - 1);\n
j = i;\n
\n
while (++visible) {\n
e = this.get(j);\n
p = !e.length;\n
if (e.length === 0) {\n
e = this.create(j).addClass(this.className(\'jcarousel-item-placeholder\'));\n
// This should only happen on a next scroll\n
if (c.length === 0) {\n
this.list.prepend(e);\n
} else {\n
c[back ? \'before\' : \'after\' ](e);\n
}\n
\n
if (this.first !== null
&&
this.options.wrap == \'circular\'
&&
this.options.size !== null
&&
(j
<
= 0 || j > this.options.size)) {\n
g = this.get(this.index(j));\n
if (g.length) {\n
e = this.add(j, g.clone(true));\n
}\n
}\n
}\n
\n
c = e;\n
d = this.dimension(e);\n
if (d === 0) {\n
throw new Error(\'jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...\');\n
}\n
\n
if (this.options.wrap != \'circular\'
&&
this.options.size !== null
&&
j > this.options.size) {\n
cache.push(e);\n
} else if (p) {\n
l += d;\n
}\n
\n
v += d;\n
\n
if (v >= clipping) {\n
break;\n
}\n
\n
j++;\n
}\n
\n
// Remove out-of-range placeholders\n
for (var x = 0; x
< cache.length
;
x++)
{\n
cache[x].remove();\n
}\n
\n
//
Resize
list\n
if
(l
>
0) {\n
this.list.css(this.wh, this.dimension(this.list) + l + \'px\');\n
\n
if (back) {\n
pos -= l;\n
this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + \'px\');\n
}\n
}\n
\n
// Calculate first and last item\n
var last = i + visible - 1;\n
if (this.options.wrap != \'circular\'
&&
this.options.size
&&
last > this.options.size) {\n
last = this.options.size;\n
}\n
\n
if (j > last) {\n
visible = 0;\n
j = last;\n
v = 0;\n
while (++visible) {\n
e = this.get(j--);\n
if (!e.length) {\n
break;\n
}\n
v += this.dimension(e);\n
if (v >= clipping) {\n
break;\n
}\n
}\n
}\n
\n
var first = last - visible + 1;\n
if (this.options.wrap != \'circular\'
&&
first
< 1
)
{\n
first =
1;\n
}\n
\n
if
(this.inTail
&&
back)
{\n
pos
+=
this.tail;\n
this.inTail =
false;\n
}\n
\n
this.tail =
null;\n
if
(this.options.wrap
!=
\'circular\'
&&
last =
=
this.options.size
&&
(last
-
visible
+
1)
>
= 1) {\n
var m = $jc.intval(this.get(last).css(!this.options.vertical ? \'marginRight\' : \'marginBottom\'));\n
if ((v - m) > clipping) {\n
this.tail = v - clipping - m;\n
}\n
}\n
\n
if (fv
&&
i === this.options.size
&&
this.tail) {\n
pos -= this.tail;\n
this.inTail = true;\n
}\n
\n
// Adjust position\n
while (i-- > first) {\n
pos += this.dimension(this.get(i));\n
}\n
\n
// Save visible item range\n
this.prevFirst = this.first;\n
this.prevLast = this.last;\n
this.first = first;\n
this.last = last;\n
\n
return pos;\n
},\n
\n
/**\n
* Animates the carousel to a certain position.\n
*\n
* @method animate\n
* @return undefined\n
* @param p {Number} Position to scroll to.\n
* @param a {Boolean} Flag indicating whether to perform animation.\n
*/\n
animate: function(p, a) {\n
if (this.locked || this.animating) {\n
return;\n
}\n
\n
this.animating = true;\n
\n
var self = this;\n
var scrolled = function() {\n
self.animating = false;\n
\n
if (p === 0) {\n
self.list.css(self.lt, 0);\n
}\n
\n
if (!self.autoStopped
&&
(self.options.wrap == \'circular\' || self.options.wrap == \'both\' || self.options.wrap == \'last\' || self.options.size === null || self.last
< self.options.size
||
(
self.last =
=
self.options.size
&&
self.tail
!==
null
&&
!self.inTail)))
{\n
self.startAuto();\n
}\n
\n
self.buttons();\n
self.notify(\'onAfterAnimation\');\n
\n
//
This
function
removes
items
which
are
appended
automatically
for
circulation.\n
//
This
prevents
the
list
from
growing
infinitely.\n
if
(
self.options.wrap =
=
\'circular\'
&&
self.options.size
!==
null)
{\n
for
(var
i =
self.prevFirst;
i
<=
self.prevLast;
i++)
{\n
if
(i
!==
null
&&
!(i
>
= self.first
&&
i
<
= self.last)
&&
(i
< 1
||
i
>
self.options.size)) {\n
self.remove(i);\n
}\n
}\n
}\n
};\n
\n
this.notify(\'onBeforeAnimation\');\n
\n
// Animate\n
if (!this.options.animation || a === false) {\n
this.list.css(this.lt, p + \'px\');\n
scrolled();\n
} else {\n
var o = !this.options.vertical ? (this.options.rtl ? {\'right\': p} : {\'left\': p}) : {\'top\': p};\n
// Define animation settings.\n
var settings = {\n
duration: this.options.animation,\n
easing: this.options.easing,\n
complete: scrolled\n
};\n
// If we have a step callback, specify it as well.\n
if ($.isFunction(this.options.animationStepCallback)) {\n
settings.step = this.options.animationStepCallback;\n
}\n
// Start the animation.\n
this.list.animate(o, settings);\n
}\n
},\n
\n
/**\n
* Starts autoscrolling.\n
*\n
* @method auto\n
* @return undefined\n
* @param s {Number} Seconds to periodically autoscroll the content.\n
*/\n
startAuto: function(s) {\n
if (s !== undefined) {\n
this.options.auto = s;\n
}\n
\n
if (this.options.auto === 0) {\n
return this.stopAuto();\n
}\n
\n
if (this.timer !== null) {\n
return;\n
}\n
\n
this.autoStopped = false;\n
\n
var self = this;\n
this.timer = window.setTimeout(function() { self.next(); }, this.options.auto * 1000);\n
},\n
\n
/**\n
* Stops autoscrolling.\n
*\n
* @method stopAuto\n
* @return undefined\n
*/\n
stopAuto: function() {\n
this.pauseAuto();\n
this.autoStopped = true;\n
},\n
\n
/**\n
* Pauses autoscrolling.\n
*\n
* @method pauseAuto\n
* @return undefined\n
*/\n
pauseAuto: function() {\n
if (this.timer === null) {\n
return;\n
}\n
\n
window.clearTimeout(this.timer);\n
this.timer = null;\n
},\n
\n
/**\n
* Sets the states of the prev/next buttons.\n
*\n
* @method buttons\n
* @return undefined\n
*/\n
buttons: function(n, p) {\n
if (n == null) {\n
n = !this.locked
&&
this.options.size !== 0
&&
((this.options.wrap
&&
this.options.wrap != \'first\') || this.options.size === null || this.last
< this.options.size
);\n
if
(!this.locked
&&
(!this.options.wrap
||
this.options.wrap =
=
\'first\')
&&
this.options.size
!==
null
&&
this.last
>
= this.options.size) {\n
n = this.tail !== null
&&
!this.inTail;\n
}\n
}\n
\n
if (p == null) {\n
p = !this.locked
&&
this.options.size !== 0
&&
((this.options.wrap
&&
this.options.wrap != \'last\') || this.first > 1);\n
if (!this.locked
&&
(!this.options.wrap || this.options.wrap == \'last\')
&&
this.options.size !== null
&&
this.first == 1) {\n
p = this.tail !== null
&&
this.inTail;\n
}\n
}\n
\n
var self = this;\n
\n
if (this.buttonNext.size() > 0) {\n
this.buttonNext.unbind(this.options.buttonNextEvent + \'.jcarousel\', this.funcNext);\n
\n
if (n) {\n
this.buttonNext.bind(this.options.buttonNextEvent + \'.jcarousel\', this.funcNext);\n
}\n
\n
this.buttonNext[n ? \'removeClass\' : \'addClass\'](this.className(\'jcarousel-next-disabled\')).attr(\'disabled\', n ? false : true);\n
\n
if (this.options.buttonNextCallback !== null
&&
this.buttonNext.data(\'jcarouselstate\') != n) {\n
this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); }).data(\'jcarouselstate\', n);\n
}\n
} else {\n
if (this.options.buttonNextCallback !== null
&&
this.buttonNextState != n) {\n
this.options.buttonNextCallback(self, null, n);\n
}\n
}\n
\n
if (this.buttonPrev.size() > 0) {\n
this.buttonPrev.unbind(this.options.buttonPrevEvent + \'.jcarousel\', this.funcPrev);\n
\n
if (p) {\n
this.buttonPrev.bind(this.options.buttonPrevEvent + \'.jcarousel\', this.funcPrev);\n
}\n
\n
this.buttonPrev[p ? \'removeClass\' : \'addClass\'](this.className(\'jcarousel-prev-disabled\')).attr(\'disabled\', p ? false : true);\n
\n
if (this.options.buttonPrevCallback !== null
&&
this.buttonPrev.data(\'jcarouselstate\') != p) {\n
this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); }).data(\'jcarouselstate\', p);\n
}\n
} else {\n
if (this.options.buttonPrevCallback !== null
&&
this.buttonPrevState != p) {\n
this.options.buttonPrevCallback(self, null, p);\n
}\n
}\n
\n
this.buttonNextState = n;\n
this.buttonPrevState = p;\n
},\n
\n
/**\n
* Notify callback of a specified event.\n
*\n
* @method notify\n
* @return undefined\n
* @param evt {String} The event name\n
*/\n
notify: function(evt) {\n
var state = this.prevFirst === null ? \'init\' : (this.prevFirst
< this.first
?
\'next\'
:
\'prev\');\n
\n
//
Load
items\n
this.callback(\'itemLoadCallback\',
evt,
state);\n
\n
if
(this.prevFirst
!==
this.first)
{\n
this.callback(\'itemFirstInCallback\',
evt,
state,
this.first);\n
this.callback(\'itemFirstOutCallback\',
evt,
state,
this.prevFirst);\n
}\n
\n
if
(this.prevLast
!==
this.last)
{\n
this.callback(\'itemLastInCallback\',
evt,
state,
this.last);\n
this.callback(\'itemLastOutCallback\',
evt,
state,
this.prevLast);\n
}\n
\n
this.callback(\'itemVisibleInCallback\',
evt,
state,
this.first,
this.last,
this.prevFirst,
this.prevLast);\n
this.callback(\'itemVisibleOutCallback\',
evt,
state,
this.prevFirst,
this.prevLast,
this.first,
this.last);\n
},\n
\n
callback:
function(cb,
evt,
state,
i1,
i2,
i3,
i4)
{\n
if
(this.options[cb]
==
null
||
(typeof
this.options[cb]
!=
\'object\'
&&
evt
!=
\'onAfterAnimation\'))
{\n
return;\n
}\n
\n
var
callback =
typeof
this.options[cb]
==
\'object\'
?
this.options[cb][evt]
:
this.options[cb];\n
\n
if
(!$.isFunction(callback))
{\n
return;\n
}\n
\n
var
self =
this;\n
\n
if
(
i1 =
==
undefined)
{\n
callback(self,
state,
evt);\n
}
else
if
(
i2 =
==
undefined)
{\n
this.get(i1).each(function()
{
callback(self,
this,
i1,
state,
evt);
});\n
}
else
{\n
var
call =
function(i)
{\n
self.get(i).each(function()
{
callback(self,
this,
i,
state,
evt);
});\n
};\n
for
(var
i =
i1;
i
<=
i2;
i++)
{\n
if
(i
!==
null
&&
!(i
>
= i3
&&
i
<
= i4)) {\n
call(i);\n
}\n
}\n
}\n
},\n
\n
create: function(i) {\n
return this.format(\'
<li></li>
\', i);\n
},\n
\n
format: function(e, i) {\n
e = $(e);\n
var split = e.get(0).className.split(\' \');\n
for (var j = 0; j
< split.length
;
j++)
{\n
if
(split[j].indexOf(\'jcarousel-\')
!=
-1)
{\n
e.removeClass(split[j]);\n
}\n
}\n
e.addClass(this.className(\'jcarousel-item\')).addClass(this.className(\'jcarousel-item-\'
+
i)).css({\n
\'float\':
(this.options.rtl
?
\'right\'
:
\'left\'),\n
\'list-style\':
\'none\'\n
}).attr(\'jcarouselindex\',
i);\n
return
e;\n
},\n
\n
className:
function(c)
{\n
return
c
+
\'
\'
+
c
+
(!this.options.vertical
?
\'-horizontal\'
:
\'-vertical\');\n
},\n
\n
dimension:
function(e,
d)
{\n
var
el =
$(e);\n
\n
if
(
d =
=
null)
{\n
return
!this.options.vertical
?\n
(el.outerWidth(true)
||
$jc.intval(this.options.itemFallbackDimension))
:\n
(el.outerHeight(true)
||
$jc.intval(this.options.itemFallbackDimension));\n
}
else
{\n
var
w =
!this.options.vertical
?\n
d
-
$jc.intval(el.css(\'marginLeft\'))
-
$jc.intval(el.css(\'marginRight\'))
:\n
d
-
$jc.intval(el.css(\'marginTop\'))
-
$jc.intval(el.css(\'marginBottom\'));\n
\n
$(el).css(this.wh,
w
+
\'px\');\n
\n
return
this.dimension(el);\n
}\n
},\n
\n
clipping:
function()
{\n
return
!this.options.vertical
?\n
this.clip[0].offsetWidth
-
$jc.intval(this.clip.css(\'borderLeftWidth\'))
-
$jc.intval(this.clip.css(\'borderRightWidth\'))
:\n
this.clip[0].offsetHeight
-
$jc.intval(this.clip.css(\'borderTopWidth\'))
-
$jc.intval(this.clip.css(\'borderBottomWidth\'));\n
},\n
\n
index:
function(i,
s)
{\n
if
(
s =
=
null)
{\n
s =
this.options.size;\n
}\n
\n
return
Math.round((((i-1)
/
s)
-
Math.floor((i-1)
/
s))
*
s)
+
1;\n
}\n
});\n
\n
$jc.extend({\n
/**\n
*
Gets/Sets
the
global
default
configuration
properties.\n
*\n
*
@method
defaults\n
*
@return
{Object}\n
*
@param
d
{Object}
A
set
of
key/value
pairs
to
set
as
configuration
properties.\n
*/\n
defaults:
function(d)
{\n
return
$.extend(defaults,
d
||
{});\n
},\n
\n
intval:
function(v)
{\n
v =
parseInt(v,
10);\n
return
isNaN(v)
?
0
:
v;\n
},\n
\n
windowLoaded:
function()
{\n
windowLoaded =
true;\n
}\n
});\n
\n
/**\n
*
Creates
a
carousel
for
all
matched
elements.\n
*\n
*
@example
$("#mycarousel").jcarousel();\n
*
@before
<ul
id=
"mycarousel"
class=
"jcarousel-skin-name"
><li>
First item
</li><li>
Second item
</li></ul>
\n
* @result\n
*\n
*
<div
class=
"jcarousel-skin-name"
>
\n
*
<div
class=
"jcarousel-container"
>
\n
*
<div
class=
"jcarousel-clip"
>
\n
*
<ul
class=
"jcarousel-list"
>
\n
*
<li
class=
"jcarousel-item-1"
>
First item
</li>
\n
*
<li
class=
"jcarousel-item-2"
>
Second item
</li>
\n
*
</ul>
\n
*
</div>
\n
*
<div
disabled=
"disabled"
class=
"jcarousel-prev jcarousel-prev-disabled"
></div>
\n
*
<div
class=
"jcarousel-next"
></div>
\n
*
</div>
\n
*
</div>
\n
*\n
* @method jcarousel\n
* @return jQuery\n
* @param o {Hash|String} A set of key/value pairs to set as configuration properties or a method name to call on a formerly created instance.\n
*/\n
$.fn.jcarousel = function(o) {\n
if (typeof o == \'string\') {\n
var instance = $(this).data(\'jcarousel\'), args = Array.prototype.slice.call(arguments, 1);\n
return instance[o].apply(instance, args);\n
} else {\n
return this.each(function() {\n
var instance = $(this).data(\'jcarousel\');\n
if (instance) {\n
if (o) {\n
$.extend(instance.options, o);\n
}\n
instance.reload();\n
} else {\n
$(this).data(\'jcarousel\', new $jc(this, o));\n
}\n
});\n
}\n
};\n
\n
})(jQuery);\n
]]>
</string>
</value>
</item>
<item>
<key>
<string>
precondition
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
size
</string>
</key>
<value>
<int>
35203
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
jquery.jcarousel.js
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_jquery_plugin_jcarousel/bt/description
View file @
b6ad0793
This Business Template contains only static files of jCarousel jQuery library.
\ No newline at end of file
This Business Template contains only static files of jCarousel jQuery library 0.2.8.
http://sorgalla.com/jcarousel/
\ No newline at end of file
bt5/erp5_jquery_plugin_jcarousel/bt/license
View file @
b6ad0793
GPL
\ No newline at end of file
MIT/GPL
\ No newline at end of file
bt5/erp5_jquery_plugin_jcarousel/bt/revision
View file @
b6ad0793
1
\ No newline at end of file
2
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment