jc_Page_Down

Click to Next Scroll Page && Easy to View.

// ==UserScript==
// @name        jc_Page_Down
// @namespace   http://localhost/jc/
// @.require     https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js
// @.require     http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
// @.require     http://192.168.10.15/files/jquery-1.8.3.min.js
// @.require     http://192.168.10.15/files/jquery-1.11.0.min.js
// @include     http://*/forum.php?mod=viewthread*
// @include     http://*/forum/thread-*
// @include     http://*/*/viewthread.php*
// @include     http://*/*/forum*
// @include     http://weibo.com/*
// @include     http://www.flickr.com/*
// @include     http://www.google.co*/search?*
// @include     https://www.google.co*/search?*
// @include     http://www.upskirtcollection.com/*
// @include     http://www.akiba-online.com/*
// @include     http://*
// @include     https://*
// @exclude     https://*.pchome.com.tw/*
// @exclude     https://*.yahoo.com*
// @exclude     https://*.gohappy.com.tw/*
// @exclude     http://jsfiddle.net/*
// @exclude     http://localhost/*
// @exclude     http://localhost:*
// @exclude     http://*.tumblr.com/*
// @exclude     http://*.com/*mod=rss*
// @exclude     https://www.youtube.com/*
// @exclude     http://msdn.microsoft.com/*
// @exclude     http*://www.blogger.com/blogger.g?blogID*
// @exclude     http://www.google.com/reader/view/*
// @exclude     http://www.google.com.tw/reader/view/*
// @exclude     http://jsbin.com/*
// @exclude     http://*.gov.tw/*
// @exclude     https://*.gov.tw/*
// @exclude     http://*/feed/*
// @exclude     http://*shopping*
// @exclude     http://baike.baidu.com/picture/*
// @exclude     http://www.youtube.com/playlist?*
// @exclude     http://mall.cheerspoint.com.tw/*
// @exclude     http://writecodeonline.com/*
// @exclude     http://case.518.com.tw/*
// @exclude     http://www.104case.com.tw/*
// @exclude     http://yun.baidu.com/*
// @exclude     http://vimeo.com/*
// @exclude     http://*.html5rocks.com/*
// @exclude     http://www.dartlang.*
// @exclude     http://192.168.*
// @exclude     http://127.0.0.1*
// @exclude     https://*.taobao.com/*
// @exclude     http://*.taobao.com/*
// @exclude     http://*.360.cn/*
// @exclude     https://*.360.cn/*
// @exclude     https://*.google.co*/*edit
// @exclude     https://drive.google.co*/*
// @exclude     https://docs.google.com/*
// @exclude     http://open.163.com/*
// @exclude     https://mail.google.com/*
// @exclude     http://jshint.com/
// @exclude     https://jshint.com/
// @exclude     https://codecombat.com/*
// @exclude     http://*.org.tw/*
// @exclude     https://*.org.tw/*
// @exclude     https://www.google.com/*
// @exclude     https://*.google.com/*
// @exclude     https://www.google.com.tw/*
// @exclude     http://*.baidu.com/*
// @exclude     https://*.baidu.com/*
// @exclude     https://www.megabank.com.tw/*
// @exclude     http://earth.nullschool.net/*
// @exclude     https://*.google.co*
// @exclude     https://192.168.*
// @exclude     http://192.168.*
// @description Click to Next Scroll Page && Easy to View.
// @grant       GM_addStyle
// @grant       GM_log
// @version     0.5.6
// @modified     2015.02.24.00h
// ==/UserScript==

// https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js


