/*！
 * Sakura application bundle theme ver 1.0
 * @author 不忘编码
 * @url https://www.cnblogs.com/zouwangblog/
 * @date 2019.9.24
 */
(function ($) {
	$.extend({
		silence: (options) => {
			var silence = new Silence();
			silence.init(options);
		}
	});

	class Silence {
		constructor() {
			this.defaluts = {
				profile: {
					enable: false,
					avatar: "https://images.cnblogs.com/cnblogs_com/zouwangblog/1537703/t_%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20190829160024.jpg?a=1585808073202",
					authorName: "北冥琉玥"
					favicon: null,
					notice: "永远相信美好的事情即将发生",
				},
				catalog: {
					enable: false,
					move: true,
					index: true,
					level1: 'h2',
					level2: 'h3',
					level3: 'h4',
				},
				signature: {
					author: null,
					enable: false,
					home: 'https://www.cnblogs.com',
					license: 'CC BY 4.0',
					link: 'https://creativecommons.org/licenses/by/4.0'
				},
				sponsor: {
					enable: true,
					paypal: null,
					wechat: 'https://www.cnblogs.com/images/cnblogs_com/zouwangblog/1477590/t_%e5%be%ae%e4%bf%a1%e5%9b%be%e7%89%87_20190704175553.png',
					alipay: 'https://www.cnblogs.com/images/cnblogs_com/zouwangblog/1477590/t_%e5%be%ae%e4%bf%a1%e5%9b%be%e7%89%87_20190704174158.png'
				},
				github: {
					enable: false,
					color: '#fff',
					fill: null,
					link: null,
				},
				topImg: {
					homeTopImg: [
						"https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190806172418911-2037584311.jpg",
					],
					notHomeTopImg: [
						"https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190806172418911-2037584311.jpg"
					]
				},
				topInfo: {
					title: 'Hi,Toretto',
					text: 'You got to put the past behind you before you can move on.',
					github: "",
					weibo: "",
					telegram: "",
					music: "",
					twitter: "",
					zhihu: "",
					mail: "",
				}
			};

			this.version = '1.0.0';
		}

		get cnblogs() {
			return {
				header: '#header',
				blogTitle: '#blogTitle',
				publicProfile: '#profile_block',
				navigator: '#navigator',
				navList: '#navList',
				sideBar: '#sideBar',
				sideBarMain: '#sideBarMain',
				forFlow: '.forFlow',
				postTitle: '#cb_post_title_url',
				postDetail: '#post_detail',
				postBody: '#cnblogs_post_body',
				postDigg: '#div_digg',
				postCommentBody: '.blog_comment_body',
				feedbackContent: '.feedbackCon',
				postSignature: '#MySignature',
				footer: '#footer',
			};
		}

		get isPostPage() {
			return $(this.cnblogs.postDetail).length > 0;
		}

		/**
		 * 初始化
		 * @param {Object} options 全局配置选项
		 */
		init(options) {
			if (options) {
				$.extend(true, this.defaluts, options);
			}
			this.buildCustomElements();
			this.buildGithubCorner();
			this.buildCopyright();
			this.buildBloggerProfile();
			this.getMainMode();
			this.buildToolbar();
			if (this.isPostPage) {
				this.postHeader();
				this.goIntoReadingMode();
				this.buildPostCatalog();
				this.buildPostCodeCopyBtns();
				this.buildPostSignature();
				this.buildPostFavoriteBtn();
				this.buildPostSponsor();
				this.buildPostCommentAvatars();
				this.setNotHomeTopImg();
			} else {
				this.mainHeader();
				this.goIntoNormalMode();
				this.homeImg();
				this.setHomeSuiBiList();
			}
			this.scrollDy();
		}

		/**
		 * 消息弹窗
		 * @param {String} content 消息内容
		 */
		showMessage(content) {
			$('body').prepend(`<div class="esa-layer"><span class="esa-layer-content">${content}</span></div>`);
			let $layer = $('.esa-layer');
			$layer.fadeIn(200);
			setTimeout(() => {
				$layer.remove();
			}, 2000);
		}

		/**
		 * 通用模式设置
		 */
		getMainMode() {
			$('.site-branding').hover(function () {
				$('.logolink .sakuraso').css({
					'background-color': '#FE9600',
					'color': '#fff'
				})
				$('.chinese-font').css('display', 'block')
			}, function () {
				$('.logolink .sakuraso').css({
					'background-color': 'rgba(255,255,255,.5)',
					'color': '#464646'
				})
				$('.chinese-font').css('display', 'none')
			});
			<!--离开页面改变title-->
			var time;
			var normar_title = document.title;
			document.addEventListener('visibilitychange', function () {
				if (document.visibilityState == 'hidden') {
					clearTimeout(time);
					document.title = '桥豆麻袋(＃°Д°)';
				} else {
					document.title = '你终于回来了(。・∀・)ノ';
					time = setTimeout(function () {
						document.title = normar_title;
					}, 3000);

				}
			});
		}

		/**
		 * 进入阅读模式
		 */
		goIntoReadingMode() {
			let $win = $(window);
			let _that = this;
			if ($win.width() > 767) {
				$(_that.cnblogs.header).css('opacity', '1');
				$('#header #navList').css('margin-left', '0px');
				//修改文章布局
				$('#main').css({'margin': '0 auto', 'padding': '0 10px', 'min-width': '950px'});
			}
		}

		/**
		 * 进入正常模式
		 */
		goIntoNormalMode() {
			let $win = $(window);
			let _that = this;
			var oldScrollY = 0;
			if ($win.width() > 767) {
				$('#main').css({'min-width': '800px'});
				//鼠标悬浮判断，如果页面不是位于顶部则head不消失
				$(_that.cnblogs.header).hover(function () {
					$(_that.cnblogs.header).css('opacity', '1');
					$('#header #navList').css('margin-left', '0px');
				}, function () {
					if ($(document).scrollTop() > 0) {
						$(_that.cnblogs.header).css('opacity', '1');
						$('#header #navList').css('margin-left', '0px');
					} else {
						$(_that.cnblogs.header).css('opacity', '0');
						$('#header #navList').css('margin-left', '100px');
					}

				})
				//鼠标悬浮logo判断
				$('.site-branding').hover(function () {
					$(_that.cnblogs.header).css('opacity', '1');
					$('#header #navList').css('margin-left', '0px');
				}, function () {
					if ($(document).scrollTop() > 0) {
						$(_that.cnblogs.header).css('opacity', '1');
						$('#header #navList').css('margin-left', '0px');
					} else {
						$(_that.cnblogs.header).css('opacity', '0');
						$('#header #navList').css('margin-left', '100px');
					}

				})
				//页面滚动判断
				$win.scroll(function () {
					oldScrollY = this.scrollY;
					if (oldScrollY > 0) {
						$(_that.cnblogs.header).css('opacity', '1');
						$('#header #navList').css('margin-left', '0px');
					} else {
						$(_that.cnblogs.header).css('opacity', '0');
						$('#header #navList').css('margin-left', '100px');
					}
				});
			}
		}

		/**
		 * 构建自定义 DOM 元素
		 */
		buildCustomElements() {
			// Change page title.
			const blogTitle = $(this.cnblogs.blogTitle).find('h1 a').html();
			const autherName = $(this.cnblogs.publicProfile).find('a:eq(0)').html();
			let $title = $('head').find('title');
			$title.html($title.html().replace(`春原庄的雪 | ${autherName}`, `${blogTitle}`));

			// Build a tags button on navbar.
			let $navList = $(this.cnblogs.navList);
			$.each($navList.find('li'), (index, nav) => {
				$(nav).append('<i></i>');
			});

			// Build a menu button on mobile browser.
			$('body').prepend(`<div class="esa-mobile-menu"></div>`);
			$('.esa-mobile-menu').on('click', () => {
				$(this.cnblogs.navigator).fadeToggle(200);
			});

			//回到顶部特效
			$('body').prepend(`<a href="#" class="cd-top faa-float animated cd-fade-out"></a>`);
			let $win = $(window);
			let oldScrollY = 0;
			$win.scroll(function () {
				oldScrollY = this.scrollY;
				let height = window.innerHeight;
				let top = '-' + (900 - height + 80) + 'px';
				if (oldScrollY > 0) {
					$('.cd-top').css('top', top);
				} else {
					$('.cd-top').css('top', '-900px');
				}
			});


			$("#navList").append('<li><a id="blog_nav_myyoulian" class="menu" href="https://www.cnblogs.com/zouwangblog/articles/11177049.html">友链</a><i></i></li><li><a id="blog_nav_myzanshang" class="menu" href="https://www.cnblogs.com/zouwangblog/articles/11340077.html">赞赏</a><i></i></li><li><a id="blog_nav_myguanyu" class="menu" href="">关于</a><i></i></li>');
			//添加标签icon
			$('#blog_nav_myhome').prepend('<i class="fa fa-fort-awesome" aria-hidden="true"></i>');
			$('#blog_nav_contact').prepend('<i class="fa fa-address-book-o" aria-hidden="true"></i>');
			$('#blog_nav_rss').prepend('<i class="fa fa-rss faa-pulse" aria-hidden="true"></i>');
			$('#blog_nav_admin').prepend('<i class="fa fa-list" aria-hidden="true"></i>');
			$('#blog_nav_myyoulian').prepend('<i class="fa fa-link" aria-hidden="true"></i>');
			$('#blog_nav_myzanshang').prepend('<i class="fa fa-heart" aria-hidden="true"></i>');
			$('#blog_nav_myguanyu').prepend('<i class="fa fa-leaf" aria-hidden="true"></i>');

			//添加li内嵌ui
			let guanyu = '<ul class="sub-menu">' +
					'<li><a href="https://www.cnblogs.com/zouwangblog/articles/11157339.html "><i class="fa fa-meetup" aria-hidden="true"></i> 我？</a></li>' +
					'<li><a href="https://www.cnblogs.com/zouwangblog/articles/11346906.html "><i class="fa fa-area-chart" aria-hidden="true"></i> 统计</a></li>' +
					'<li><a href="https://www.cnblogs.com/zouwangblog/articles/11350777.html "><i class="fa fa-heartbeat" aria-hidden="true"></i> 监控</a></li>' +
					'<li><a href="https://www.cnblogs.com/zouwangblog/articles/11350787.html"><i class="iconfont icon-taohua" aria-hidden="true"></i> 主题</a></li>' +
					'</ul>';
			$('#blog_nav_myguanyu').after(guanyu);

		}

		/**
		 * 构建主题版权信息
		 */
		buildCopyright() {
			//这里能保留么，算是我的一个小心愿。
			var content = `<div> Powered By <a href="https://www.cnblogs.com" target="_blank">Cnblogs</a> |
            Theme <a href="https://github.com/Zou-Wang/CNblogs-Theme-Sakura" target="_blank">Toretto v${this.version}</a></div>`;
			$(this.cnblogs.footer).append(content);
		}

		/**
		 * 构建博客签名
		 */
		buildPostSignature() {
			const config = this.defaluts.signature;
			if (config.enable) {
				const postUrl = $(this.cnblogs.postTitle).attr('href');
				const authorName = config.author || $(this.cnblogs.publicProfile).find('a:eq(0)').html();

				const content =
						`<div class="esa-post-signature"> 
                    <p>作者：<a href="${config.home}">${authorName}</a></p> 
                    <p>出处：<a href="${postUrl}">${postUrl}</a></p> 
                    <p>本站使用「<a href="${config.link}"  target="_blank">${config.license}</a>」创作共享协议，转载请在文章明显位置注明作者及出处。</p> 
                </div>`;

				$(this.cnblogs.postSignature).html(content).show();
			}
		}

		/**
		 * 构建评论者头像
		 */
		buildPostCommentAvatars() {
			var builder = () => {
				$(this.cnblogs.postCommentBody).before(`<div class='esa-comment-avatar'><a target='_blank'><img /></a></div>`);
				let feedbackCon = $(this.cnblogs.feedbackContent);
				for (var i = 0; i < feedbackCon.length; i++) {
					let avatar = 'https://pic.cnblogs.com/face/sample_face.gif';
					let span = $(feedbackCon[i]).find("span:last")[0];
					if (span) {
						avatar = $(span).html().replace('https://', '//');
					}
					$(feedbackCon[i]).find(".esa-comment-avatar img").attr("src", avatar);
					let href = $(feedbackCon[i]).parent().find(".comment_date").next().attr("href");
					$(feedbackCon[i]).find(".esa-comment-avatar a").attr("href", href);
				}
			}
			if ($(this.cnblogs.postCommentBody).length) {
				builder();
			} else {
				let count = 1;
				// poll whether the feedbacks is loaded.
				let intervalId = setInterval(() => {
					if ($(this.cnblogs.postCommentBody).length) {
						clearInterval(intervalId);
						builder();
					}
					if (count == 10) {
						// no feedback.
						clearInterval(intervalId);
					}
					count++;
				}, 500);
			}
		}

		/**
		 * 构建赞赏模块
		 */
		buildPostSponsor() {
			const sponsor = this.defaluts.sponsor;
			const github = this.defaluts.github;
			const that = this;
			if (!sponsor.enable) {
				return;
			}

			$('#blog_post_info').prepend(`
            <div class="esa-sponsor">
                <a class="github" href="${github.enable ? github.link : 'https://github.com/Kaiyuan/donate-page'}" target="_blank" class="posa tr3" title="Github"></a>
                <div class="text tr3">${sponsor.text || 'Sponsor'}</div>
                <ul class="box posa tr3">
                    <li class="paypal">PayPal</li>
                    <li class="alipay">AliPay</li>
                    <li class="wechat">WeChat</li>
                </ul>
                <div id="QRBox" class="posa left-100">
                    <div id="MainBox"></div>
                </div>
            </div>`);

			const $sponsor = $('.esa-sponsor');
			const QRBox = $('#QRBox');
			const MainBox = $('#MainBox');

			function showQR(QR) {
				if (QR) {
					MainBox.css('background-image', 'url(' + QR + ')');
				}
				$sponsor.find('.text, .box, .github').addClass('blur');
				QRBox.fadeIn(300, function () {
					MainBox.addClass('showQR');
				});
			}

			$sponsor.find('.box>li').click(function () {
				var type = $(this).attr('class');
				if (type === 'paypal') {
					if (!sponsor.paypal) {
						return that.showMessage('博主忘记设置 PayPal 收款地址');
					}
					window.open(sponsor.paypal, '_blank');
				} else if (type === 'alipay') {
					if (!sponsor.alipay) {
						return that.showMessage('博主忘记设置支付宝收款二维码');
					}
					showQR(sponsor.alipay);
				} else if (type === 'wechat') {
					if (!sponsor.wechat) {
						return that.showMessage('博主忘记设置微信收款二维码');
					}
					showQR(sponsor.wechat);
				}
			});

			MainBox.click(function () {
				MainBox.removeClass('showQR').addClass('hideQR');
				setTimeout(function (a) {
					QRBox.fadeOut(300, function () {
						MainBox.removeClass('hideQR');
					});
					$sponsor.find('.text, .box, .github').removeClass('blur');
				}, 600);
			});
		}

		/**
		 * 构建收藏按钮
		 */
		buildPostFavoriteBtn() {
			let builder = () => {
				$(this.cnblogs.postDigg).prepend(`<div class="favorite" onclick="AddToWz(cb_entryId);return false;"><span class="favoritenum" id="favorite_count"></span></div>`);
			};

			if ($(this.cnblogs.postDigg).length) {
				builder();
			} else {
				let intervalId = setInterval(() => {
					if ($(this.cnblogs.postDigg).length) {
						clearInterval(intervalId);
						builder();
					}
				}, 200);
			}
		}

		/**
		 * 构建博客目录
		 */
		buildPostCatalog() {
			const config = this.defaluts.catalog;

			if (config.enable) {
				let levels = [config.level1, config.level2, config.level3];
				let $headers = $(this.cnblogs.postBody).find(levels.join(','));

				if (!$headers.length) {
					return false;
				}

				let $catalog = $(
						`<div class="esa-catalog">
                        <div class="esa-catalog-contents">
                            <div class="esa-catalog-title">目录</div>
                            <a class="esa-catalog-close">✕</a>
                        </div>
                    </div>`);

				let h1c = 0;
				let h2c = 0;
				let h3c = 0;

				let catalogContents = '<ul>';

				let cryptoObj = window.crypto || window.msCrypto; // for IE 11
				let eleIds = cryptoObj.getRandomValues(new Uint32Array($headers.length));

				$.each($headers, (index, header) => {
					const tagName = $(header)[0].tagName.toLowerCase();
					let titleIndex = '';
					let titleContent = $(header).html();
					let title = titleContent;
					if (!config.index) {
						switch (tagName) {
							case config.level1:
								titleContent = `<span class="level1">${titleContent}</span>`;
								break;
							case config.level2:
								titleContent = `<span class="level2">${titleContent}</span>`;
								break;
							case config.level3:
								titleContent = `<span class="level3">${titleContent}</span>`;
								break;
						}
					} else {
						if (tagName === config.level1) {
							h1c++;
							h2c = 0;
							h3c = 0;
							titleIndex = `<span class="level1">${h1c}. </span>`;
						} else if (tagName === config.level2) {
							h2c++;
							h3c = 0;
							titleIndex = `<span class="level2">${h1c}.${h2c}. </span>`;
						} else if (tagName === config.level3) {
							h3c++;
							titleIndex = `<span class="level3">${h1c}.${h2c}.${h3c}. </span>`;
						}
					}

					var idx = eleIds[index];

					catalogContents +=
							`<li class="li_${tagName}" title="${title}">
                            <i class="${idx}" ></i><a class="esa-anchor-link">${(titleIndex + titleContent)}</a>
                        </li>`;

					$(header).attr('id', `${idx}`)
							.html(`<span>${titleContent}</span><a href="#${idx}" class="esa-anchor">#</a>`)
							.hover(() => {
								$(header).find('.esa-anchor').css('opacity', 1);
							}, () => {
								$(header).find('.esa-anchor').css('opacity', 0);
							});
				});
				catalogContents += `</ul>`;

				$catalog.find('.esa-catalog-contents').append(catalogContents);
				$catalog.appendTo('body');

				let $tabContent = $('.esa-catalog-contents');

				$tabContent.fadeIn();

				$('.esa-anchor-link').on('click', function () {
					let position = $('#' + ($(this).prev('i').attr('class'))).offset().top - 80;
					$('html, body').animate({
						scrollTop: position
					}, 300);
				});

				$('.esa-catalog-close').on('click', () => {
					$tabContent.hide();
				});

				if (config.move) {
					let move = {
						start: false,
						pois: [0, 0],
					};
					$('.esa-catalog-title').on('mousedown', function (e) {
						e.preventDefault();
						move.start = true;
						let position = $('.esa-catalog').position();
						let poisX = e.clientX - parseFloat(position.left);
						let poisY = e.clientY - parseFloat(position.top);
						move.pois = [poisX, poisY];
					});
					$(document).on('mousemove', (e) => {
						if (move.start) {
							let offsetX = e.clientX - move.pois[0];
							let offsetY = e.clientY - move.pois[1];
							let fixed = $('.esa-catalog').css('position') === 'fixed';

							e.preventDefault();

							move.stX = fixed ? 0 : $(window).scrollLeft();
							move.stY = fixed ? 0 : $(window).scrollTop();

							let setRig = $(window).width() - $('.esa-catalog').outerWidth() + move.stX;
							let setBot = $(window).height() - $('.esa-catalog').outerHeight() + move.stY;

							offsetX < move.stX && (offsetX = move.stX);
							offsetX > setRig && (offsetX = setRig);
							offsetY < move.stY && (offsetY = move.stY);
							offsetY > setBot && (offsetY = setBot);

							$('.esa-catalog').css({
								left: offsetX,
								top: offsetY,
								right: 'auto',
							});
						}
					}).on('mouseup', (_e) => {
						if (move.start) {
							move.start = false;
						}
					});
				}
			}
		}

		/**
		 * 构建 Github Corner
		 */
		buildGithubCorner() {
			const config = this.defaluts.github;
			if (config.enable) {
				let fillStyle = config.fill ? `fill:${config.fill};` : '';
				$('body').append(
						`<a href="${config.link}" class="github-corner" title="Fork me on GitHub">
                        <svg width="60" height="60" viewBox="0 0 250 250" style="${fillStyle} color:${config.color}; z-index: 999999; position: fixed; top: 0; border: 0; left: 0; transform: scale(-1, 1);" aria-hidden="true">
                            <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
                            <path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
                            <path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path>
                        </svg>
                    </a>`);
			}
		}

		/**
		 * 构建代码复制按钮
		 */
		buildPostCodeCopyBtns() {
			let $pres = $('.postBody .cnblogs-markdown').find('pre');

			if (!$pres.length) {
				return false;
			}

			$.each($pres, (index, pre) => {
				$(pre).find('code').attr('id', `copy_target_${index}`);
				$(pre).prepend(`<div class="esa-clipboard-button" data-clipboard-target="#copy_target_${index}" title="复制代码">Copy</div>`);
			});

			$.getScript(`https://unpkg.com/clipboard@2.0.0/dist/clipboard.min.js`, () => {
				let clipboard = new ClipboardJS('.esa-clipboard-button');
				clipboard.on('success', (e) => {
					this.showMessage('代码已复制到粘贴板中');
					e.clearSelection();
				});
				clipboard.on('error', (e) => {
					this.showMessage('代码复制失败');
				});
			});
		}

		/**
		 * 构建工具栏
		 */
		buildToolbar() {
			const catalog = this.defaluts.catalog;

			$('body').append(`<div class="esa-toolbar">
                <!--<button class="esa-toolbar-gotop"><div class="tips">返回顶部</div></button>-->
                <!--<button class="esa-toolbar-contents"><div class="tips">阅读目录</div></button>-->
                <button class="esa-toolbar-follow">捕获</button>
            </div>`);

			// let $btnGotop = $('.esa-toolbar-gotop');
			// let $btnContents = $('.esa-toolbar-contents');
			let $btnFollow = $('.esa-toolbar-follow');

			// if (catalog.enable) {
			// 	$btnContents.on('click', () => {
			// 		let $catalog = $('.esa-catalog-contents');
			// 		if ($catalog.css('display') == 'none') {
			// 			$catalog.fadeIn();
			// 		} else {
			// 			$catalog.hide();
			// 		}
			// 	}).hover(() => {
			// 		$btnContents.find('.tips').show();
			// 	}, () => {
			// 		$btnContents.find('.tips').hide();
			// 	});
			// } else {
			// 	$btnContents.remove();
			// }
			//
			// $btnGotop.on('click', () => {
			// 	$(window).scrollTop(0);
			// }).hover(() => {
			// 	$btnGotop.find('.tips').show();
			// }, () => {
			// 	$btnGotop.find('.tips').hide();
			// });
			//
			// $(window).scroll(function () {
			// 	if (this.scrollY > 200) {
			// 		$btnGotop.fadeIn();
			// 	} else {
			// 		$btnGotop.fadeOut();
			// 	}
			// });

			$btnFollow.on('click', () => {
				loadLink(location.protocol + "//common.cnblogs.com/scripts/artDialog/ui-dialog.css", () => {
					loadScript(location.protocol + "//common.cnblogs.com/scripts/artDialog/dialog-min.js", () => {
						if (!isLogined) {
							return login();
						}
						if (c_has_follwed) {
							return this.showMessage('您已经关注过该博主');
						}
						const n = cb_blogUserGuid;
						$.ajax({
							url: "/mvc/Follow/FollowBlogger.aspx",
							data: '{"blogUserGuid":"' + n + '"}',
							dataType: "text",
							type: "post",
							contentType: "application/json; charset=utf-8",
							success: (msg) => {
								msg == "未登录" ? login() : (msg == "关注成功" && followByGroup(n, !0));
								this.showMessage(msg);
							}
						})
					})
				})
			}).hover(() => {
				$btnFollow.find('.tips').show();
			}, () => {
				$btnFollow.find('.tips').hide();
			});
		}

		/**
		 * 构建博主信息
		 */
		buildBloggerProfile() {
			const config = this.defaluts.profile;

			if (!config.enable) {
				return;
			}

			if (!this.isPostPage && config.avatar) {
				$(this.cnblogs.sideBarMain).prepend(`<img class="esa-profile-avatar" src="${config.avatar}" />`);
			}

			if (config.favicon) {
				$('head').append(`<link rel="shortcut icon" href="${config.favicon}" type="image/x-icon" />`);
			}

			//博客logo
			var title = '<div class="site-branding">' +
					'<span class="logolink moe-mashiro">' +
					'<a href="https://www.cnblogs.com/zouwangblog/" alt="春原庄的雪">' +
					'<ruby><span class="sakuraso">ふじさん</span><span class="no">の</span><span class="shironeko">雪</span>' +
					'<rt class="chinese-font">春原庄的雪</rt></ruby></a></span>' +
					'</div>'
			$('body').prepend(title);


		}

		/**
		 * 构建顶部滚动进度条 需要在页面dom元素构建成功之后再计算文档高度。
		 */
		scrollDy() {
			let that = this;
			$('body').prepend(`<div class="scrollCls" id="scrollInfo"></div>`);
			// 可滚动的总高度
			var scrollTotal = this.getScrollHeight() - this.getWindowHeight();
			// 获取dom元素
			var scrollEl = document.getElementById('scrollInfo')
			$(window).scroll(function () {
				// 已经滚动距离
				var sHeight = that.getScrollTop();
				// 占比
				var bl = Math.min((sHeight / scrollTotal) * 100, 100);
				// 设置
				scrollEl.style.width = bl + '%';
			})

		}

		// 已经滚动距离
		getScrollTop() {
			var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;
			if (document.body) {
				bodyScrollTop = document.body.scrollTop;
			}
			if (document.documentElement) {
				documentScrollTop = document.documentElement.scrollTop;
			}
			scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;
			return scrollTop;
		}

		// 文档的总高度
		getScrollHeight() {
			var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;
			if (document.body) {
				bodyScrollHeight = document.body.scrollHeight;
			}
			if (document.documentElement) {
				documentScrollHeight = document.documentElement.scrollHeight;
			}
			scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;
			return scrollHeight;
		}

		// 窗体高度
		getWindowHeight() {
			var windowHeight = 0;
			if (document.compatMode == "CSS1Compat") {
				windowHeight = document.documentElement.clientHeight;
			} else {
				windowHeight = document.body.clientHeight;
			}
			return windowHeight;
		}

		//=========================设置主页逻辑
		/**
		 * 构建主页头部html
		 * headertop 网格遮罩
		 */
		mainHeader() {
			const config = this.defaluts.topInfo;
			var header =
					`<div class="headertop filter-dot">` +
					`</div>` +
					`<div class="main-header">` +
					`</div>` +
					`<div class="focusinfo no-select">` +
					`       <h1 class="center-text glitch is-glitching Ubuntu-font" data-text="${config.title}">${config.title}</h1>` +
					`       <div class="header-info"><p><i class="fa fa-quote-left"></i> ${config.text} <i class="fa fa-quote-right"></i></p>` +
					`           <div class="top-social_v2">` +
					`              <li id="bg-pre"><img class="flipx" src="https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190808103709869-648245711.png"></li>` +
					`              <li><a href="${config.github}" target="_blank" class="social-github" title="github"><img src="https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190808095618459-218538626.png"></a></li>` +
					`              <li><a href="${config.weibo}" target="_blank" class="social-sina" title="sina"><img src="https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190808095623418-1617766229.png"></a></li>` +
					`              <li><a href="${config.telegram}" target="_blank" class="social-lofter" title="telegram"><img src="https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190808095628401-835828752.png"></a></li>` +
					`              <li><a href="${config.music}" target="_blank" class="social-wangyiyun" title="CloudMusic"><img src="https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190808095640330-1209750721.png"></a></li>` +
					`              <li><a href="${config.twitter}" target="_blank" class="social-wangyiyun" title="Twitter"><img src="https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190808095635213-701885869.png"></a></li>` +
					`              <li><a href="${config.zhihu}" target="_blank" class="social-wangyiyun" title="Zhihu"><img src="https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190808095650119-1882504549.png"></a></li>` +
					`              <li><a href="${config.mail}" target="_blank" class="social-wangyiyun" title="E-mail"><img src="https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190808095613956-1350546638.png"></a></li>` +
					`              <li id="bg-next"><img src="https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190808103709869-648245711.png"></li>` +
					`           </div>` +
					`      </div>` +
					`</div>` +
					`<div class="wave">` +
					`   <div id="banner_wave_1"></div>` +
					`   <div id="banner_wave_2"></div>` +
					`</div>` +
					`<div class="scroll-down" data-offset="-45">` +
					`        <span class="hidden">Scroll Down</span>` +
					`        <i class="fa fa-chevron-down" aria-hidden="true"></i>` +
					`</div>`;
			$('#home').prepend(header);
		}

		/**
		 * 构建主页头图
		 */
		homeImg() {
			const config = this.defaluts.topImg;
			// 设置主页图片
			let homeTopImg = config.homeTopImg, bgImg;
			let index = this.randomNum(0, homeTopImg.length - 1);
			homeTopImg.length > 0 ?
					(homeTopImg.length > 1 ? bgImg = homeTopImg[index] : bgImg = homeTopImg[0])
					: bgImg = "";
			$('.main-header').css({
				'background-image': 'url(' + bgImg + ')',
			});

			// 头图点击滚动到内容位置
			$('.scroll-down').click(function () {
				let endScroll;
				endScroll = $('#main').offset().top - 20;
				$('html,body').stop().animate({scrollTop: endScroll}, 1000);
			});

			//切换首页壁纸
			$('#bg-pre').click(function () {
				index--;
				if (index < 0) {
					index = homeTopImg.length - 1
				}
				let nextImg = homeTopImg[index]
				$('.main-header').css({
					'background-image': 'url(' + nextImg + ')',
				});
			});
			$('#bg-next').click(function () {
				index++;
				if (index > homeTopImg.length - 1) {
					index = 0
				}
				let preImg = homeTopImg[index]
				$('.main-header').css({
					'background-image': 'url(' + preImg + ')',
				});

			})
		}

		/**
		 * 构建首页随笔列表
		 */
		setHomeSuiBiList() {
			let article_list = document.getElementsByClassName('day');
			let author = $(this.cnblogs.publicProfile).find('a:eq(0)').html() //作者
			for (let i = article_list.length - 1; i >= 0; i--) {
				let time = $('.day').find('div.dayTitle')[i].textContent.replace('年', '-').replace('月', '-').replace('日', ''); //获取年月日
				let postTitle = $('.day').find('div.postTitle')[i].innerHTML;//<a class="postTitle2" href="https://www.cnblogs.com/zouwangblog/p/11194299.html">[置顶] 博客园美化</a>
				let readMore = $('.day').find('a.c_b_p_desc_readmore')[i].href;//https://www.cnblogs.com/zouwangblog/p/11194299.html
				let content = $('.day').find('div.c_b_p_desc')[i].textContent.replace('阅读全文', ''); //摘要
				let desc = $('.day').find('div.postDesc')[i].textContent;//posted @ 2019-07-16 13:27 ふじさんの雪 阅读 (3073) 评论 (56)<a href="https://i.cnblogs.com/EditPosts.aspx?postid=11194299" rel="nofollow">编辑</a>
				let readNum = desc.substring(desc.indexOf("(") + 1, desc.indexOf(")")); //阅读量
				let comNum = desc.substring(desc.lastIndexOf("(") + 1, desc.lastIndexOf(")")); //评论量
				let bianji = $('.day').find('div.postDesc')[i].firstElementChild.href; //获取编辑链接 https://i.cnblogs.com/EditPosts.aspx?postid=11194299
				let url
				let desc_img = article_list[i].getElementsByClassName('desc_img')[0];
				if (desc_img !== undefined) {
					url = desc_img.src;//https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190807204419622-1770363151.jpg
				} else {
					url = 'https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190807151203983-873040918.jpg'
				}
				let html = `<div class="post post-list-thumb post-list-show">` +
						`  <div class="post-thumb"> <a href="${readMore}"> <img class="lazyload" src="${url}"  data-src="${url}"> </a></div>` +
						`  <div class="post-content-wrap">` +
						`   <div class="post-content">` +
						`     <div class="post-date"> <i class="iconfont icon-time"></i>发布于 ${time}</div>` +
						`     <div class="post-title">${postTitle}</div>` +
						`     <div class="post-meta"> <span><i class="iconfont icon-attention"></i>${readNum} 热度</span> <span class="comments-number"><i class="iconfont icon-mark"></i>${comNum} 条评论</span> <span><i class="iconfont icon-cc-user"></i><a href="https://www.cnblogs.com/zouwangblog/p/11157339.html"></a>${author}</span></div>` +
						`     <div class="float-content"><p>${content}</p>` +
						`        <div class="post-bottom">` +
						`           <a href="${readMore}" class="button-normal"><i class="iconfont icon-gengduo"></i></a>` +
						`           <a href="${bianji}" class="button-normal"><i class="iconfont icon-bianji"></i></a>` +
						`        </div>` +
						`     </div>` +
						`  </div>` +
						` </div>` +
						`</div>`;
				$('.forFlow').prepend(html);
			}
			$('.post-list-thumb:odd').addClass('post-list-thumb-left')

			//构建notice
			const config = this.defaluts.profile;
			let notice = `<div class="notice"> <i class="iconfont icon-notification"></i><div class="notice-content">${config.notice}</div></div>`
			$('#main').prepend(notice);
		}

		//=================阅读页逻辑
		/**
		 * 构建阅读页头部html 如果是文章则只显示标题，如果是随笔则显示发布时间，头像，阅读量
		 */
		postHeader() {
			const config = this.defaluts.profile;
			var center =
					'<div class="pattern-center">' +
					' <div class="pattern-attachment-img"><img src="" data-src=""' +
					'    style="width: 100%; height: 100%; object-fit: cover; pointer-events: none;"></div>' +
					' <header class="pattern-header "><h1 class="entry-title"></h1></header>' +
					'</div>';
			$('#home').prepend(center);
			const sbTitle = $('#cb_post_title_url').text();
			$('.entry-title').text(sbTitle);// 设置标题
			$('.postTitle').css('display', 'none');
			let post_date = $('#post-date').text() //发布时间
			let post_view_count = $('#post_view_count').text() //阅读数
			if (window.location.href.indexOf('articles') === -1) {
				var header =
						`<p class="entry-census"><span><a href="https://www.cnblogs.com/zouwangblog/"><img src="${config.avatar}"></a></span><span><a href="https://www.cnblogs.com/zouwangblog/">${config.authorName}</a></span><span class="bull">·</span>${post_date}<span class="bull">·</span>${post_view_count} 次阅读</p>`;
				$('.pattern-header').append(header)
				$('.pattern-center').addClass('single-center')
				$('.pattern-header').addClass('single-header')
			} else {
				return
			}

		}

		/**
		 * 构建非主页头图
		 */
		setNotHomeTopImg = function () {
			const config = this.defaluts.topImg;
			// 设置主页图片
			let notHomeTopImg = config.notHomeTopImg, bgImg;

			notHomeTopImg.length > 0 ?
					(notHomeTopImg.length > 1 ? bgImg = notHomeTopImg[this.randomNum(0, notHomeTopImg.length - 1)] : bgImg = notHomeTopImg[0])
					: bgImg = "";
			$('.pattern-attachment-img img').attr('src', bgImg);
		};

		/**
		 * 随机数
		 */
		randomNum = function (minNum, maxNum) {
			switch (arguments.length) {
				case 1:
					return parseInt(Math.random() * minNum + 1);
					break;
				case 2:
					return parseInt(Math.random() * (maxNum - minNum + 1) + minNum);
					break;
				default:
					return 0;
					break;
			}
		};
	}
})(jQuery);