# nlフィルタ定義(文字コード判定用なのでこの行は削除しないこと)
# 17/04/14

[Replace]
Name = キャッシュメニューを追加
URL = www\.nicovideo\.jp/
ContentType = text/html
Match<
<li><a href="[^>]+><span>(?:|総合)ランキング</span></a></li>
>
Replace<
$0
<li onmouseover="document.getElementById('cachemenu').style.display='block';" onmouseout="document.getElementById('cachemenu').style.display='none'">
	<a href="javascript:void(0);"><span>キャッシュ▼</span></a>
	<ul style="display: none;" id="cachemenu" onmouseover="this.style.display='block';" onmouseout="this.style.display='none'">
	<li><a href="/cache/">空き <freeSpace>GB</a></li>
<!--li_cachemenu_item_start-->
<!--li_cachemenu_item_end-->
	</ul>
</li>
<script type="text/javascript"><!--
if (<freeSpace> < 1) alert("キャッシュフォルダの空き容量が1GBを下回っています！");
//--></script>
>

[Replace]
Name = watchページ用メニューを追加
URL = www\.nicovideo\.jp/watch/
ContentType = text/html
Match<
(?<=<!--li_cachemenu_item_start-->\r?\n?)
>
Replace<
	<li><a href="/cache/<smid>/auto/movie" id="cache_movie">動画を保存</a></li>
	<li><a href="/cache/<smid>/auto/audio" id="cache_audio">音声を保存</a></li>
	<li><a href="/cache/<memoryId>.xml?has_owner_thread=0" id="cache_comment">コメントを保存</a></li>
	<li><a href="/cache/ajax_rmall?<smid>" id="cache_remove" onclick="NicoCache_nl.removeCache(this); return false;">キャッシュ削除</a></li>
<script type="text/javascript"><!--
NicoCache_nl.removeCache = function(a) {
	this.get(a.href, function(xhr) {
		var orig = a.innerHTML;
		a.innerHTML = orig + " " + xhr.responseText;
		setTimeout(function(){ a.innerHTML = orig }, 3000);
	});
};
//--></script>
>

[Script]
Name = watchページ用メニューの更新スクリプト(GINZA)
URL = www\.nicovideo\.jp/watch/
ContentType = text/html
Require = res\.nimg\.jp/js/watch/require
Append<
if (typeof require === 'function') {
	require(['jquery', 'WatchJsApi'], function() {
		WatchJsApi.video.onVideoChanged(function() {
			var video = PlayerApp.ns.player.Nicoplayer.getInstance()._nicoplayerConnector.watchInfoModel;
			if (video) {
				jQuery('#cache_movie'  ).attr('href', '/cache/' + video.id + '/auto/movie');
				jQuery('#cache_audio'  ).attr('href', '/cache/' + video.id + '/auto/audio');
				jQuery('#cache_comment').attr('href', '/cache/' + video.v +
						".xml?has_owner_thread=" + (video.hasOwnerThread > 0 ? '1' : '0'));
				jQuery('#cache_remove' ).attr('href', '/cache/ajax_rmall?' + video.id);
			}
		});
	});
}
>

[Script]
Name = watchページ用メニューの更新スクリプト(HTML5)
URL = www\.nicovideo\.jp/watch/
ContentType = text/html
Require = "js-initial-watch-data"
Append<
window.addEventListener("load", function(){
	if (window.jQuery && window.WatchJsApi) {
		// onVideoChangedはひとつしか登録出来ないので使わないほうが良いかも
		WatchJsApi.video.onVideoChanged(function() {
			var videoId = WatchJsApi.videoId;
			if (videoId) {
				jQuery('#cache_movie'  ).attr('href', '/cache/' + videoId + '/auto/movie');
				jQuery('#cache_audio'  ).attr('href', '/cache/' + videoId + '/auto/audio');
				jQuery('#cache_comment').attr('href', '/cache/' + videoId + ".xml?has_owner_thread=0"); // How to get memoryId?
				jQuery('#cache_remove' ).attr('href', '/cache/ajax_rmall?' + videoId);
			}
		});
	}
});
>


[Replace]
Name = topBar(has_owner_thread)
URL = www\.nicovideo\.jp/watch/
ContentType = text/html
Require = so\.addVariable\("has_owner_thread",\s*"1"|has_owner_thread&quot;:&quot;1&quot;,
Match<
(?<=\.xml\?has_owner_thread=)0
>
Replace<
1
>

[Replace]
Name = topBar(width 1024px)
URL = www\.nicovideo\.jp/watch/
Require = res\.nimg\.jp/css/watch_zero/watch\.css\?
Match<
(?=</head>)
>
Replace<
<style type="text/css">#siteHeaderInner { width:1024px !important; }</style><CRLF>
>
