- // ==UserScript==
- // @name SlideShow
- // @namespace
- // @description Automatically presses the "next" button on image gallaries.
- // @include *
- // @include http://code.jquery.com/jquery-2.1.4.min.js
- // @version 1.2
- // @grant none
- // ==/UserScript==
-
- /* OPTIONS */
-
- /* When the image is off the screen, when to move down.
- 0-1 = Never
- 3/4 = 3 Quarters of the way through
- 2/3 = 2 Thirds of the way through
- 2 = Half way through
- 3 = Third of the way through
- 4 = Quarter of the way through
-
- etc.
- */
- var whenToMoveDown = 2;
-
- /* In milliseconds (1 second * 1000), how long the animation is for the screen to move auto scroll to the image.
- For no animation, set it to 0
- */
- var moveDownAnimationTime = 1000;
-
- /* In pixels, how much space there is between the top of the screen and image. Default is 50. */
- var spaceAboveImage = 50;
-
- /* END OPTIONS */
-
- var windowHeight;
- var slide = false;
- var timer;
- var timer2;
- var timehalf;
- var height;
- var heightNum;
- var mainImage;
- $(window).load(function(){
- var cookieExsist = checkCookie();
- $( 'body' ).prepend('<div id="slidecontainer" style="margin: 0 auto; position: fixed; width: 100%; overflow: auto; top: 0; background-color: #fff; border-bottom: 5px solid #A00000; z-index: 100000;"><div id="slidecontrols" style="min-width: 300px; width: 30%; margin: 0 auto;"></div></div>');
- $( '#slidecontrols' ).html('<input id="slidetime" value="10"/><div id="slidelabel">(seconds)</div><button id="slide">Start</button>');
- $( '#slidetime' ).css({'width': '60%', 'float': 'left',
- 'padding': '0 3px',
- 'font-size': '13px',
- 'background-color': '#383838',
- 'color': '#fff',
- 'height':'28px',
- 'margin': '2px 0',
- 'text-align': 'center'
- });
- $( '#slidelabel' ).css({'float': 'left',
- 'padding': '0 3px',
- 'font-size': '13px',
- 'color': '#000',
- 'height': '28px',
- 'line-height': '30px',
- 'margin': '2px 0'
- });
- $( '#slide' ).css({'width': '14%', 'float': 'right',
- 'padding': '0 3px',
- 'font-size': '13px',
- 'background-color': '#D0D0D0',
- 'color': '#585858',
- 'height':'28px',
- 'margin': '2px 0',
- 'text-align': 'center',
- 'border-radius': '5px',
- 'border': '1px solid blue',
- 'font-weight': 'normal',
- 'cursor': 'pointer'
- });
- height = $( '#slidecontainer' ).css( "height" );
- heightNum = $( '#slidecontainer' ).height();
- windowHeight = $( window ).height();
- $( 'body' ).css({'margin-top': height});
- if(cookieExsist)
- {
- var slidetime = getCookie('slideactive');
- slide = true;
- $( '#slide' ).text('Stop');
- var sts = slidetime / 1000;
- $( '#slidetime' ).val(sts);
- $( '#slidetime' ).attr("disabled", true);
- timer = setInterval(function(){nextPage();},slidetime);
- timehalf = slidetime / whenToMoveDown;
- scroll();
- }
-
-
- $( '#slide' ).click(function(){
- if(!slide)
- {
- slide = true;
- $( '#slide' ).text('Stop');
- var slidetime = $('#slidetime').val();
- slidetime = slidetime * 1000;
- if(!$.isNumeric(slidetime) || slidetime == '')
- {
- slidetime = 10000;
- }
- timehalf = slidetime / 2;
- timer = setInterval(function(){nextPage();},slidetime);
- setCookie('slideactive',slidetime,1);
- $( '#slidetime' ).attr("disabled", true);
- scroll();
- }
- else
- {
- stopSlide();
- }
-
-
- });
- });
-
- function stopSlide()
- {
- slide = false;
- $( '#slide' ).text('Start');
- clearInterval(timer);
- $( '#slidetime' ).removeAttr("disabled");
- setCookie('slideactive','',0);
- clearTimeout(timer2);
- }
-
- function scroll()
- {
- var offset = 0;
- var imageHeight = 0;
- $('img').each(function(){
- if($( this ).width() >= 400 || $( this ).height() >= 400)
- {
- offset = $( this ).offset().top;
- imageHeight = $( this ).height();
- mainImage = $( this );
- return false;
- }
- });
- var offset2 = offset - (heightNum + spaceAboveImage);
- $('html, body').animate({ scrollTop: offset2 }, 500);
- var contentheight = offset + imageHeight;
- var downvalue = contentheight - windowHeight;
- if(downvalue+20 >= offset2)
- {
- downvalue += 20;
- timer2 = setTimeout(function(){$('html, body').animate({ scrollTop: downvalue }, moveDownAnimationTime);}, timehalf);
- }
- }
-
- function nextPage()
- {
- var URL = $(location).attr('href');
- var URL2 = $(location).attr('href');
- var found = false;
- $('a').each(function(){
- var t = $(this).text();
- if (t.toLowerCase().indexOf("next") >= 0)
- {
- $(this).click();
- found = true;
- }
- });
- if(URL != URL2 || found == true)
- {
- scroll();
- }
- else
- {
- $('body').trigger({
- type: 'keydown',
- which: 39
- });
- URL2 = $(location).attr('href');
- if(URL == URL2)
- {
- console.log(mainImage);
- mainImage.click();
- URL2 = $(location).attr('href');
- setTimeout(function(){
- if(URL == URL2)
- {
- alert("Couldn't find a next button! :(");
- stopSlide();
- }
- else
- {
- scroll();
- }
- },100);
- }
- else
- {
- scroll();
- }
- }
- }
-
- function setCookie(cname, cvalue, exdays) {
- var d = new Date();
- d.setTime(d.getTime() + (exdays*24*60*60*1000));
- var expires = "expires="+d.toUTCString();
- document.cookie = cname + "=" + cvalue + "; " + expires+"; path=/";
- }
-
- function getCookie(cname) {
- var name = cname + "=";
- var ca = document.cookie.split(';');
- for(var i=0; i<ca.length; i++) {
- var c = ca[i];
- while (c.charAt(0)==' ') c = c.substring(1);
- if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
- }
- return "";
- }
-
- function checkCookie() {
- var active=getCookie("slideactive");
- if (active!="") {
- return true;
- }else{
- return false;
- }
- }