﻿ //根据 cookie 中的 值 是否为空判断是通过获取现有的  cookie 中的值还是 ajax 取值
 function judgeCookieOrAjaxReqData(value,_container)
 {
	var srcPrefix = "";
	var prefix ="";
	var games = "";
	var tagId = "gamelist";
	
	value = deletedSpace(value);
	
	switch(value)
	{
		case "热门游戏":
			prefix = "hotG";
			srcPrefix = "hot";
			break;
		case "免交易费":
			prefix = "freeG";
			srcPrefix = "free";
			break;
		default:
			prefix = value;
			srcPrefix = prefix;
			break;
	}
	
	tagId += srcPrefix;
	
	var tagObj = document.getElementById(tagId);
	if(tagObj && tagObj.innerHTML !="")
	{
		return;
	}
	else
	{
		//从全局变量中获取对应的值
		var prefixValue = distillDataByPrefix(prefix);
		if(prefixValue || prefixValue=="")
		{
			//get games from cookie
			games = prefixValue;
			//generate games content and adding to container
			generateGamesHTML(srcPrefix,games,_container);
		}
		else
		{
			//get games from ajax
			getDataByCharactor(srcPrefix);
		}
		
	}
 }
function deletedSpace(str)
{
	return str = str.replace(/(^\s*|\s*$)/g,"")
} 
 //通过 变量  或者  Ajax 去获取 所有的游戏公司
 function loadAllCompanys(preTag, container)
 {
	//首先去判断 变量 中是否存在 preTag
	//存在 从 变量 中读取
	//否则 Ajax Request
	var companys ="";
	
	var compsValue = distillDataByPrefix(preTag);
	if(compsValue)
	{
		//从 变量 中读取
		companys = compsValue;
		generateCompanysHTML(preTag,companys,container);
	}
	else
	{
		//Ajax 去获取
		getCmpDataByCharactor(preTag);
	}
 }
 
 
 //根据游戏公司的名称去获取该公司名下的所有游戏
 function loadCompayGames(currentId,value, container)
 {
	var games = "";
	var companyName ="";
	
	var s_id = currentId.replace("tag","");
	var f_id = "divCG" + s_id;
	var targetObj = document.getElementById(f_id);
	if(targetObj && targetObj.innerHTML !="")
	{
		//如果公司下的游戏已加载过，则什么都不做
		return;
	}
	else
	{
		var cmpName = value;
		companyName = escape(cmpName);
		
		var cmpValue = distillCompanyGames('CompG',cmpName);
		
		if(cmpValue)
		{
			//从 变量 中读取，生成 html
			games = cmpValue;
			generateCmpGamesHTML(f_id ,games,container);
		}
		else
		{
			//通过 Ajax 读取, 生成 html
			getCmpGameByCmpName(f_id,companyName);
		}
	}
	
 }
 
 
 //页面在加载时就应把热门游戏下的数据准备好
 function readyHotGamesData(prefix, container)
 {//'热门游戏','divGsContent'
	judgeCookieOrAjaxReqData(prefix, container);
 }
 
 
 //获取每个标签总集
 function distillDataByPrefix(prefix)
 {
	var ret = "";
	
	switch(prefix)
	{
		case "hotG":
			ret = getDetailDatas(prefix);
			break;
		case "freeG":
			ret = getDetailDatas(prefix);
			break;
		case "Cmps":
			ret = getDetailDatas(prefix);
			break;
			ret = getDetailDatas(prefix);
		case "CompG":
			ret = getDetailDatas(prefix);
			break;
		default:
			ret = getDetailDatas(deletedSpace(prefix.toLowerCase()));
			break;
	}
	
	return ret;
 }
 
 
 //提取除  每个标签下的 在页面 js 全局变量中的 对应的所有游戏的组合
 function getDetailDatas(prefix)
 {
	var ret = "";
	
	var allGamesContent = golabelParams;
	
	var m_tagObjs = allGamesContent.split(';');
	if(m_tagObjs)
	{
		for(i=0; i<m_tagObjs.length; i++)
		{
			if(m_tagObjs[i] && m_tagObjs[i] !="")
			{
				var tagObjPrefix = m_tagObjs[i].split(':')[0];
				if(tagObjPrefix)
				{
					if(deletedSpace(tagObjPrefix) == prefix)
					{
						ret = m_tagObjs[i].split(':')[1];
						break;
					}
				}
			}
		}
	}
	
	return ret;
 }
 
 
 //获取游戏公司下的所有的游戏--一次筛选
 function distillCompanyGames(tagName,cmpName)
 {
	var ret = "";
	
	var tagValue = distillDataByPrefix(tagName);
	
	ret = getCmpGamesDetails(cmpName,tagValue);
	
	return ret;
 }
 
 
 //根据游戏公司获取其它的所有的游戏---二次筛选
 function getCmpGamesDetails(cmpName,tagValue)
 {
	var ret = "";
	
	var allValues = tagValue;
	//九城游戏#快乐西游,九城游戏#名将三国OL,九城游戏#魔兽世界,九城游戏#奇迹,九城游戏#奇迹世界,九城游戏#卓越之剑GE,
	var objCmpGs = allValues.split('&');
	if(objCmpGs)
	{
		for(i=0; i<objCmpGs.length; i++)
		{
			if(objCmpGs[i])
			{
				if(objCmpGs[i] != "")
				{
					var tagCmpNameIns = objCmpGs[i].split(',');
					if(tagCmpNameIns)
					{
						for(j = 0; j<tagCmpNameIns.length; j++)
						{
							var eachGame = tagCmpNameIns[j].split('#');
							if(deletedSpace(eachGame[0]) == deletedSpace(cmpName))
							{
								ret += eachGame[1] + ",";
							}
						}
					}
				}
			}
		}

	}
	return ret;
 }
 
 
 
 //生成 A~Z 标签下的 html 的内容
 function generateGamesHTML(prefix,_games,_container)
 {
	var objContainer = document.getElementById(_container);
	if(objContainer)
	{
		var oDiv = document.createElement('div');
		oDiv.id = "gamelist" + prefix;
		oDiv.style.display = "block";
		
		var oUl = document.createElement('ul');
		oDiv.appendChild(oUl);
		
		var oFragment = document.createDocumentFragment();
		
		//用来存放所有的A~Z标签的非热门游戏的A标签
		var oNHotAFragment = document.createDocumentFragment();
		
		var m_games = _games.split(',');
		if(m_games)
		{
			for(i=0; i<m_games.length; i++)
			{
				var oLi = document.createElement("li");
				var oA =  document.createElement("a");
				
				//不是热门游戏的 li, a 的集合
				var oNHotLi = document.createElement("li");
				var oNHotA = document.createElement("a");
				
				
				if(m_games[i] != "")
				{
					if(prefix=="hot")
					{//热门游戏的内容
						oA.href ="javascript:sG('" + deletedSpace(m_games[i]) + "');";
						oA.title = deletedSpace(m_games[i]);
						oA.innerHTML = deletedSpace(m_games[i]);
						oA.style.color = '#ff6600';
						oA.onmouseover = function(){changeAColor(event);};
						oA.onmouseout = function(){changeAColor(event);};
						
						oLi.appendChild(oA);
						oFragment.appendChild(oLi);
					}
					else
					{//A~Z 标签下的内容
						var mIsHotGame = m_games[i].split('#');
						if(mIsHotGame[0] != "" && mIsHotGame[0]=='h')
						{
							oA.href ="javascript:sG('" + deletedSpace(mIsHotGame[1]) + "');";
							oA.title = deletedSpace(mIsHotGame[1]);
							oA.innerHTML = deletedSpace(mIsHotGame[1]);
							oA.style.color = '#ff6600';
							oA.onmouseover = function(){changeAColor(event);};
							oA.onmouseout = function(){changeAColor(event);};
							
							oLi.appendChild(oA);
							oFragment.appendChild(oLi);
						}
						else
						{
							//先添加热门游戏的内容，最后再加载这部分的内容
							if(m_games[i] != "")
							{
								oNHotA.href ="javascript:sG('" + deletedSpace(m_games[i]) + "');";
								oNHotA.title = deletedSpace(m_games[i]);
								oNHotA.innerHTML = deletedSpace(m_games[i]);
								oNHotLi.appendChild(oNHotA);
								oNHotAFragment.appendChild(oNHotLi);
							}
						}
					}
				}
				
			}
		}
		
		//finally, add fragments  to container
		oUl.appendChild(oFragment);
		
		//添加非热门的,这样的话就可以实现所有的热门游戏排列在前,非热门的游戏在后
		oUl.appendChild(oNHotAFragment);
		
		objContainer.appendChild(oDiv);
	}
 }
 
 //生成所有的游戏公司的 html 
 function generateCompanysHTML(prefix,_games,_container)
 {
	var objContainer = document.getElementById(_container);
	var oUl = document.createElement('ul');

	if(objContainer)
	{
		var m_collection = _games.split(",");
		if(m_collection)
		{
			for(i=0; i<m_collection.length; i++)
			{
				if(m_collection[i] != "")
				{
					var oLi = document.createElement('li');
					oLi.id = "tag" + i;
					oLi.className = 'seaMenu_off';
					oLi.innerHTML = deletedSpace(m_collection[i]);
					oLi.onclick = function(){chooseCopTag(this);};
					oUl.appendChild(oLi);
				}
			}
		}
		//if the container exsit, then add oui element to it.
		objContainer.appendChild(oUl);
	}
 }
 
 //生成游戏公司名下的所有游戏的 html
 function generateCmpGamesHTML(contentId,_games,_container)
 {
	var objContainer = document.getElementById(_container);
	if(objContainer)
	{
		var oDiv = document.createElement('div');
		oDiv.id = contentId;
		oDiv.style.display = "block";
		
		var oUl = document.createElement('ul');
		oDiv.appendChild(oUl);
		
		var oFragment = document.createDocumentFragment();
		
		var m_games = _games.split(',');
		if(m_games)
		{
			for(i=0; i<m_games.length; i++)
			{
				var oLi = document.createElement("li");
				
				var oA =  document.createElement("a");
			
				if(m_games[i] != "")
				{
					oA.title = deletedSpace(m_games[i]);
					oA.href = "javascript:sG('" + deletedSpace(m_games[i]) + "');";
					oA.innerHTML = deletedSpace(m_games[i]);	
					
					oLi.appendChild(oA);
					oFragment.appendChild(oLi);
				}
			}
		}
		oUl.appendChild(oFragment);
		objContainer.appendChild(oDiv);
	}
 }
 
 
