// ==UserScript==
// @name         NicoVideo Add Forward
// @namespace    http://bmky.net/
// @include      http://www.nicovideo.jp/watch*
// ==/UserScript==

if( location.href.indexOf( "http://www.nicovideo.jp/watch" ) == 0 ) {
	( function( ) {
			var link  = document.createElement( "link" );
			link.rel  = "next";
			link.href = 'javascript:nextVideo();';
			document.getElementsByTagName( "head" )[0].appendChild( link );
	} )( );
	
	function nextVideo( ) {
		var com = document.selectNodes( '//div[@id="des_2"]/TABLE[last()]/TBODY/TR/TD/DIV/DIV/DIV' );// following-sibling::node()/TBODY/TR/TD/P[last()]' );
		var comment = com[0].innerHTML;
		
		var nextstr = "(?:次回?|続き|後半|後編)\\s*";
		var nextarr = "(?:→|⇒|＞|>|&gt;|：|:)?";
		var smlink  = '<a href="(http:\\/\\/www\\.nicovideo\\.jp\\/watch\\/[a-z]+\\d+)".*?>';
		
		comment.replace(
			new RegExp( [ nextstr + nextarr + smlink ].join( "\\s*" ), "i" )
			, function( $0, url ) {
				location.href = url;
			} );
		
		var regpre = "(?:part|その|第|#|No\\.?|\\()?";
		var regsuf = "(?:回|話|\\)|\\/\\d+)?";
		
		document.title.match( new RegExp( regpre + "(\\d+)" + regsuf, "i" ) );
		var nextpart = parseInt( RegExp.$1 ) + 1;
		
		comment.replace(
			new RegExp( [ regpre + nextpart + regsuf + nextarr + smlink ].join( "\\s*" ), "i" )
			, function( $0, url ) {
				location.href = url;
			} );
	}
}

