document.domain='qq.com';

var CAntiaddiction = new function()
{
	_c = this;
	
	_c._timer_heartbeat = 0;
	_c._open_flag = 0;
	_c._level = 0;
	_c._gaid = 0;
	_c._last_gametime = 0;
	_c._audit = 0;	

	_c.GetAppID = function()
	{
		var api = window.GameAPI;
		var params = api.Aux.get_url_param();
		if (typeof(params['appid']) == "undefined" )
		{
			return -1;
		}
		
		return api.Aux.str2int(params['appid']);	
	}
	
	_c.GetUin = function()
	{
		var name='uin';
		var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
		var tmp = "";
		if(arr != null)
		{
			tmp = unescape(arr[2]);
			for (var i=0; i<tmp.length; i++)
			{
				if (tmp.charAt(i) < '1' || tmp.charAt(i) > '9')
					continue;
				
				tmp = tmp.substr(i);
				break;
			}
		}	

		return parseInt(tmp);		
	}
	
	_c.Register = function(callback)
	{	
		if (typeof(callback) == 'function')
		{
			_c.GameCallBack = callback;
		}
	
		var TIME_60M = 60*60;
		var TIME_120M = 60*120;
		var TIME_180M = 60*180;
		var TIME_210M = 60*210;
		var TIME_240M = 60*240;
		var TIME_270M = 60*270;
		var TIME_300M = 60*300;
		var TIME_INTERVAL_AFTER_300M = 60*15;
		
		if (_c._audit == 1)		// 成年人,不受限制,防止有些游戏在用户认证过之后不会自己更改经验值
			_c.UpdateRate(1);	// 			
		else if(_c._last_gametime >= TIME_300M) 
			_c.UpdateRate(0);
		else if(_c._last_gametime >= TIME_180M)
			_c.UpdateRate(0.5);
		else
			_c.UpdateRate(1);		
	}
	
	_c.UpdateRate = function(rate)
	{
		if (typeof(_c.GameCallBack) == 'function')
		{
			_c.GameCallBack(rate);
		}
	}
	
	_c.Process = function(cur_gametime)
	{
		if (_c._audit == 1)		// 成年人,不受限制
		{
			clearInterval(_c._timer_heartbeat);	// kill timer
			_c.UpdateRate(1);	// 用户游戏中途认证通过，经验值恢复
			return;
		}
	
		var TIME_60M = 60*60;
		var TIME_120M = 60*120;
		var TIME_180M = 60*180;
		var TIME_210M = 60*210;
		var TIME_240M = 60*240;
		var TIME_270M = 60*270;
		var TIME_300M = 60*300;
		var TIME_INTERVAL_AFTER_300M = 60*15;
		
		if (_c._last_gametime > cur_gametime)
		{
			_c._last_gametime = cur_gametime - 60*5;
			if (_c._last_gametime < 0)
				_c._last_gametime = 0;
		}
		
		if (_c._level <= 1)	// 1级
		{
			if (cur_gametime >= TIME_180M && _c._last_gametime < TIME_180M)	// 3h
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + ",3小时了");
				_c._last_gametime = cur_gametime;
				_c.UpdateRate(0.5);
				_c.ShowAntiaddictionDlg(3, (_c._audit==2 ? 1 : 0));	// audit 2 为无身份资料，标明用户未登记				
			}
			else if (cur_gametime >= TIME_300M && _c._last_gametime < TIME_300M)	// 5h
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + ",5小时了");
				_c._last_gametime = cur_gametime;
				_c.UpdateRate(0);		
				_c.ShowAntiaddictionDlg(4, (_c._audit==2 ? 1 : 0));				
				
				clearInterval(_c._timer_heartbeat);	// kill timer
			}
		}
		else	// 2级
		{
			if (cur_gametime >= TIME_60M && _c._last_gametime < TIME_60M)	// 1h
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + ",1小时了");
				_c._last_gametime = cur_gametime;
				_c.ShowAntiaddictionDlg(1, (_c._audit==2 ? 1 : 0));				
			}
			else if (cur_gametime >= TIME_120M && _c._last_gametime < TIME_120M)	// 2h
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + ",2小时了");
				_c._last_gametime = cur_gametime;
				_c.ShowAntiaddictionDlg(2, (_c._audit==2 ? 1 : 0));				
			}
			else if (cur_gametime >= TIME_180M && _c._last_gametime < TIME_180M)	// 3h
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + ",3小时了");
				_c._last_gametime = cur_gametime;				
				_c.UpdateRate(0.5);
				_c.ShowAntiaddictionDlg(3, (_c._audit==2 ? 1 : 0));
			}			
			else if (cur_gametime >= TIME_210M && _c._last_gametime < TIME_210M)	// 210m
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + ",210分钟了");
				_c._last_gametime = cur_gametime;
				_c.UpdateRate(0.5);
				_c.ShowAntiaddictionDlg(3, (_c._audit==2 ? 1 : 0));
			}						
			else if (cur_gametime >= TIME_240M && _c._last_gametime < TIME_240M)	// 240m
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + ",240分钟了");
				_c._last_gametime = cur_gametime;
				_c.UpdateRate(0.5);				
				_c.ShowAntiaddictionDlg(3, (_c._audit==2 ? 1 : 0));
			}									
			else if (cur_gametime >= TIME_270M && _c._last_gametime < TIME_270M)	// 270m
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + ",270分钟了");
				_c._last_gametime = cur_gametime;
				_c.UpdateRate(0.5);				
				_c.ShowAntiaddictionDlg(3, (_c._audit==2 ? 1 : 0));
			}												
			else if (cur_gametime >= TIME_300M && _c._last_gametime < TIME_300M)	// 300m
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + ",300分钟了");
				_c._last_gametime = cur_gametime;
				_c.UpdateRate(0);
				_c.ShowAntiaddictionDlg(4, (_c._audit==2 ? 1 : 0));				
			}															
			else if (_c._last_gametime >= TIME_300M && cur_gametime - _c._last_gametime >= TIME_INTERVAL_AFTER_300M)	// 15m 
			{
				// alert("audit:" + _c._audit + ",level:" + _c._level + "," + (cur_gametime/60) + "分钟了");
				_c._last_gametime = cur_gametime;
				_c.UpdateRate(0);
				_c.ShowAntiaddictionDlg(4, (_c._audit==2 ? 1 : 0));				
			}
		}		
	}
	
	_c.StartAntiaddictionCallback = function(result)
	{
		if (result['ret'] != 0)
		{
			return;
		}
		_c._audit = result['audit'];
		_c._last_gametime = result['gametime'];		
		
		if (_c._audit != 1)	// 不是成年人（即未认证或未成年人）
		{		
			_c.SendAntiaddictionHeartbeatReq();
			_c._timer_heartbeat = setInterval(function() 
						{
							_c.SendAntiaddictionHeartbeatReq();
						}, 
						300000);
		}
		else
		{
			_c.UpdateRate(1);	// 启动的时候，对于成年人，不做经验限制
		}
	}
		
	_c.SendAntiaddictionStartReq = function()
	{
		window._Callback = _c.StartAntiaddictionCallback;
		
		var cgi = window.location.protocol + "//fcm.ieodopen.qq.com/csec/fcm_gamestart_req?callback=?&platform=6&appid=" + _c._gaid + "&uin=" + _c.GetUin() + "&g_tk=";		
		$.getJSON(cgi, null, null);
	}
	
	_c.AntiaddictionHeartbeatCallback = function(result)
	{
		if (result['ret'] != 0)
		{
			return;
		}
		
		_c._audit = result['audit'];
		//_c._last_gametime = result['gametime'];		
		
		_c.Process(result['gametime']);
	}
	
	_c.SendAntiaddictionHeartbeatReq = function()
	{
		window._Callback = _c.AntiaddictionHeartbeatCallback;
		
		var cgi = window.location.protocol + "//fcm.ieodopen.qq.com/csec/fcm_heartbeat_req?callback=?&platform=6&appid=" + _c._gaid + "&uin=" + _c.GetUin() + "&g_tk=";		
		$.getJSON(cgi, null, null);
	}
		
	_c.StartAntiaddiction = function()
	{
		var appid = _c.GetAppID();
		var cgi = window.location.protocol + "//lobby.minigame.qq.com/cgi-bin/qqgame_get_antiaddiction_info?callback=?&appid=" + appid;
		$.getJSON(cgi, {},function(data)
		{
			switch(data['result'])
			{
				case 0:	
					if (0 != data['open_flag'])	// 开启防沉迷
					{
						_c._open_flag = data['open_flag'];
						_c._level = data['level'];
						_c._gaid = data['gaid'];
						_c.SendAntiaddictionStartReq();
					}
				break;
				default:;
			}
		});
	}
	
	_c.ShowAntiaddictionDlg = function(msg_type, show_reg)
	{
		var h = 200;
		var w = 510;
		var doc_obj = $(document);
		var top = doc_obj.scrollTop() + (doc_obj.height() - h)/2 - 10;
		var left = doc_obj.scrollLeft() + (doc_obj.width() - w)/2;
		
		var url=window.location.protocol + "//qqgameplatcdn.qq.com/social_hall/antiaddiction_notice.html?msg_type=" + msg_type + "&show_reg=" + show_reg;
		
		var html = "";
		html += "<div id=\"idDivAntiaddiction\" style=\"position:absolute;width:" + w +"px;height:" + h + "px;top:" +  top + "px;left:" + left + "px;z-index:99;\">";
		html += "<iframe id=\"idIframeAntiaddiction\" width=\"" + w + "\" height=\"" + h + "\" frameborder=\"0\" scrolling=\"no\" allowTransparency=\"true\" src=\"" + url + "\">";
		html += "</iframe>";
		html += "</div>";
		
		$("#idDivAntiaddiction").remove();	// 先remove
		$("body").append(html);
		
		window.closeAntiaddictionNoticeDlg = function()
		{
			$("#idDivAntiaddiction").remove();
		}
	}
}

$(function()
{
	CAntiaddiction.StartAntiaddiction();
});
