자유게시판

훈계에 담긴 하나님의 손길

페이지 정보
profile image
작성자
  • 139.♡.63.104
  • 0건
  • 7,005회
  • 작성일:
본문
훈계는 축복을 가져오는 전조이다.  

',
			STYLE: '.playBox_thx #player.player,.playBox_thx #player.player object{min-height:' + Math.max(Global.innerHeight * 0.6, 580) + 'px !important}.tips_container{position:absolute;top:3em;padding:1em 2em;right:50px;color:green;opacity:0.4;background:#ddd;z-index:999999}.tips_container:hover{opacity:0.8}.tips_container .tips_toggleWide{color:red;cursor:pointer;display:none}.tips_close{position:absolute;right:3px;top:3px}',
			NODEINSERTED_HACK: '@-moz-keyframes nodeInserted{from{opacity:0.99;}to{opacity:1;}}@-webkit-keyframes nodeInserted{from{opacity:0.99;}to{opacity:1;}}@-o-keyframes nodeInserted{from{opacity:0.99;}to{opacity:1;}}@keyframes nodeInserted{from{opacity:0.99;}to{opacity:1;}}embed,object{animation-duration:.001s;-ms-animation-duration:.001s;-moz-animation-duration:.001s;-webkit-animation-duration:.001s;-o-animation-duration:.001s;animation-name:nodeInserted;-ms-animation-name:nodeInserted;-moz-animation-name:nodeInserted;-webkit-animation-name:nodeInserted;-o-animation-name:nodeInserted;}',
			TOGGLE_BTN: '.tips_container .tips_toggleWide'
		};
		var DONE = [];
		var UTIL = {
			addCss: function (str) {
				var style = document.createElement('style');
				style.textContent = str;
				document.head.appendChild(style);
			},
			procFlash: function (elem) {
				if (DONE.indexOf(elem) !== -1) {
					return;
				}
				if (this.reloadFlash(elem)) {
					DONE.push(elem);
				}
			},
			reloadFlash: function (elem) {
				var attrs = ['data', 'src'];
				var players = CONSTANTS.PLAYERS;
				var reloaded = false;
				UTIL.forEach(attrs, function (attr) {
					UTIL.forEach(players, function (player) {
						var find = player.find;
						var replace = player.replace;
						var value = elem[attr];
						var movie = elem.querySelector('param[name="movie"]');
						if(movie&&movie.value){
							movie.value = movie.value.replace(find,replace);
						}
						if (value && find.test(value)) {
							var nextSibling = elem.nextSibling;
							var parentNode = elem.parentNode;
							var clone = elem.cloneNode(true);
							clone[attr] = value.replace(find, replace);
							parentNode.removeChild(elem);
							parentNode.insertBefore(clone, nextSibling);
							//Baidu tieba shit.
							if(getComputedStyle(clone).display==='none'){
								clone.style.display='block';
							}
							reloaded = true;
						}
					});
				});
				return reloaded;
			},
			forEach: function (arr, callback) {
				if (this.isArrayLike(arr)) {
					if (Array.prototype.forEach) {
						Array.prototype.forEach.call(arr, callback);
					} else {
						var i = 0;
						for (i = 0; i < arr.length; ++i) {
							callback.call(arr[i], arr[i]);
						}
					}
				}
			},
			isArrayLike: function (obj) {
				if (typeof obj !== 'object') {
					return false;
				}
				var types = ['Array', 'NodeList', 'HTMLCollection'];
				var i = 0;
				for (i = 0; i < types.length; ++i) {
					if (Object.prototype.toString.call(obj).indexOf(types[i]) !== -1) {
						return true;
					}
				}
				return false;
			}
		};
		var STORE;
		(function(){
			var isStorage = true;
			if(!Global.localStorage){
				isStorage = false;
			}else{
				try{
					var key = String(Math.random());
					localStorage.setItem(key,'test');
					if(localStorage.getItem(key)!=='test'){
						throw 'not equal';
					}
					localStorage.removeItem(key);
				}catch(e){
					isStorage=false;
				}
			}
			STORE = {
				getItem: function(key){
					if(isStorage){
						return localStorage.getItem(key);
					}
				},
				setItem: function(key, value){
					if(isStorage){
						localStorage.setItem(key, value);
					}
				}
			};
		})();
		function init() {

			function onAnimationStartHandler(e) {
				if (e.animationName === 'nodeInserted') {
					var target = e.target;
					if (target.nodeType === 1 && /OBJECT|EMBED|IFRAME/ig.test(target.nodeName)) {
						UTIL.procFlash(target);
					}
				}
			}


			UTIL.addCss(CONSTANTS.NODEINSERTED_HACK);

			/*Chrome*/
			document.body.addEventListener('webkitAnimationEnd', onAnimationStartHandler, false);

		}
		function tips() {
			var holder = document.body.querySelector(CONSTANTS.TIPS_HOLDER);
			if (holder) {
				var div = document.createElement('div');
				if (document.defaultView.getComputedStyle(holder, null).getPropertyValue('position') !== 'relative') {
					div.style.position = 'relative';
				}
				div.innerHTML = CONSTANTS.TIPS;
				div.querySelector('.tips_close').addEventListener('click',function(e){
					if(e.preventDefault){
						e.preventDefault();
					}
					div.parentNode.removeChild(div);
					return false;
				},false);
				holder.appendChild(div);
				UTIL.addCss(CONSTANTS.STYLE);
			}
		}
		function share(elem) {
			var pairs = CONSTANTS.SHARES;
			UTIL.forEach(pairs, function (item) {
				elem.value = elem.value.replace(item.find, item.replace);
			});
		}
		function setTHX(opt){
			var player = document.querySelector('object#movie_player');
			var parent = document.body.querySelector('.playBox');
			var wide = document.body.querySelector('.playBox_thx');
			if(opt&&player){
				try{
					player.setTHX(opt);
				}catch(e){}
				switch(opt){
					case 'on':
						if (parent && !wide) {
							parent.className += ' playBox_thx';
						}
						break;
					case 'off':
						if (parent && wide) {
							parent.className = 'playBox';
						}
						break;
				}
			}
		}
		var CONTROLLER = [
			{
				host: '.',
				fn: function () {
					init();
				}
			},
			{
				host: 'youku.com',
				fn: function () {
					var matches = document.body.querySelectorAll(CONSTANTS.SHARE_DOM);
					UTIL.forEach(matches, share);

					tips();

					if(STORE.getItem('THX')==='on'){
						setTHX(STORE.getItem('THX'));
					}

					var toggle = document.body.querySelector(CONSTANTS.TOGGLE_BTN);
					toggle.style.display='inline';
					toggle.addEventListener('click',function(){
						STORE.setItem('THX',STORE.getItem('THX')==='on'?'off':'on');
						setTHX(STORE.getItem('THX'));
					},false);
				}
			},
			{
				host: 'tudou.com',
				fn: function () {
					function hack(){
						var TUI_copyToClip = Global.TUI&&Global.TUI.copyToClip;
						if(TUI_copyToClip&&TUI_copyToClip.toString().indexOf('arguments')===-1){
							Global.TUI.copyToClip = function () {
								var matches = document.body.querySelectorAll(CONSTANTS.SHARE_DOM);
								UTIL.forEach(matches, share);
								TUI_copyToClip.apply(Global.TUI, arguments);
							};
							clearInterval(inter);
						}
					}
					tips();
					var tudouPlayer = document.body.querySelector('#playerObject');
					var normalDom = document.querySelector('.normal');
					if (tudouPlayer && normalDom) {
						normalDom.className = normalDom.className.replace('normal','widescreen');
					}
					var inter = setInterval(hack,100);
					try{
						Global.playerEx.event.fire('scale',[true]);
					}catch(e){}
				}
			}
		];
		var host = location.host;
		function PROC(item) {
			if (host.indexOf(item.host) !== -1) {
				item.fn();
				return;
			}
		}
		UTIL.forEach(CONTROLLER, PROC);
	})(window);        
댓글목록
등록된 댓글이 없습니다.