mirror of https://github.com/Mabbs/mabbs.github.io
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							482 lines
						
					
					
						
							15 KiB
						
					
					
				
			
		
		
	
	
							482 lines
						
					
					
						
							15 KiB
						
					
					
				var home_Path = document.location.protocol +'//' + window.document.location.hostname +'/'; | 
						|
 | 
						|
var userAgent = window.navigator.userAgent.toLowerCase(); | 
						|
console.log(userAgent); | 
						|
var norunAI = [ "android", "iphone", "ipod", "ipad", "windows phone"]; | 
						|
var norunFlag = false; | 
						|
 | 
						|
 | 
						|
for(var i=0;i<norunAI.length;i++){ | 
						|
	if(userAgent.indexOf(norunAI[i]) > -1){ | 
						|
		norunFlag = true; | 
						|
		break; | 
						|
	} | 
						|
} | 
						|
 | 
						|
if(!window.WebGLRenderingContext){ | 
						|
	norunFlag = true; | 
						|
} | 
						|
 | 
						|
if(!norunFlag){ | 
						|
	var hitFlag = false; | 
						|
	var AIFadeFlag = false; | 
						|
	var liveTlakTimer = null; | 
						|
	var sleepTimer_ = null; | 
						|
	var AITalkFlag = false; | 
						|
	var talkNum = 0; | 
						|
	(function (){ | 
						|
		function renderTip(template, context) { | 
						|
			var tokenReg = /(\\)?\{([^\{\}\\]+)(\\)?\}/g; | 
						|
			return template.replace(tokenReg, function (word, slash1, token, slash2) { | 
						|
				if (slash1 || slash2) { | 
						|
					return word.replace('\\', ''); | 
						|
				} | 
						|
				var variables = token.replace(/\s/g, '').split('.'); | 
						|
				var currentObject = context; | 
						|
				var i, length, variable; | 
						|
				for (i = 0, length = variables.length; i < length; ++i) { | 
						|
					variable = variables[i]; | 
						|
					currentObject = currentObject[variable]; | 
						|
					if (currentObject === undefined || currentObject === null) return ''; | 
						|
				} | 
						|
				return currentObject; | 
						|
			}); | 
						|
		} | 
						|
		 | 
						|
		String.prototype.renderTip = function (context) { | 
						|
			return renderTip(this, context); | 
						|
		}; | 
						|
		 | 
						|
		var re = /x/; | 
						|
		re.toString = function() { | 
						|
			showMessage('哈哈,你打开了控制台,是想要看看我的秘密吗?', 5000); | 
						|
			return ''; | 
						|
		}; | 
						|
		 | 
						|
		$(document).on('copy', function (){ | 
						|
			showMessage('你都复制了些什么呀,转载要记得加上出处哦~~', 5000); | 
						|
		}); | 
						|
		 | 
						|
		function initTips(){ | 
						|
			$.ajax({ | 
						|
				cache: true, | 
						|
				url: message_Path+'message.json', | 
						|
				dataType: "json", | 
						|
				success: function (result){ | 
						|
					$.each(result.mouseover, function (index, tips){ | 
						|
						$(tips.selector).mouseover(function (){ | 
						|
							var text = tips.text; | 
						|
							if(Array.isArray(tips.text)) text = tips.text[Math.floor(Math.random() * tips.text.length + 1)-1]; | 
						|
							text = text.renderTip({text: $(this).text()}); | 
						|
							showMessage(text, 3000); | 
						|
							talkValTimer(); | 
						|
							clearInterval(liveTlakTimer); | 
						|
							liveTlakTimer = null; | 
						|
						}); | 
						|
						$(tips.selector).mouseout(function (){ | 
						|
							showHitokoto(); | 
						|
							if(liveTlakTimer == null){ | 
						|
								liveTlakTimer = window.setInterval(function(){ | 
						|
									showHitokoto(); | 
						|
								},15000); | 
						|
							}; | 
						|
						}); | 
						|
					}); | 
						|
					$.each(result.click, function (index, tips){ | 
						|
						$(tips.selector).click(function (){ | 
						|
							if(hitFlag){ | 
						|
								return false | 
						|
							} | 
						|
							hitFlag = true; | 
						|
							setTimeout(function(){ | 
						|
								hitFlag = false; | 
						|
							},8000); | 
						|
							var text = tips.text; | 
						|
							if(Array.isArray(tips.text)) text = tips.text[Math.floor(Math.random() * tips.text.length + 1)-1]; | 
						|
							text = text.renderTip({text: $(this).text()}); | 
						|
							showMessage(text, 3000); | 
						|
						}); | 
						|
						clearInterval(liveTlakTimer); | 
						|
						liveTlakTimer = null; | 
						|
						if(liveTlakTimer == null){ | 
						|
							liveTlakTimer = window.setInterval(function(){ | 
						|
								showHitokoto(); | 
						|
							},15000); | 
						|
						}; | 
						|
					}); | 
						|
				} | 
						|
			}); | 
						|
		} | 
						|
		initTips(); | 
						|
	 | 
						|
		var text; | 
						|
		if(document.referrer !== '' && document.referrer.split('/')[2] !== window.location.host ){ | 
						|
			var referrer = document.createElement('a'); | 
						|
			referrer.href = document.referrer; | 
						|
			text = '嗨!来自 <span style="color:#0099cc;">' + referrer.hostname + '</span> 的朋友!'; | 
						|
			var domain = referrer.hostname.split('.')[1]; | 
						|
			if (domain == 'baidu') { | 
						|
				text = '嗨! 来自 百度搜索 的朋友!<br>欢迎访问<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>'; | 
						|
			}else if (domain == 'so') { | 
						|
				text = '嗨! 来自 360搜索 的朋友!<br>欢迎访问<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>'; | 
						|
			}else if (domain == 'google') { | 
						|
				text = '嗨! 来自 谷歌搜索 的朋友!<br>欢迎访问<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>'; | 
						|
			} | 
						|
		}else { | 
						|
			if (window.location.href == home_Path) { //主页URL判断,需要斜杠结尾 | 
						|
				var now = (new Date()).getHours(); | 
						|
				if (now > 23 || now <= 5) { | 
						|
					text = '你是夜猫子呀?这么晚还不睡觉,明天起的来嘛?'; | 
						|
				} else if (now > 5 && now <= 7) { | 
						|
					text = '早上好!一日之计在于晨,美好的一天就要开始了!'; | 
						|
				} else if (now > 7 && now <= 11) { | 
						|
					text = '上午好!工作顺利嘛,不要久坐,多起来走动走动哦!'; | 
						|
				} else if (now > 11 && now <= 14) { | 
						|
					text = '中午了,工作了一个上午,现在是午餐时间!'; | 
						|
				} else if (now > 14 && now <= 17) { | 
						|
					text = '午后很容易犯困呢,今天的运动目标完成了吗?'; | 
						|
				} else if (now > 17 && now <= 19) { | 
						|
					text = '傍晚了!窗外夕阳的景色很美丽呢,最美不过夕阳红~~'; | 
						|
				} else if (now > 19 && now <= 21) { | 
						|
					text = '晚上好,今天过得怎么样?'; | 
						|
				} else if (now > 21 && now <= 23) { | 
						|
					text = '已经这么晚了呀,早点休息吧,晚安~~'; | 
						|
				} else { | 
						|
					text = '嗨~ 快来逗我玩吧!'; | 
						|
				} | 
						|
			}else { | 
						|
				text = '欢迎阅读<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>'; | 
						|
			} | 
						|
		} | 
						|
		showMessage(text, 12000); | 
						|
	})(); | 
						|
	 | 
						|
	liveTlakTimer = setInterval(function(){ | 
						|
		showHitokoto(); | 
						|
	},15000); | 
						|
	 | 
						|
	function showHitokoto(){ | 
						|
		if(sessionStorage.getItem("Sleepy")!=="1"){ | 
						|
			if(!AITalkFlag){ | 
						|
				$.getJSON('https://hitokoto.mayx.eu.org/',function(result){ | 
						|
					talkValTimer(); | 
						|
					showMessage(result.hitokoto, 0); | 
						|
				}); | 
						|
			} | 
						|
		}else{ | 
						|
			hideMessage(0); | 
						|
			if(sleepTimer_==null){ | 
						|
				sleepTimer_ = setInterval(function(){ | 
						|
					checkSleep(); | 
						|
				},200); | 
						|
			} | 
						|
			console.log(sleepTimer_); | 
						|
		} | 
						|
	} | 
						|
	 | 
						|
	function checkSleep(){ | 
						|
		var sleepStatu = sessionStorage.getItem("Sleepy"); | 
						|
		if(sleepStatu!=='1'){ | 
						|
			talkValTimer(); | 
						|
			showMessage('你回来啦~', 0); | 
						|
			clearInterval(sleepTimer_); | 
						|
			sleepTimer_= null; | 
						|
		} | 
						|
	} | 
						|
	 | 
						|
	function showMessage(text, timeout){ | 
						|
		if(Array.isArray(text)) text = text[Math.floor(Math.random() * text.length + 1)-1]; | 
						|
		//console.log('showMessage', text); | 
						|
		$('.message').stop(); | 
						|
		$('.message').html(text); | 
						|
		$('.message').fadeTo(200, 1); | 
						|
		//if (timeout === null) timeout = 5000; | 
						|
		//hideMessage(timeout); | 
						|
	} | 
						|
	function talkValTimer(){ | 
						|
		$('#live_talk').val('1'); | 
						|
	} | 
						|
	 | 
						|
	function hideMessage(timeout){ | 
						|
		//$('.message').stop().css('opacity',1); | 
						|
		if (timeout === null) timeout = 5000; | 
						|
		$('.message').delay(timeout).fadeTo(200, 0); | 
						|
	} | 
						|
	 | 
						|
	function initLive2d (){ | 
						|
		$('#hideButton').on('click', function(){ | 
						|
			if(AIFadeFlag){ | 
						|
				return false; | 
						|
			}else{ | 
						|
				AIFadeFlag = true; | 
						|
				localStorage.setItem("live2dhidden", "0"); | 
						|
				$('#landlord').fadeOut(200); | 
						|
				$('#open_live2d').delay(200).fadeIn(200); | 
						|
				setTimeout(function(){ | 
						|
					AIFadeFlag = false; | 
						|
				},300); | 
						|
			} | 
						|
		}); | 
						|
		$('#open_live2d').on('click', function(){ | 
						|
			if(AIFadeFlag){ | 
						|
				return false; | 
						|
			}else{ | 
						|
				AIFadeFlag = true; | 
						|
				localStorage.setItem("live2dhidden", "1"); | 
						|
				$('#open_live2d').fadeOut(200); | 
						|
				$('#landlord').delay(200).fadeIn(200); | 
						|
				setTimeout(function(){ | 
						|
					AIFadeFlag = false; | 
						|
				},300); | 
						|
			} | 
						|
		}); | 
						|
		$('#youduButton').on('click',function(){ | 
						|
			if($('#youduButton').hasClass('doudong')){ | 
						|
				var typeIs = $('#youduButton').attr('data-type'); | 
						|
				$('#youduButton').removeClass('doudong'); | 
						|
				$('body').removeClass(typeIs); | 
						|
				$('#youduButton').attr('data-type',''); | 
						|
			}else{ | 
						|
				var duType = $('#duType').val(); | 
						|
				var duArr = duType.split(","); | 
						|
				var dataType = duArr[Math.floor(Math.random() * duArr.length)]; | 
						|
 | 
						|
				$('#youduButton').addClass('doudong'); | 
						|
				$('#youduButton').attr('data-type',dataType); | 
						|
				$('body').addClass(dataType); | 
						|
			} | 
						|
		}); | 
						|
		if(talkAPI!==""){ | 
						|
			$('#showInfoBtn').on('click',function(){ | 
						|
				var live_statu = $('#live_statu_val').val(); | 
						|
				if(live_statu=="0"){ | 
						|
					return | 
						|
				}else{ | 
						|
					$('#live_statu_val').val("0"); | 
						|
					$('.live_talk_input_body').fadeOut(500); | 
						|
					AITalkFlag = false; | 
						|
					showHitokoto(); | 
						|
					$('#showTalkBtn').show(); | 
						|
					$('#showInfoBtn').hide(); | 
						|
				} | 
						|
			}); | 
						|
			$('#showTalkBtn').on('click',function(){ | 
						|
				var live_statu = $('#live_statu_val').val(); | 
						|
				if(live_statu=="1"){ | 
						|
					return | 
						|
				}else{ | 
						|
					$('#live_statu_val').val("1"); | 
						|
					$('.live_talk_input_body').fadeIn(500); | 
						|
					AITalkFlag = true; | 
						|
					$('#showTalkBtn').hide(); | 
						|
					$('#showInfoBtn').show(); | 
						|
					 | 
						|
				} | 
						|
			}); | 
						|
			$('#talk_send').on('click',function(){ | 
						|
				var info_ = $('#AIuserText').val(); | 
						|
				var userid_ = $('#AIuserName').val(); | 
						|
				if(info_ == "" ){ | 
						|
					showMessage('写点什么吧!',0); | 
						|
					return; | 
						|
				} | 
						|
				if(userid_ == ""){ | 
						|
					showMessage('聊之前请告诉我你的名字吧!',0); | 
						|
					return; | 
						|
				} | 
						|
				showMessage('思考中~', 0); | 
						|
				$.ajax({ | 
						|
					type: 'POST', | 
						|
					url: talkAPI, | 
						|
					data: { | 
						|
							"info": info_, | 
						|
							"userId": userid_ | 
						|
					}, | 
						|
					success: function(res) { | 
						|
						if(res.intent.code !== 0){ | 
						|
							talkValTimer(); | 
						|
							showMessage('似乎有什么错误,请和站长联系!',0); | 
						|
						}else{ | 
						|
							talkValTimer(); | 
						|
							showMessage(res.results[0].values.text,0); | 
						|
						} | 
						|
						console.log(res); | 
						|
						$('#AIuserText').val(""); | 
						|
						sessionStorage.setItem("live2duser", userid_); | 
						|
					} | 
						|
				}); | 
						|
			}); | 
						|
		}else{ | 
						|
			$('#showInfoBtn').hide(); | 
						|
			$('#showTalkBtn').hide(); | 
						|
			 | 
						|
		} | 
						|
		//获取音乐信息初始化 | 
						|
		var bgmListInfo = $('input[name=live2dBGM]'); | 
						|
		if(bgmListInfo.length == 0){ | 
						|
			$('#musicButton').hide(); | 
						|
		}else{ | 
						|
			var bgmPlayNow = parseInt($('#live2d_bgm').attr('data-bgm')); | 
						|
			var bgmPlayTime = 0; | 
						|
			var live2dBGM_Num = sessionStorage.getItem("live2dBGM_Num"); | 
						|
			var live2dBGM_PlayTime = sessionStorage.getItem("live2dBGM_PlayTime"); | 
						|
			if(live2dBGM_Num){ | 
						|
				if(live2dBGM_Num<=$('input[name=live2dBGM]').length-1){ | 
						|
					bgmPlayNow = parseInt(live2dBGM_Num); | 
						|
				} | 
						|
			} | 
						|
			if(live2dBGM_PlayTime){ | 
						|
				bgmPlayTime = parseInt(live2dBGM_PlayTime); | 
						|
			} | 
						|
			var live2dBGMSrc = bgmListInfo.eq(bgmPlayNow).val(); | 
						|
			$('#live2d_bgm').attr('data-bgm',bgmPlayNow); | 
						|
			$('#live2d_bgm').attr('src',live2dBGMSrc); | 
						|
			$('#live2d_bgm')[0].currentTime = bgmPlayTime; | 
						|
			$('#live2d_bgm')[0].volume = 0.5; | 
						|
			var live2dBGM_IsPlay = sessionStorage.getItem("live2dBGM_IsPlay"); | 
						|
			var live2dBGM_WindowClose = sessionStorage.getItem("live2dBGM_WindowClose"); | 
						|
			if(live2dBGM_IsPlay == '0' && live2dBGM_WindowClose == '0'){ | 
						|
				$('#live2d_bgm')[0].play(); | 
						|
				$('#musicButton').addClass('play'); | 
						|
			} | 
						|
			sessionStorage.setItem("live2dBGM_WindowClose" , '1'); | 
						|
			$('#musicButton').on('click',function(){ | 
						|
				if($('#musicButton').hasClass('play')){ | 
						|
					$('#live2d_bgm')[0].pause(); | 
						|
					$('#musicButton').removeClass('play'); | 
						|
					sessionStorage.setItem("live2dBGM_IsPlay",'1'); | 
						|
				}else{ | 
						|
					$('#live2d_bgm')[0].play(); | 
						|
					$('#musicButton').addClass('play'); | 
						|
					sessionStorage.setItem("live2dBGM_IsPlay",'0'); | 
						|
				} | 
						|
			}); | 
						|
			window.onbeforeunload = function(){  | 
						|
			 	sessionStorage.setItem("live2dBGM_WindowClose" , '0'); | 
						|
				if($('#musicButton').hasClass('play')){ | 
						|
					sessionStorage.setItem("live2dBGM_IsPlay",'0'); | 
						|
				} | 
						|
			}  | 
						|
			document.getElementById('live2d_bgm').addEventListener("timeupdate", function(){ | 
						|
				var live2dBgmPlayTimeNow = document.getElementById('live2d_bgm').currentTime; | 
						|
				sessionStorage.setItem("live2dBGM_PlayTime" , live2dBgmPlayTimeNow ); | 
						|
			}); | 
						|
			document.getElementById('live2d_bgm').addEventListener("ended", function(){ | 
						|
				var listNow = parseInt($('#live2d_bgm').attr('data-bgm')); | 
						|
				listNow ++ ; | 
						|
				if(listNow > $('input[name=live2dBGM]').length-1){ | 
						|
					listNow = 0; | 
						|
				} | 
						|
				var listNewSrc = $('input[name=live2dBGM]').eq(listNow).val(); | 
						|
				sessionStorage.setItem("live2dBGM_Num",listNow); | 
						|
				$('#live2d_bgm').attr('src',listNewSrc); | 
						|
				$('#live2d_bgm')[0].play(); | 
						|
				$('#live2d_bgm').attr('data-bgm',listNow); | 
						|
			}); | 
						|
			document.getElementById('live2d_bgm').addEventListener("error", function(){ | 
						|
				$('#live2d_bgm')[0].pause(); | 
						|
				$('#musicButton').removeClass('play'); | 
						|
				showMessage('音乐似乎加载不出来了呢!',0); | 
						|
			}); | 
						|
		} | 
						|
		//获取用户名 | 
						|
		var live2dUser = sessionStorage.getItem("live2duser"); | 
						|
		if(live2dUser !== null){ | 
						|
			$('#AIuserName').val(live2dUser); | 
						|
		} | 
						|
		//获取位置 | 
						|
		var landL = sessionStorage.getItem("historywidth"); | 
						|
		var landB = sessionStorage.getItem("historyheight"); | 
						|
		if(landL == null || landB ==null){ | 
						|
			landL = '5px' | 
						|
			landB = '0px' | 
						|
		} | 
						|
		$('#landlord').css('left',landL+'px'); | 
						|
		$('#landlord').css('bottom',landB + 'px'); | 
						|
		//移动 | 
						|
		function getEvent() { | 
						|
			return window.event || arguments.callee.caller.arguments[0]; | 
						|
		} | 
						|
		var smcc = document.getElementById("landlord"); | 
						|
		var moveX = 0; | 
						|
		var moveY = 0; | 
						|
		var moveBottom = 0; | 
						|
		var moveLeft = 0; | 
						|
		var moveable = false; | 
						|
		var docMouseMoveEvent = document.onmousemove; | 
						|
		var docMouseUpEvent = document.onmouseup; | 
						|
		smcc.onmousedown = function(){ | 
						|
			var ent = getEvent(); | 
						|
			moveable = true; | 
						|
			moveX = ent.clientX; | 
						|
			moveY = ent.clientY; | 
						|
			var obj = smcc; | 
						|
			moveBottom = parseInt(obj.style.bottom); | 
						|
			moveLeft = parseInt(obj.style.left); | 
						|
			if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ | 
						|
				window.getSelection().removeAllRanges(); | 
						|
			}			 | 
						|
			document.onmousemove = function(){ | 
						|
				if(moveable){ | 
						|
					var ent = getEvent(); | 
						|
					var x = moveLeft + ent.clientX - moveX; | 
						|
					var y = moveBottom +  (moveY - ent.clientY); | 
						|
					obj.style.left = x + "px"; | 
						|
					obj.style.bottom = y + "px"; | 
						|
				} | 
						|
			}; | 
						|
			document.onmouseup = function(){ | 
						|
				if(moveable){ | 
						|
					var historywidth = obj.style.left; | 
						|
					var historyheight = obj.style.bottom; | 
						|
					historywidth = historywidth.replace('px', ''); | 
						|
					historyheight = historyheight.replace('px', ''); | 
						|
					sessionStorage.setItem("historywidth", historywidth); | 
						|
					sessionStorage.setItem("historyheight", historyheight); | 
						|
					document.onmousemove = docMouseMoveEvent; | 
						|
					document.onmouseup = docMouseUpEvent; | 
						|
					moveable = false;  | 
						|
					moveX = 0; | 
						|
					moveY = 0; | 
						|
					moveBottom = 0; | 
						|
					moveLeft = 0; | 
						|
				} | 
						|
			}; | 
						|
		}; | 
						|
	} | 
						|
	$(document).ready(function() { | 
						|
		var AIimgSrc = [ | 
						|
			home_Path + message_Path + "model/histoire/histoire.1024/texture_00.png", | 
						|
			home_Path + message_Path + "model/histoire/histoire.1024/texture_01.png", | 
						|
			home_Path + message_Path + "model/histoire/histoire.1024/texture_02.png", | 
						|
			home_Path + message_Path + "model/histoire/histoire.1024/texture_03.png" | 
						|
		] | 
						|
		var images = []; | 
						|
		var imgLength = AIimgSrc.length; | 
						|
		var loadingNum = 0; | 
						|
		for(var i=0;i<imgLength;i++){ | 
						|
			images[i] = new Image(); | 
						|
			images[i].src = AIimgSrc[i]; | 
						|
			images[i].onload = function(){ | 
						|
				loadingNum++; | 
						|
				if(loadingNum===imgLength){ | 
						|
					var live2dhidden = localStorage.getItem("live2dhidden"); | 
						|
					if(live2dhidden==="0"){ | 
						|
						setTimeout(function(){ | 
						|
							$('#open_live2d').fadeIn(200); | 
						|
						},1300); | 
						|
					}else{ | 
						|
						setTimeout(function(){ | 
						|
							$('#landlord').fadeIn(200); | 
						|
						},1300); | 
						|
					} | 
						|
					setTimeout(function(){ | 
						|
						loadlive2d("live2d", message_Path+"model/histoire/model.json"); | 
						|
					},1000); | 
						|
					initLive2d (); | 
						|
					images = null; | 
						|
				} | 
						|
			} | 
						|
		} | 
						|
	}); | 
						|
}
 | 
						|
 |