Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F884430
SlideShow.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
10 KB
Subscribers
None
SlideShow.js
View Options
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if
(
!
dojo
.
_hasResource
[
"dojox.image.SlideShow"
]){
dojo
.
_hasResource
[
"dojox.image.SlideShow"
]
=
true
;
dojo
.
provide
(
"dojox.image.SlideShow"
);
dojo
.
require
(
"dojo.string"
);
dojo
.
require
(
"dojo.fx"
);
dojo
.
require
(
"dijit._Widget"
);
dojo
.
require
(
"dijit._Templated"
);
dojo
.
declare
(
"dojox.image.SlideShow"
,[
dijit
.
_Widget
,
dijit
.
_Templated
],{
imageHeight
:
375
,
imageWidth
:
500
,
title
:
""
,
titleTemplate
:
"${title} <span class=\"slideShowCounterText\">(${current} of ${total})</span>"
,
noLink
:
false
,
loop
:
true
,
hasNav
:
true
,
images
:
[],
pageSize
:
20
,
autoLoad
:
true
,
autoStart
:
false
,
fixedHeight
:
false
,
imageStore
:
null
,
linkAttr
:
"link"
,
imageLargeAttr
:
"imageUrl"
,
titleAttr
:
"title"
,
slideshowInterval
:
3
,
templateString
:
dojo
.
cache
(
"dojox.image"
,
"resources/SlideShow.html"
,
"<div dojoAttachPoint=\"outerNode\" class=\"slideShowWrapper\">\n\t<div style=\"position:relative;\" dojoAttachPoint=\"innerWrapper\">\n\t\t<div class=\"slideShowNav\" dojoAttachEvent=\"onclick: _handleClick\">\n\t\t\t<div class=\"dijitInline slideShowTitle\" dojoAttachPoint=\"titleNode\">${title}</div>\n\t\t</div>\n\t\t<div dojoAttachPoint=\"navNode\" class=\"slideShowCtrl\" dojoAttachEvent=\"onclick: _handleClick\">\n\t\t\t<span dojoAttachPoint=\"navPrev\" class=\"slideShowCtrlPrev\"></span>\n\t\t\t<span dojoAttachPoint=\"navPlay\" class=\"slideShowCtrlPlay\"></span>\n\t\t\t<span dojoAttachPoint=\"navNext\" class=\"slideShowCtrlNext\"></span>\n\t\t</div>\n\t\t<div dojoAttachPoint=\"largeNode\" class=\"slideShowImageWrapper\"></div>\t\t\n\t\t<div dojoAttachPoint=\"hiddenNode\" class=\"slideShowHidden\"></div>\n\t</div>\n</div>\n"
),
_imageCounter
:
0
,
_tmpImage
:
null
,
_request
:
null
,
postCreate
:
function
(){
this
.
inherited
(
arguments
);
var
_1
=
document
.
createElement
(
"img"
);
_1
.
setAttribute
(
"width"
,
this
.
imageWidth
);
_1
.
setAttribute
(
"height"
,
this
.
imageHeight
);
if
(
this
.
hasNav
){
dojo
.
connect
(
this
.
outerNode
,
"onmouseover"
,
this
,
function
(
_2
){
try
{
this
.
_showNav
();
}
catch
(
e
){
}
});
dojo
.
connect
(
this
.
outerNode
,
"onmouseout"
,
this
,
function
(
_3
){
try
{
this
.
_hideNav
(
_3
);
}
catch
(
e
){
}
});
}
this
.
outerNode
.
style
.
width
=
this
.
imageWidth
+
"px"
;
_1
.
setAttribute
(
"src"
,
this
.
_blankGif
);
var
_4
=
this
;
this
.
largeNode
.
appendChild
(
_1
);
this
.
_tmpImage
=
this
.
_currentImage
=
_1
;
this
.
_fitSize
(
true
);
this
.
_loadImage
(
0
,
dojo
.
hitch
(
this
,
"showImage"
,
0
));
this
.
_calcNavDimensions
();
},
setDataStore
:
function
(
_5
,
_6
,
_7
){
this
.
reset
();
var
_8
=
this
;
this
.
_request
=
{
query
:
{},
start
:
_6
.
start
||
0
,
count
:
_6
.
count
||
this
.
pageSize
,
onBegin
:
function
(
_9
,
_a
){
_8
.
maxPhotos
=
_9
;
}};
if
(
_6
.
query
){
dojo
.
mixin
(
this
.
_request
.
query
,
_6
.
query
);
}
if
(
_7
){
dojo
.
forEach
([
"imageLargeAttr"
,
"linkAttr"
,
"titleAttr"
],
function
(
_b
){
if
(
_7
[
_b
]){
this
[
_b
]
=
_7
[
_b
];
}
},
this
);
}
var
_c
=
function
(
_d
){
_8
.
maxPhotos
=
_d
.
length
;
_8
.
_request
.
onComplete
=
null
;
if
(
_8
.
autoStart
){
_8
.
imageIndex
=-
1
;
_8
.
toggleSlideShow
();
}
else
{
_8
.
showImage
(
0
);
}
};
this
.
imageStore
=
_5
;
this
.
_request
.
onComplete
=
_c
;
this
.
_request
.
start
=
0
;
this
.
imageStore
.
fetch
(
this
.
_request
);
},
reset
:
function
(){
dojo
.
query
(
"> *"
,
this
.
largeNode
).
orphan
();
this
.
largeNode
.
appendChild
(
this
.
_tmpImage
);
dojo
.
query
(
"> *"
,
this
.
hiddenNode
).
orphan
();
dojo
.
forEach
(
this
.
images
,
function
(
_e
){
if
(
_e
&&
_e
.
parentNode
){
_e
.
parentNode
.
removeChild
(
_e
);
}
});
this
.
images
=
[];
this
.
isInitialized
=
false
;
this
.
_imageCounter
=
0
;
},
isImageLoaded
:
function
(
_f
){
return
this
.
images
&&
this
.
images
.
length
>
_f
&&
this
.
images
[
_f
];
},
moveImageLoadingPointer
:
function
(
_10
){
this
.
_imageCounter
=
_10
;
},
destroy
:
function
(){
if
(
this
.
_slideId
){
this
.
_stop
();
}
this
.
inherited
(
arguments
);
},
showNextImage
:
function
(
_11
,
_12
){
if
(
_11
&&
this
.
_timerCancelled
){
return
false
;
}
if
(
this
.
imageIndex
+
1
>=
this
.
maxPhotos
){
if
(
_11
&&
(
this
.
loop
||
_12
)){
this
.
imageIndex
=-
1
;
}
else
{
if
(
this
.
_slideId
){
this
.
_stop
();
}
return
false
;
}
}
this
.
showImage
(
this
.
imageIndex
+
1
,
dojo
.
hitch
(
this
,
function
(){
if
(
_11
){
this
.
_startTimer
();
}
}));
return
true
;
},
toggleSlideShow
:
function
(){
if
(
this
.
_slideId
){
this
.
_stop
();
}
else
{
dojo
.
toggleClass
(
this
.
domNode
,
"slideShowPaused"
);
this
.
_timerCancelled
=
false
;
var
idx
=
this
.
imageIndex
;
if
(
idx
<
0
||
(
this
.
images
[
idx
]
&&
this
.
images
[
idx
].
_img
.
complete
)){
var
_13
=
this
.
showNextImage
(
true
,
true
);
if
(
!
_13
){
this
.
_stop
();
}
}
else
{
var
_14
=
dojo
.
subscribe
(
this
.
getShowTopicName
(),
dojo
.
hitch
(
this
,
function
(
_15
){
setTimeout
(
dojo
.
hitch
(
this
,
function
(){
if
(
_15
.
index
==
idx
){
var
_16
=
this
.
showNextImage
(
true
,
true
);
if
(
!
_16
){
this
.
_stop
();
}
dojo
.
unsubscribe
(
_14
);
}
}),
this
.
slideshowInterval
*
1000
);
}));
dojo
.
publish
(
this
.
getShowTopicName
(),[{
index
:
idx
,
title
:
""
,
url
:
""
}]);
}
}
},
getShowTopicName
:
function
(){
return
(
this
.
widgetId
||
this
.
id
)
+
"/imageShow"
;
},
getLoadTopicName
:
function
(){
return
(
this
.
widgetId
?
this
.
widgetId
:
this
.
id
)
+
"/imageLoad"
;
},
showImage
:
function
(
_17
,
_18
){
if
(
!
_18
&&
this
.
_slideId
){
this
.
toggleSlideShow
();
}
var
_19
=
this
;
var
_1a
=
this
.
largeNode
.
getElementsByTagName
(
"div"
);
this
.
imageIndex
=
_17
;
var
_1b
=
function
(){
if
(
_19
.
images
[
_17
]){
while
(
_19
.
largeNode
.
firstChild
){
_19
.
largeNode
.
removeChild
(
_19
.
largeNode
.
firstChild
);
}
dojo
.
style
(
_19
.
images
[
_17
],
"opacity"
,
0
);
_19
.
largeNode
.
appendChild
(
_19
.
images
[
_17
]);
_19
.
_currentImage
=
_19
.
images
[
_17
].
_img
;
_19
.
_fitSize
();
var
_1c
=
function
(
a
,
b
,
c
){
var
img
=
_19
.
images
[
_17
].
firstChild
;
if
(
img
.
tagName
.
toLowerCase
()
!=
"img"
){
img
=
img
.
firstChild
;
}
var
_1d
=
img
.
getAttribute
(
"title"
)
||
""
;
if
(
_19
.
_navShowing
){
_19
.
_showNav
(
true
);
}
dojo
.
publish
(
_19
.
getShowTopicName
(),[{
index
:
_17
,
title
:
_1d
,
url
:
img
.
getAttribute
(
"src"
)}]);
if
(
_18
){
_18
(
a
,
b
,
c
);
}
_19
.
_setTitle
(
_1d
);
};
dojo
.
fadeIn
({
node
:
_19
.
images
[
_17
],
duration
:
300
,
onEnd
:
_1c
}).
play
();
}
else
{
_19
.
_loadImage
(
_17
,
function
(){
_19
.
showImage
(
_17
,
_18
);
});
}
};
if
(
_1a
&&
_1a
.
length
>
0
){
dojo
.
fadeOut
({
node
:
_1a
[
0
],
duration
:
300
,
onEnd
:
function
(){
_19
.
hiddenNode
.
appendChild
(
_1a
[
0
]);
_1b
();
}}).
play
();
}
else
{
_1b
();
}
},
_fitSize
:
function
(
_1e
){
if
(
!
this
.
fixedHeight
||
_1e
){
var
_1f
=
(
this
.
_currentImage
.
height
+
(
this
.
hasNav
?
20
:
0
));
dojo
.
style
(
this
.
innerWrapper
,
"height"
,
_1f
+
"px"
);
return
;
}
dojo
.
style
(
this
.
largeNode
,
"paddingTop"
,
this
.
_getTopPadding
()
+
"px"
);
},
_getTopPadding
:
function
(){
if
(
!
this
.
fixedHeight
){
return
0
;
}
return
(
this
.
imageHeight
-
this
.
_currentImage
.
height
)
/
2
;
},
_loadNextImage
:
function
(){
if
(
!
this
.
autoLoad
){
return
;
}
while
(
this
.
images
.
length
>=
this
.
_imageCounter
&&
this
.
images
[
this
.
_imageCounter
]){
this
.
_imageCounter
++
;
}
this
.
_loadImage
(
this
.
_imageCounter
);
},
_loadImage
:
function
(
_20
,
_21
){
if
(
this
.
images
[
_20
]
||!
this
.
_request
){
return
;
}
var
_22
=
_20
-
(
_20
%
(
this
.
_request
.
count
||
this
.
pageSize
));
this
.
_request
.
start
=
_22
;
this
.
_request
.
onComplete
=
function
(
_23
){
var
_24
=
_20
-
_22
;
if
(
_23
&&
_23
.
length
>
_24
){
_25
(
_23
[
_24
]);
}
else
{
}
};
var
_26
=
this
;
var
_27
=
this
.
imageStore
;
var
_25
=
function
(
_28
){
var
url
=
_26
.
imageStore
.
getValue
(
_28
,
_26
.
imageLargeAttr
);
var
img
=
new
Image
();
var
div
=
dojo
.
create
(
"div"
,{
id
:
_26
.
id
+
"_imageDiv"
+
_20
});
div
.
_img
=
img
;
var
_29
=
_26
.
imageStore
.
getValue
(
_28
,
_26
.
linkAttr
);
if
(
!
_29
||
_26
.
noLink
){
div
.
appendChild
(
img
);
}
else
{
var
a
=
dojo
.
create
(
"a"
,{
"href"
:
_29
,
"target"
:
"_blank"
},
div
);
a
.
appendChild
(
img
);
}
dojo
.
connect
(
img
,
"onload"
,
function
(){
if
(
_27
!=
_26
.
imageStore
){
return
;
}
_26
.
_fitImage
(
img
);
dojo
.
attr
(
div
,{
"width"
:
_26
.
imageWidth
,
"height"
:
_26
.
imageHeight
});
dojo
.
publish
(
_26
.
getLoadTopicName
(),[
_20
]);
setTimeout
(
function
(){
_26
.
_loadNextImage
();
},
1
);
if
(
_21
){
_21
();
}
});
_26
.
hiddenNode
.
appendChild
(
div
);
var
_2a
=
dojo
.
create
(
"div"
,{
className
:
"slideShowTitle"
},
div
);
_26
.
images
[
_20
]
=
div
;
dojo
.
attr
(
img
,
"src"
,
url
);
var
_2b
=
_26
.
imageStore
.
getValue
(
_28
,
_26
.
titleAttr
);
if
(
_2b
){
dojo
.
attr
(
img
,
"title"
,
_2b
);
}
};
this
.
imageStore
.
fetch
(
this
.
_request
);
},
_stop
:
function
(){
if
(
this
.
_slideId
){
clearTimeout
(
this
.
_slideId
);
}
this
.
_slideId
=
null
;
this
.
_timerCancelled
=
true
;
dojo
.
removeClass
(
this
.
domNode
,
"slideShowPaused"
);
},
_prev
:
function
(){
if
(
this
.
imageIndex
<
1
){
return
;
}
this
.
showImage
(
this
.
imageIndex
-
1
);
},
_next
:
function
(){
this
.
showNextImage
();
},
_startTimer
:
function
(){
var
id
=
this
.
id
;
this
.
_slideId
=
setTimeout
(
function
(){
dijit
.
byId
(
id
).
showNextImage
(
true
);
},
this
.
slideshowInterval
*
1000
);
},
_calcNavDimensions
:
function
(){
dojo
.
style
(
this
.
navNode
,
"position"
,
"absolute"
);
dojo
.
style
(
this
.
navNode
,
"top"
,
"-10000px"
);
dojo
.
_setOpacity
(
this
.
navNode
,
99
);
this
.
navPlay
.
_size
=
dojo
.
marginBox
(
this
.
navPlay
);
this
.
navPrev
.
_size
=
dojo
.
marginBox
(
this
.
navPrev
);
this
.
navNext
.
_size
=
dojo
.
marginBox
(
this
.
navNext
);
dojo
.
_setOpacity
(
this
.
navNode
,
0
);
dojo
.
style
(
this
.
navNode
,{
"position"
:
""
,
top
:
""
});
},
_setTitle
:
function
(
_2c
){
this
.
titleNode
.
innerHTML
=
dojo
.
string
.
substitute
(
this
.
titleTemplate
,{
title
:
_2c
,
current
:
1
+
this
.
imageIndex
,
total
:
this
.
maxPhotos
||
""
});
},
_fitImage
:
function
(
img
){
var
_2d
=
img
.
width
;
var
_2e
=
img
.
height
;
if
(
_2d
>
this
.
imageWidth
){
_2e
=
Math
.
floor
(
_2e
*
(
this
.
imageWidth
/
_2d
));
img
.
height
=
_2e
;
img
.
width
=
_2d
=
this
.
imageWidth
;
}
if
(
_2e
>
this
.
imageHeight
){
_2d
=
Math
.
floor
(
_2d
*
(
this
.
imageHeight
/
_2e
));
img
.
height
=
this
.
imageHeight
;
img
.
width
=
_2d
;
}
},
_handleClick
:
function
(
e
){
switch
(
e
.
target
){
case
this
.
navNext
:
this
.
_next
();
break
;
case
this
.
navPrev
:
this
.
_prev
();
break
;
case
this
.
navPlay
:
this
.
toggleSlideShow
();
break
;
}
},
_showNav
:
function
(
_2f
){
if
(
this
.
_navShowing
&&!
_2f
){
return
;
}
dojo
.
style
(
this
.
navNode
,
"marginTop"
,
"0px"
);
var
_30
=
dojo
.
style
(
this
.
navNode
,
"width"
)
/
2
-
this
.
navPlay
.
_size
.
w
/
2
-
this
.
navPrev
.
_size
.
w
;
dojo
.
style
(
this
.
navPlay
,
"marginLeft"
,
_30
+
"px"
);
var
_31
=
dojo
.
marginBox
(
this
.
outerNode
);
var
_32
=
this
.
_currentImage
.
height
-
this
.
navPlay
.
_size
.
h
-
10
+
this
.
_getTopPadding
();
if
(
_32
>
this
.
_currentImage
.
height
){
_32
+=
10
;
}
dojo
[
this
.
imageIndex
<
1
?
"addClass"
:
"removeClass"
](
this
.
navPrev
,
"slideShowCtrlHide"
);
dojo
[
this
.
imageIndex
+
1
>=
this
.
maxPhotos
?
"addClass"
:
"removeClass"
](
this
.
navNext
,
"slideShowCtrlHide"
);
var
_33
=
this
;
if
(
this
.
_navAnim
){
this
.
_navAnim
.
stop
();
}
if
(
this
.
_navShowing
){
return
;
}
this
.
_navAnim
=
dojo
.
fadeIn
({
node
:
this
.
navNode
,
duration
:
300
,
onEnd
:
function
(){
_33
.
_navAnim
=
null
;
}});
this
.
_navAnim
.
play
();
this
.
_navShowing
=
true
;
},
_hideNav
:
function
(
e
){
if
(
!
e
||!
this
.
_overElement
(
this
.
outerNode
,
e
)){
var
_34
=
this
;
if
(
this
.
_navAnim
){
this
.
_navAnim
.
stop
();
}
this
.
_navAnim
=
dojo
.
fadeOut
({
node
:
this
.
navNode
,
duration
:
300
,
onEnd
:
function
(){
_34
.
_navAnim
=
null
;
}});
this
.
_navAnim
.
play
();
this
.
_navShowing
=
false
;
}
},
_overElement
:
function
(
_35
,
e
){
if
(
typeof
(
dojo
)
==
"undefined"
){
return
false
;
}
_35
=
dojo
.
byId
(
_35
);
var
m
=
{
x
:
e
.
pageX
,
y
:
e
.
pageY
};
var
bb
=
dojo
.
_getBorderBox
(
_35
);
var
_36
=
dojo
.
coords
(
_35
,
true
);
var
_37
=
_36
.
x
;
return
(
m
.
x
>=
_37
&&
m
.
x
<=
(
_37
+
bb
.
w
)
&&
m
.
y
>=
_36
.
y
&&
m
.
y
<=
(
top
+
bb
.
h
));
}});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Apr 6, 10:29 (1 w, 6 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24185
Default Alt Text
SlideShow.js (10 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment