User:Dschwen/Gadget-Slideshow.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
fix for loops. https://developer.mozilla.org/en/DOM/NodeList |
m simpler. |
||
Line 51: | Line 51: | ||
var divs = this.gallery.getElementsByTagName('div'); |
var divs = this.gallery.getElementsByTagName('div'); |
||
for( var |
for( var key=0; key< divs.length; key++ ) |
||
{ |
{ |
||
var key = divs[i]; |
|||
if( divs[key].className == 'thumb' ) |
if( divs[key].className == 'thumb' ) |
||
{ |
{ |
||
Line 77: | Line 76: | ||
var button; |
var button; |
||
for( var |
for( var key=0; key < galleries.length; key++ ) |
||
{ |
{ |
||
var key = galleries[i]; |
|||
if( galleries[key].className == 'gallery' ) |
if( galleries[key].className == 'gallery' ) |
||
{ |
{ |
Revision as of 15:12, 17 September 2010
//<pre>
var slideshow =
{
showwin : null,
showimg : null,
list : null,
current : 0,
baseURL : wgServer + wgArticlePath.replace( "$1" , "File:"),
nextImage : function()
{
with(slideshow)
{
if( showwin != null && showwin.document != null )
{
showimg.src = 'http://toolserver.org/tsthumb/tsthumb?w=800&h=800&domain=commons.wikimedia.org&f='+encodeURIComponent(slideshow.list[slideshow.current]);
current++;
if( current >= list.length ) current = 0;
window.setTimeout("slideshow.nextImage()",3000);
}
}
},
showButton : function() { this.startButton.style.visibility = 'visible'; },
hideButton : function() { this.startButton.style.visibility = 'hidden'; },
// cross-browser event attachment (John Resig)
// http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
addEvent : function ( obj, type, fn )
{
if (obj.addEventListener)
obj.addEventListener( type, fn, false );
else if (obj.attachEvent)
{
obj["e"+type+fn] = fn;
obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
obj.attachEvent( "on"+type, obj[type+fn] );
}
},
start : function( e )
{
slideshow.list = new Array();
slideshow.current = 0;
var links;
if( typeof(this.gallery) != 'undefined' )
{
slideshow.showwin = window.open('', 'showwin', 'left=0,top=0,width=' + screen.width + ',height=' + screen.height + ',toolbar=0,resizable=0,fullscreen=1');
var divs = this.gallery.getElementsByTagName('div');
for( var key=0; key< divs.length; key++ )
{
if( divs[key].className == 'thumb' )
{
links = divs[key].getElementsByTagName('a');
if( links.length > 0 && links[0].href.substr( 0, slideshow.baseURL.length ) == slideshow.baseURL )
slideshow.list.push( links[0].href.substr( slideshow.baseURL.length ) );
}
}
slideshow.showwin.document.open('text/html');
slideshow.showwin.document.write('<html><body><table border="0" width="100%" height="100%"><tr><td valign="center" align="center"><img id="showimg"></td></tr></table></body></html>');
slideshow.showwin.document.close();
slideshow.showimg = slideshow.showwin.document.getElementById('showimg');
slideshow.nextImage();
}
},
install : function()
{
var galleries = document.getElementsByTagName('table');
var cells;
var button;
for( var key=0; key < galleries.length; key++ )
{
if( galleries[key].className == 'gallery' )
{
cells = galleries[key].getElementsByTagName('div');
if( cells.length > 0 )
{
button = document.createElement('div');
button.style.border = '1px solid gray';
button.style.position = 'absolute';
button.style.padding = '0.5em';
button.style.backgroundColor = '#ddffdd';
button.style.top = '0.5em';
button.style.left = '0.5em';
button.style.cursor = 'pointer';
button.style.visibility = 'hidden';
button.gallery = galleries[key];
button.appendChild( document.createTextNode( 'Slideshow' ) );
slideshow.addEvent( button, 'click', slideshow.start );
galleries[key].startButton = button;
slideshow.addEvent( galleries[key], 'mouseover', slideshow.showButton );
slideshow.addEvent( galleries[key], 'mouseout', slideshow.hideButton );
cells[0].style.position = 'relative';
cells[0].insertBefore( button, cells[0].childNodes[0] );
}
}
}
}
}
addOnloadHook(slideshow.install);
//</pre>