jQuery.noConflict();
(function($) {
    $(function() {
        
        
        
        //GM_addStyle("#jcBtnPageDown {z-index:99998; background: -moz-linear-gradient(#FFFFFF 0%, #CCCCCC 100%) repeat scroll 0 0 #E5E5E5; border: 1px solid #AAAAAA; border-radius: 4px 4px 4px 4px; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); color: #555555; display:block; width:auto; padding:0px; color:black; }");
        //GM_addStyle("#jcBtnPageDown {z-index:99998; border: 1px solid #AAAAAA; border-radius: 4px 4px 4px 4px; color: #555555; display:block; width:auto; padding:0px; }");
        GM_addStyle("#jcBtnPageDown { font-size:120%; max-width:80px; z-index:99998; }");
        GM_addStyle("#jcBtnPageDown button {border: 1px solid #AAAAAA; border-radius: 4px 4px 4px 4px; color: #555555; display:inline-block; width:auto; padding:0px; font-size:13px; }");
        GM_addStyle("#jcBtnPageDown button.hideClass {min-width:15px;}");
        
        var gScrolled = false;	// 是否捲動
        //var gBtnTopDiffNum = 0;		// 按鈕與視窗 Top 差距多少.
        var jc_click_last_time = 0;	// last click time
        
        $(document).ready(function() {		// 動態載入,也會觸發 document ready 事件
            
            //console.log('document ready event!');
            
            jcAppendEvents();
            
        });
        
        function hasClickEvent( jqObj ) {
            var elem = jqObj.get(0);
            var rule1 = (!('undefined' == typeof $._data( elem, "events" )));
            var rule2 = jqObj.attr('onclick');
            rule2 = (!((typeof rule2 == 'undefined') || (rule2 == null) || (rule2 == false)));
            
            return (rule1 || rule2);
        }
        
        
        function jcAppendEvents() {
            //	事件附加區
            //
            
            // Page Scroll Down
            $('html,body').on('click' , function(e) {
                
                var runnext = true;
                var eTagName = e.target.tagName;
                
                if (0 == $('#jcBtnPageDown').length) {
					$('#jcBtnPageDown').hide();
				}
                
                if ('' != window.getSelection()) {
                    //return;
                    //e.preventDefault();
                    runnext = false;
                }
                
                if (self.location != top.location) {
                    //return;
                    //e.preventDefault();
                    runnext = false;
                }
                
                
                if ( ('DIV' == eTagName) && ($(e.target).attr('sap-media')) ) {
                    
                    runnext = false;
                }
                console.log('click element == ' + eTagName );
                if (runnext) {
                    if( ('A' == eTagName) || ('LINK' == eTagName) || ( "BLOCKQUOTE" == eTagName) || 
                       //("P" == eTagName) || 
                       ("TEXTAREA" == eTagName ) || ( "INPUT" == eTagName ) || 
                       ( "SELECT" == eTagName ) || ( "OPTION" == eTagName ) || 
                       //( "UL" == eTagName ) || ( "LI" == eTagName ) || 
                       ( "MAP" == eTagName ) || ( "AREA" == eTagName ) || 
                       ( "CANVAS" == eTagName ) || ( "SVG" == eTagName ) || ( "G" == eTagName ) || ( "LINE" == eTagName ) || ( "RECT" == eTagName ) || ( "TEXT" == eTagName ) || 
                       ('BUTTON' == eTagName) || ( "IMG" == eTagName ) || ("EMBED" == eTagName ) || ("OBJECT" == eTagName ) || ( "VIDEO" == eTagName ) ) {
                        
                        runnext = false;
                        
                    }
                }
                
                if (runnext) {
                    if (('HTML' != eTagName) && ($( e.target ).parents('a').length > 0)) {
                        
                        runnext = false;
                        
                    }
                }
                
                
                
                if (runnext) {
                    //if ( ($(e.target).width() < 45) || ($(e.target).height() < 45) ) {
                    if ( ($(e.target).width() < 60) || ($(e.target).height() < 30) ) {
                        //if ( ($(e.target).width() < 100) || ($(e.target).height() < 100) ) {
                        
                        console.log('false, because: H = ' + $(e.target).height() + ' W = ' + $(e.target).width() + ' < (60,30)' );
                        runnext = false;
                        
                    }
                }
                
                if (!runnext) {
                    if( ('TD' == eTagName) || ('TH' == eTagName) ) {
                        runnext = true;
                    }
                }
                
                
                if (runnext) {
                    // 如果有 handle event , 則放棄
                    if (('HTML' != eTagName) && hasClickEvent($(e.target))) {
                        runnext = false;
                    }
                }
                
                if (!runnext) {
                    if ('BODY' == eTagName) {
                        runnext = true;
                    }
                }
                
                
                if (runnext) {
                    if (0 == $('#jcBtnPageDown').length) {
                        var insHtml = 	'<div id="jcBtnPageDown" align="left" style="display:none;">' + 
                            '<button type="button" class="PageDownClass">Page Down</button>' + 
                            '<button type="button" class="ezViewClass">易讀</button>' + 
                            '<button type="button" class="hideClass">-</button>' + 
                            '</div>';
                        $('body').append(insHtml);
                        $('#jcBtnPageDown button.PageDownClass').css('max-width' ,  Math.max(80 ,	parseInt($('#jcBtnPageDown button.PageDownClass').width() , 10) ) + 'px');
                        $('#jcBtnPageDown button.PageDownClass').click(function(e) {
                            jcGetNextScrollTop(e);
                            //e.stopPropagation();
                            //e.preventDefault();
                        });
                        
                        $('#jcBtnPageDown button.ezViewClass').click(function(e) {
                            doJcEasyView();
                        });
                        
                        $('#jcBtnPageDown button.hideClass').click(function(e) {
                            //$('#jcBtnPageDown').hide();
                            $('#jcBtnPageDown').remove();
                        });
                    } 
                    
                    //var x = e.pageX - this.offsetLeft - parseInt($('#jcBtnPageDown').width() / 2);
                    //var y = e.pageY - this.offsetTop - $(window).scrollTop() - parseInt($('#jcBtnPageDown').height() / 2) - 5;
                    
                    // use position:fixed
                    var x = e.pageX - this.offsetLeft - 55;
                    var y = e.pageY - this.offsetTop - $(window).scrollTop() - 13;
                    
                    console.log( ' W = ' + $(e.target).width() + ' , H = ' + $(e.target).height() );
                    console.log('  x = ' + x + ' , y = ' + y );
                    
                    
                    
                    
                    window.setTimeout(function() {
                        $('#jcBtnPageDown').css('position' , 'fixed')
                            .css('left' , x + 'px')
                            .css('top' , y + 'px')
                            .show();
                    }, 500);
                    
                    
                    e.stopPropagation();
                    e.preventDefault();
                }
                
            });
            
            
            //
            
            
        }
        
        
        function jcGetNextScrollTop(e) {
            // 取得下一個 scroll down 
            //	如果有 jcTumblrClickToRemoveThisArticle ,則以其為準
            //	沒有則下捲 doc_top + win_h - 180
            
            var t = new Date;
            var click_time = t.getTime();
            if ((click_time - jc_click_last_time) < 200) { return; }
            jc_click_last_time = click_time;
            
            
            var docTop = $(window).scrollTop();	// document scroll top
            var winH = Math.min( $(window).height() , window.innerHeight );				// window hieght
            var docH = $(document).height();			// document hieght
            var liTop = docTop + winH - 180;
            
            if (docH > winH) {	// check window height is correct!?
                // 下捲
                $(window).scrollTop(liTop);
                
                //GM_log('PageDown: docTop ' + docTop + ' , winH ' + winH + ' , docH ' + docH + ' , liTop ' + liTop);
                
                /*
		var y = parseInt($('#jcBtnPageDown').attr('data-y') , 10);
		y = y + ($(window).scrollTop() - docTop);
		$('#jcBtnPageDown').css('top' , y + 'px')
												.attr('data-y' , y);
		*/
                
            }
            
            liTop = null;
            docTop = null;
            winH = null;
            docH = null;
            
        }
        
        function doJcEasyView() {
            // 易讀性
            doJcEasyView_v2();
        }
        
        function doJcEasyView_v1() {
            // 易讀性 v1
            (function(){
                var winW = Math.min(1700 , parseInt($(window).width() , 10) - 50);
                var newSS, styles='* {background:white !important; color:black !important; line-height: 180% !important; font-size: 0.85cm !important; width:auto !important; max-width:' + winW + 'px; margin: 0 0 0 0 !important; } ' + 
                    ':link, :link * { color: #0000EE !important;} ' + 
                    ':visited, :visited * { color: #551A8B !important;} ' + 
                    'body {position:static !important; max-width:' + winW + 'px !important;}'; 
                if(document.createStyleSheet) { 
                    document.createStyleSheet("javascript:'"+styles+"'"); 
                } else { 
                    newSS=document.createElement('link'); 
                    newSS.rel='stylesheet'; 
                    newSS.href='data:text/css,'+escape(styles); 
                    document.getElementsByTagName("head")[0].appendChild(newSS);
                }})();
            
            
            //$('#jcBtnPageDown').hide();
            $('#jcBtnPageDown').remove();
        }
        
        function doJcEasyView_v2() {
            // 易讀性 v2
            $('div').each(function() {
                if (($(this).width()<=280) && ($(this).height()<500)) {
                    $(this).remove();
                }
            });
            
            $('body').find('script').remove();
            
            
            $('body').find('*')
            .css('width','auto')
            .css('clear','both')
            .css('float','none')
            .css('position' , 'static')
            .css('border','0px solid black')
            .css('background-image','none')
            //.css('background-color','white')
            //.css('color','black')
            .css('background-color','')
            .css('color','')
            .css('font-size', '1cm')
            .css('line-height','1.2cm')
            .css('height','auto')
            .css('display','block')
            .attr('id','');
            
            $('textarea').css('font-size', '');
            
        }
        
        
        
        
        
    });
})(jQuery);