//***************************************************************/
//
// ad style type
//
//***************************************************************/
var TemplateTxt=0;
var TemplateImg=1;
var TemplateImgTxt=2;
var TemplateFlash=3;
var TemplateVedio=4;
var TemplateTxtTitle=5;

var Template2TxtTitle=5;
var Template2Img=1;
var Template2ImgTxt=2;
var Template2Flash=3;
var Template2Vedio=4;


//***************************************************************/
//
// click stat type
//
//***************************************************************/
var ClickTypeDirect=1000;
var ClickTypeText=1;
var ClickTypeImg=4;
var ClickTypeImgTxtTxt=2;
var ClickTypeImgTxtImg=3;
var ClickTypeFlash=5;
var ClickTypeVedio=6;
var ClickTypeTxtTitle=50;


//***************************************************************/
//
// browser type
//
//***************************************************************/
var IETYPE = 0;
var FIREFOXTYPE = 1;
var OTHERBROWSETYPE = 3;

function GetBrowserType()
{
	if (navigator.userAgent.indexOf("MSIE") > 0) 
	{
		return IETYPE;
	}
	else if (navigator.userAgent.indexOf("Firefox") > 0)
	{
		return FIREFOXTYPE;
	}
	return OTHERBROWSETYPE;
}
var g_browserType = GetBrowserType();


//***************************************************************/
//
// peerid
//
//***************************************************************/
function getPeerid()
{
	var peeridobj;
	try
	{
		peeridobj = new ActiveXObject("Peerid.GerneralPeerID");
	}
	catch (e)
	{}

	var peerId;
	if (peeridobj != null && typeof(peeridobj) != "undefined")
	{
		//peerId = peeridobj.peerid_old;
		peerId = peeridobj.peerid_new;
		//peerId = peeridobj.peerid_complicate;
	}

	return peerId;
}
var g_peerId = getPeerid();
if (typeof(g_peerId) == "undefined" || g_peerId == "")
{
	g_peerId = "";
}


//***************************************************************/
//
// 从脚本url输入的参数,也可以通过脚本在外部赋值
//
//***************************************************************/
var g_siteId;
var g_channelId;
var g_selfChannelId;
var g_platform;

var g_replaceId;
var g_replaceClass;
var g_replaceTag;

var g_allianceStatUrl;
var g_allianceStatPvReferUrl;
var g_allianceStatPvUrl;

var g_leiyanHref;

var g_ifTest;

var g_disableStyle;	// 屏蔽广告类型
var g_disableClientStyle;	// 屏蔽客户类型
var g_keyColor;	// 关键词颜色
var g_enableIcon;	// 屏蔽图标
var g_matchLength;	// 关键字匹配间隔距离
var g_multyPage;	// 是否分多页

var g_encodeType;


var tmpEyesObj = document.getElementById("leiyanscript");
if (typeof(tmpEyesObj) != "undefined")
{
	var tmpurl = tmpEyesObj.src;
	var tmpArr = initParameters(tmpurl);

	if (tmpurl.indexOf("_utf8") != -1)
	{
		g_encodeType = "UTF-8";
	}
	
	g_siteId = tmpArr['site'];
	g_channelId = tmpArr['channelid'];
	g_selfChannelId = tmpArr['selfChannelId'];
	g_platform = tmpArr['platform'];
	
	g_replaceId = tmpArr['replaceid'];
	g_replaceClass = tmpArr['replaceclass'];
	g_replaceTag = tmpArr['replacetag'];
	
	g_allianceStatUrl = (tmpArr['alliancestaturl']);
	g_allianceStatPvReferUrl = (tmpArr['alliancestatpvreferurl']);
	g_allianceStatPvUrl = (tmpArr['alliancestatpvurl']);
	
	g_leiyanHref = tmpArr['leiyancachehref'];
	
	g_ifTest = tmpArr['testflag'];
	
	g_disableStyle = tmpArr['disablestyle'];
	g_disableClientStyle = tmpArr['disableclientstyle'];
	g_keyColor = tmpArr['keycolor'];
	g_enableIcon = tmpArr['enableicon'];
	g_matchLength = tmpArr['matchlength'];
	g_multyPage = tmpArr['multyPage'];
}
g_replaceId = (typeof(g_replaceId) == "undefined") ? -1 : g_replaceId;
g_replaceClass = (typeof(g_replaceClass) == "undefined") ? -1 : g_replaceClass;
g_replaceTag = (typeof(g_replaceTag) == "undefined") ? -1 : g_replaceTag;

g_siteId = (typeof(g_siteId) == "undefined") ? "" : g_siteId;
g_channelId = (typeof(g_channelId) == "undefined") ? "" : g_channelId;
g_selfChannelId = (typeof(g_selfChannelId) == "undefined") ? "" : g_selfChannelId;
g_platform = (typeof(g_platform) == "undefined") ? "" : g_platform;

g_ifTest = (typeof(g_ifTest) == "undefined") ? "notest" : "istest";
g_leiyanHref = (typeof(g_leiyanHref) == "undefined") ? window.location.href : g_leiyanHref;

var g_disableStyleArray;
if (typeof(g_disableStyle) != "undefined" && g_disableStyle != "")
{
	g_disableStyleArray = g_disableStyle.split(",");
}
if (typeof(g_disableStyleArray) == "undefined" || g_disableStyleArray == "")
{
	g_disableStyleArray = "";
}

var g_disableClientStyleArray;
if (typeof(g_disableClientStyle) != "undefined" && g_disableClientStyle != "")
{
	g_disableClientStyleArray = g_disableClientStyle.split(",");
}
if (typeof(g_disableClientStyleArray) == "undefined" || g_disableClientStyleArray == "")
{
	g_disableClientStyleArray = "";
}

if (typeof(g_keyColor) == "undefined" || g_keyColor == "")
{
	g_keyColor = "blue";
}
g_keyColor = DecodeUrl(g_keyColor);

if (typeof(g_enableIcon) == "undefined" || g_enableIcon == "")
{
	g_enableIcon = "true";
}

if (typeof(g_matchLength) == "undefined" || g_matchLength == "" || g_matchLength < 200)
{
	g_matchLength = 200;
}

if (typeof(g_multyPage) == "undefined" || g_multyPage == "")
{
	g_multyPage = "true";
}

//这是被替换的关键字的样式
var g_baseReplacStyle = "color:" + g_keyColor + ";text-decoration:underline;cursor:pointer; " + g_keyColor + ";display:inline;float:none;padding:0";
//***************************************************************/
//
// util define
//
//***************************************************************/

var g_preLoadLeiyanCount = 3;

//***************************************************************/
//
// util function
//
//***************************************************************/

// getElementsByName 为了兼容
function GetElementsByName(objname)
{
	var tmparr = document.getElementsByTagName("*");
	var tmparrLen = tmparr.length;
	var objarr = new Array();
	var objarrLen = objname.length;
	for (var i=0; i < tmparrLen; i++)
	{
		for (var j=0; j < objarrLen; j++)
		{
			if (tmparr[i].id == objname[j] || tmparr[i].getAttribute("name") == objname[j])
			{
				objarr[objarr.length] = tmparr[i];
				break;
			}
		}
	}
	return objarr;
}

function GetElementsByClass(objname)
{
	var tmparr = document.getElementsByTagName("*");
	var objarr = new Array();
	var tmparrLen = tmparr.length;
	var objLen = objname.length;
	for (var i=0; i < tmparrLen; i++)
	{
		for (var j=0; j < objLen; j++)
		{
			if (tmparr[i].className == objname[j])
			{
				objarr[objarr.length] = tmparr[i];
				break;
			}
		}
	}
	return objarr;
}

function GetElementsByTags(objname, parentobj)
{
	var tmparr = (typeof(parentobj)=="undefined")?document.getElementsByTagName("*"):parentobj.getElementsByTagName("*");
	var tmparrLen = tmparr.length;
	var objarr = new Array();
	var objarrLen = objname.length;
	for (var i=0; i < tmparrLen; i++)
	{
		for (var j=0; j < objarrLen; j++)
		{
			if (tmparr[i].tagName.toLowerCase() == objname[j].toLowerCase())
			{
				objarr[objarr.length] = tmparr[i];
				break;
			}
		}
	}
	return objarr;
}

function GetElementsByTags2(idobjname, objname, tag)//tag 0:id 1:class
{
        var objList = (tag==1)?GetElementsByClass(idobjname):GetElementsByName(idobjname);
		var objListLen = objList.length;
        var objarr = new Array();
        for (var k = 0; k < objListLen; k++)
        {
                var tmpArr = GetElementsByTags(objname, objList[k]);
                objarr = objarr.concat(tmpArr);
        }
        return objarr;
}

function GetTodayDate()
{
	var tmpDate = new Date();
	var s = tmpDate.getFullYear() + "年" + (tmpDate.getMonth()+1)  + "月" +  (tmpDate.getDate()) + "日";
	return s;
}

function GetInnerText(obj)
{
	if (g_browserType == IETYPE)
	{
		return obj.innerText;
	}
	return obj.textContent;
}


function ScriptProcess(scriptobj, returnobj, callback, ifremove)
{
	if (typeof(scriptobj) == "undefined")
	{
		return;
	}

	var tmpbrowserType = GetBrowserType();
	if (tmpbrowserType == IETYPE)
	{
		scriptobj.onreadystatechange = function()
		{
			if (scriptobj.readyState == "loaded")
			{
				if (callback)
				{
					try
					{
						eval("var func =  " + callback);
						if (returnobj != "")
						{
							eval("var tmpobj = " + returnobj);
							func(tmpobj);
						}
						else
						{
							func();
						}
					}
					catch(e)
					{
					}
				} 
				if (ifremove == 1)
				{
					try
					{
						var tmpobj = document.getElementsByTagName("head")[0];
						tmpobj.removeChild(scriptobj);
					}
					catch(e)
					{
					}
				}
			}
		}
	}
	else
	{
		scriptobj.onload = function()
		{
			if (callback)
			{
				eval("var func =  " + callback);
				if (returnobj != "")
				{
					eval("var tmpobj = " + returnobj);
					func(tmpobj);
				}
				else
				{
					func();
				}
			}
			if (ifremove == 1)
			{
				try
				{
					var tmpobj = document.getElementsByTagName("head")[0];
					tmpobj.removeChild(scriptobj);
				}
				catch(e)
				{
				}
			}
		}
	}
}



function initParameters(queryStr)
{
	var parameterMap = new Array();
	var offset = queryStr.indexOf("?");
	if (offset > -1)
	{
		queryStr=queryStr.substr(offset+1);
	}
	var parameters= queryStr.split("&");
	var parametersLen = parameters.length;
	for (var i = 0; i < parametersLen; i++)
	{
		var child = parameters[i].split("=");
		var key = child[0];
		var value = child[1];
		parameterMap[key] = value;
	}
	return parameterMap;
}

function getRealPos(ele, dir)
{
	(dir=="x") ? pos = ele.offsetLeft : pos = ele.offsetTop;
	tempEle = ele.offsetParent;
	while(tempEle != null)
	{
		pos += (dir=="x") ? tempEle.offsetLeft : tempEle.offsetTop;
		tempEle = tempEle.offsetParent;
	}
	return pos;
}

function CreateScriptObj(sUrl, encode)
{
	try
	{
		var tempjs=document.createElement('script');
		var tmpobj = document.getElementsByTagName("head")[0];
		tmpobj.appendChild(tempjs);
		if (encode == "UTF-8")
		{
			tempjs.charset = "utf-8";
		}
		tempjs.src = sUrl;
		return tempjs;
	}
	catch(e)
	{
		return undefined;
	}
}


function newScriptUrl(scripturl)
{
	var tempjs = CreateScriptObj(scripturl);
	ScriptProcess(tempjs, null, null, 1);
}

function newIframeUrl(scripturl)
{
	try
	{
		var ifr = document.createElement('iframe');
		ifr.width = 0;
		ifr.height = 0;
		document.body.appendChild(ifr);
		ifr.src = scripturl;
		ifr.attachEvent('onload', function(){document.body.removeChild(ifr)});
	}
	catch (e)
	{
	}
}

function EncodeUrl(str)
{
    return str.replace(/%/g,"%25").replace(/ /g, "%20").replace(/\+/g,"%2B").replace(/\?/g,"%3F").replace(/#/g,"%23").replace(/&/g,"%26").replace(/=/g,"%3D").replace(/\//,"%2F");
}

function DecodeUrl(str)
{
    return str.replace(/%25/g,"%").replace(/%20/g, " ").replace(/%2B/g, "+").replace(/%3F/g, "?").replace(/%23/g,"#").replace(/%26/g,"&").replace(/=/g,"%3D").replace(/%2F/,"/");
}



//***************************************************************/
//
// doFillTemplate 填充模板
//
//***************************************************************/
function doFillTemplate(templateStr, obj, xLevel, fillnum, beginnum)
{
	var templetHTML = templateStr;
	var stRegPrefix = "<%repeat_" + xLevel + "\\s*match=\"([^\"]+)\"[^%]*%>";
	var stRegContent = "<%repeat_" + xLevel + "[^>]*%>((.|\\n)+)<%_repeat_" + xLevel + "%>";

	var r_repeat_match = new RegExp(stRegPrefix);
	var r_repeat_match_global = new RegExp(stRegPrefix, "g");
	var r_repeat_content = new RegExp(stRegContent);
	var r_repeat_match_next_level = new RegExp("<%repeat_" + (xLevel + 1) + " match=\"([^\"]+)\"");
	var r_attribute_global = /<%=@(\w+)(_\d)*%>/g;
	var r_index = /<%=index%>/g;
	var r_text = /<%=text%>/g;

	if (templetHTML.match(r_repeat_match) == null)
	{
		alert("没有找到节点<%repeat_"+(xLevel)+"%>");
		return;
	}

	var arPrefix = templetHTML.match(r_repeat_match_global);
	var arPrefixLen = arPrefix.length;
	var startPosition = 0;
	for (var i=0;i<arPrefixLen;i++)
	{
		var st = arPrefix[i];

		var nodePath = st.replace(/^.*match="|".*$/g,"");
		startPosition = templetHTML.indexOf(st);
		var endPosition = templetHTML.indexOf("<%_repeat_"+xLevel+"%>",startPosition);
		var replaceContent = templetHTML.substring(startPosition,endPosition+13);
		startPosition += st.length;
		var repeatContent = templetHTML.substring(startPosition,endPosition); //获得内容模板

		var nodes = eval("obj" + nodePath);
		if (typeof(nodes) == "undefined")
			continue;

		var arContent = [];
		var attributes = repeatContent.match(r_attribute_global);
		var escapeFun=0;
		if (attributes == null) 
			attributes = [];

		var realbegin = 0;
		if (typeof(beginnum) != "undefined")
		{
			realbegin = (parseInt(beginnum) > nodes.length)?0:parseInt(beginnum);
		}

		var realnum = (typeof(nodes.length) == "undefined") ? 1 : nodes.length;
		if (typeof(fillnum) != "undefined")
		{
			if (parseInt(fillnum) > 0)
			{
				realnum = (parseInt(fillnum) < (realnum - realbegin)) ? parseInt(fillnum) : (realnum - realbegin);
			}
		}

		for (var j=realbegin;j<realbegin+realnum;j++)
		{
			var node = (typeof(nodes.length) == "undefined") ? nodes : nodes[j];
			if (typeof(node) == "undefined")
			{
				continue;
			}

			//增加序列号 
			node.index = j+1;

			var content = repeatContent;
			if (repeatContent.match(r_repeat_match_next_level)!=null) //处理子节点
			{
				content = doFillTemplate(repeatContent, node, xLevel + 1)
			}
			var s = content.replace(r_index,(j+1)).replace(r_text,node.text);

			var attributesLen = attributes.length;
			for (var k=0;k<attributesLen;k++)
			{
				var attrTag = attributes[k].replace(/\W/g,"").replace(/_\d$/,"");
				var attrValue = eval("node." + attrTag);
				if (typeof(attrValue) == "undefined")
					attrValue = "";
				s = s.replace(attributes[k],attrValue);
			}
			arContent[j] = s;
		}
		templetHTML = templetHTML.replace(replaceContent,arContent.join(""));
	}

	return templetHTML;
}


//***************************************************************/
//
// JThunderEye  广告类
// 封装广告基本信息。
//
//***************************************************************/
function JThunderEye(eyeId, eyeType, jasonStr, clickurl, clientIndustry)
{
	this.eyeType = eyeType;
	this.eyeId = eyeId;
	this.clientIndustry = clientIndustry;
	this.jasonStr = jasonStr;
	this.clickurl = clickurl;
	this.displaynum = 0;
}



//***************************************************************/
//
// JEyesAggregate  广告聚合类
// 广告数组，封装添加广告，及填充广告模板，等操作。
//
//***************************************************************/
function JEyesAggregate()
{
	this.eyesArray = new Array();

	this.eyeType;
	this.eyesIdStr = "";
	this.htmlStr = "";
	this.initflag = 0;

	this.AddEyes = function(eyes)
	{
		if (this.eyesArray.length == 0)
		{
			this.eyesArray[this.eyesArray.length] = eyes;
			this.eyeType = eyes.eyeType;
			this.eyesIdStr = eyes.eyeId;
		}
		else
		{
			if (this.eyeType == eyes.eyeType)
			{
				this.eyesArray[this.eyesArray.length] = eyes;
				//if (this.eyesArray.length <= 5)
				//{
				//	this.eyesIdStr += "," + eyes.eyeId;
				//}
			}
		}
	}

	this.End = function()
	{
		if (this.eyesArray.length > 0 && typeof(templateArr[this.eyeType].annexend) != "undefined")
		{
			this.htmlStr += templateArr[this.eyeType].annexend;
		}
	}

	this.DisplayNum = function()
	{
		if (this.eyeType == TemplateTxt)
		{
			return 0;
		}
		return this.eyesArray[0].displaynum;
	}

	this.GetDisplayNum = function()
	{
		if (this.eyeType == TemplateTxt)
		{
			return 0;
		}
		return this.eyesArray[0].displaynum++;
	}

	this.Init = function()
	{
		if (this.initflag == 1)
		{
			return;
		}
		this.initflag = 1;

		this.HtmlArray = new Array;
		var len = this.eyesArray.length;
		for (var i = 0; i < len; i++)
		{
			eval("var aa=" + this.eyesArray[i].jasonStr);
			aa.bidding.eyeid = this.eyesArray[i].eyeId;
			aa.bidding.eyeindex = i + 1;

			eval("this.eyesArray[i].clickurl = aa.bidding." + templateArr[this.eyeType].urlName);
			this.eyesArray[i].clickurl = this.eyesArray[i].clickurl.replace(/&amp;/g, "&");
			this.HtmlArray[this.HtmlArray.length] = aa.bidding;
		}
	}
}


//***************************************************************/
//
// JKeyword  关键词类
// 聚合keyword相对应的广告数组
//
//***************************************************************/
function JKeyword(key, keyid, eyesarray)
{
	this.key = key;
	this.keyid = keyid;
	this.eyesarray = eyesarray;
	this.nums = 0;

	this.IfEyes = function()
	{
		var ret = false;
		var tmpNum = this.nums;
		if (tmpNum < this.eyesarray.length)
		{
			while (tmpNum <  this.eyesarray.length)
			{
				if (this.eyesarray[tmpNum].DisplayNum() != 0)
				{
					tmpNum++;
				}
				else
				{
					ret = true;
					break;
				}
			}
		}
		return ret;
 	}
	
	this.GetEyeAgg = function()
	{
		while (this.nums < this.eyesarray.length)
		{
			if (this.eyesarray[this.nums].GetDisplayNum() != 0)
			{
				this.nums++;
			}
			else
			{
				return this.eyesarray[this.nums++];
			}
		}
		return null;
	}
}



//***************************************************************/
//
// display util
//
//***************************************************************/


// 当前显示
var g_nowDis = null;

function CreateInput(name, value, type, parentobj)
{
	var tmpobj = document.createElement("input");

	tmpobj.name = name;
	tmpobj.value = value;
	tmpobj.type = type;

	if (typeof(parentobj) != "undefined" && parentobj != null)
	{
		parentobj.appendChild(tmpobj);
	}

	return tmpobj;
}

function pointerX(evt)
{
	return evt.pageX || (evt.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft));  
}

function pointerY(evt)
{
	return evt.pageY || (evt.clientY + (document.documentElement.scrollTop || document.body.scrollTop));  
}

function GetScrollTop()
{
	return document.all ? 
		((document.documentElement.clientWidth) ? document.documentElement.scrollTop : document.body.scrollTop) : window.pageYOffset;
}

function GetScrollLeft()
{
	return document.all ? 
		((document.documentElement.clientWidth) ? document.documentElement.scrollLeft : document.body.scrollLeft) : window.pageXOffset;
}



//***************************************************************/
//
// JDisplay  显示类
// 聚合keyword的相应广告集合，封装弹出窗口的相关操作。
//
//***************************************************************/

var g_iframeArr = new Array();

function createIframe(count)
{
	for (var i = 0; i < count; ++i)
	{
		g_iframeArr[i] = document.createElement('iframe');
	}
}

var leiyanDivZindex = 1000000;

function delayHide(obj)
{
	if (typeof(obj) != "undefined")
	{
		if (obj.eyesAggregate.eyeType == Template2Vedio
			|| obj.eyesAggregate.eyeType == Template2Flash
			)
		{
			var interval = new Date().getTime() - obj.displayTime;
			var pvUrl = GetLeiyanPvUrl(obj.eyesAggregate.eyesIdStr, obj.keyobj.keyid, interval);
			newScriptUrl(pvUrl);

			obj.Close();
		}
		else if (obj.popupObj != null && typeof(obj.popupObj.style) != "undefined")
		{
			if (obj.popupObj.style.display != "none")
			{
				obj.popupObj.style.display = "none";

				clearTimeout(obj.hideId);

				var interval = new Date().getTime() - obj.displayTime;
				var pvUrl = GetLeiyanPvUrl(obj.eyesAggregate.eyesIdStr, obj.keyobj.keyid, interval);
				newScriptUrl(pvUrl);

				obj.displayTime = 0;
			}
		}
	}
}

function JDisplay(keyobj, eyesAggregate)
{
	this.keyobj = keyobj;
	this.eyesAggregate = eyesAggregate;
	this.popupObj = null;
	this.hideId = null;
	this.clickObj = null;

	this.displayTime = 0;
	this.appended = 0;
/*
	this.preLoad = function(indexnum)
	{
		try
		{
			this.indexnum = indexnum;
			
			if (this.eyesAggregate.eyeType == Template2Vedio
				|| this.eyesAggregate.eyeType == Template2Flash
				)
			{
				return;
			}

			if (this.hideId != undefined)
			{
				clearTimeout(this.hideId);
			}

			if (this.popupObj == undefined)
			{
				this.linkRef = document.getElementById("linkeyes" + indexnum);

				this.popupObj = document.createElement("div");
				this.popupObj.style.position = "absolute";
				this.popupObj.style.background = "transparent";
				this.popupObj.style.zIndex = leiyanDivZindex;
				//this.popupObj.width = templateArr[this.eyesAggregate.eyeType].width;
				//this.popupObj.height= templateArr[this.eyesAggregate.eyeType].height;
				this.popupObj.style.left = 0;
				this.popupObj.style.top = 0;
				
				var tmpobj = document.getElementsByTagName("head")[0];
				tmpobj.appendChild(this.popupObj);

				this.popupObj.onmouseover = function()
				{
					clearTimeout(thunderdisplayarr[indexnum].hideId);
				};

				this.popupObj.onmouseout = function()
				{
					thunderdisplayarr[indexnum].hideId = setTimeout("delayHide(thunderdisplayarr[" + indexnum +"])", 1000);
				};
			}

			if (this.popupObj.style.display == "block")
			{
				return;
			}

			if (this.popupObj.innerHTML == undefined || this.popupObj.innerHTML == "")
			{
				this.eyesAggregate.Init();
				var kid = this.keyobj.keyid;
				var leiyanId = this.eyesAggregate.eyesArray[0].eyeId;
				var leiyanUrl = GetLeiyanPageUrl(kid, leiyanId, 0);
				this.popupObj.innerHTML = GetIframeHtm(leiyanUrl, templateArr[this.eyesAggregate.eyeType].width, templateArr[this.eyesAggregate.eyeType].height);
			}

			this.popupObj.style.display = "none";
		}
		catch (e)
		{
		}
	}
*/
	this.Display = function(indexnum, evt)
	{
		try
		{
			if (g_browserType == IETYPE && document.readyState != "complete")
			{
				return;
			}

			this.indexnum = indexnum;

			if (g_nowDis != null && g_nowDis != this)
			{
				if (g_nowDis.eyesAggregate.eyeType == Template2Vedio
					|| g_nowDis.eyesAggregate.eyeType == Template2Flash
					)
				{
					g_nowDis.Close();
				}
				else
				{
					g_nowDis.ImmediateHide(g_nowDis.indexnum);
				}
			}
			g_nowDis = thunderdisplayarr[indexnum];

			if (this.hideId != null)
			{
				clearTimeout(this.hideId);
			}

			if (this.popupObj == null)
			{
				this.linkRef = document.getElementById("linkeyes" + indexnum);

				this.popupObj = document.createElement("div");
				this.popupObj.style.position = "absolute";
				this.popupObj.style.background = "transparent";
				this.popupObj.style.zIndex = leiyanDivZindex;
				//this.popupObj.width = templateArr[this.eyesAggregate.eyeType].width;
				//this.popupObj.height= templateArr[this.eyesAggregate.eyeType].height;
				this.popupObj.style.left = 0;
				this.popupObj.style.top = 0;

				this.popupObj.onmouseover = function()
				{
					try
					{
						clearTimeout(thunderdisplayarr[indexnum].hideId);
					}
					catch (e)
					{}
				};

				this.popupObj.onmouseout = function()
				{
					try
					{
						thunderdisplayarr[indexnum].hideId = setTimeout("delayHide(thunderdisplayarr[" + indexnum +"])", 1000);
					}
					catch(e)
					{
					}
				};
			}

			if (typeof(this.linkRef) != "undefined")
			{
				this.linkRef.style.cssText = g_baseReplacStyle;
			}

			if (this.appended <= 0)
			{
				document.body.appendChild(this.popupObj);
				this.appended = 1;
			}

			if (this.popupObj.style.display == "block")
			{
				return;
			}

			if (typeof(this.popupObj.innerHTML) == "undefined" || this.popupObj.innerHTML == "")
			{
				this.eyesAggregate.Init();

				var kid = this.keyobj.keyid;
				var leiyanId = this.eyesAggregate.eyesArray[0].eyeId;
				var leiyanUrl = GetLeiyanPageUrl(kid, leiyanId, 0);

				if (typeof(g_iframeArr[this.indexnum]) != "undefined")
				{
					g_iframeArr[this.indexnum].scrolling = "no";
					g_iframeArr[this.indexnum].frameborder = "0";
					g_iframeArr[this.indexnum].style.border = "0";
					g_iframeArr[this.indexnum].style.margin = "0";
					g_iframeArr[this.indexnum].style.padding = "0";
					g_iframeArr[this.indexnum].allowTransparency = "true";
					g_iframeArr[this.indexnum].width = templateArr[this.eyesAggregate.eyeType].width;
					g_iframeArr[this.indexnum].height = templateArr[this.eyesAggregate.eyeType].height;
					g_iframeArr[this.indexnum].src = leiyanUrl;

					this.popupObj.appendChild(g_iframeArr[this.indexnum]);
				}
				else
				{
					var htmlString = GetIframeHtm(leiyanUrl, templateArr[this.eyesAggregate.eyeType].width, templateArr[this.eyesAggregate.eyeType].height);
					this.popupObj.innerHTML = htmlString;
				}
			}

			var tmpBody = (document.documentElement.clientWidth > 0) ? document.documentElement : document.body;

			var widthDummy = templateArr[this.eyesAggregate.eyeType].width;
			var heightDummy = templateArr[this.eyesAggregate.eyeType].height;

			var tmpWidth =  pointerX(evt);
			if (tmpWidth - GetScrollLeft() + widthDummy > tmpBody.clientWidth)    //判断是否够宽     
			{
				tmpWidth = tmpWidth - widthDummy;
			}
			else
			{
				tmpWidth = tmpWidth + 20;
			}

			var tmpHeight = pointerY(evt);
			if (tmpHeight - GetScrollTop()  - heightDummy < 0) //判断是否够高
			{
				tmpHeight = tmpHeight + 20;
			}
			else
			{
				tmpHeight = tmpHeight - (heightDummy * 0.5) - 10;
			}

			this.popupObj.style.left = tmpWidth  + 'px';
			this.popupObj.style.top = tmpHeight + 'px';
			this.popupObj.style.display = "block";

			this.displayTime = new Date().getTime();

			if (typeof(g_allianceStatPvUrl) != "undefined")
			{
				newIframeUrl(decodeURIComponent(g_allianceStatPvUrl));
			}
		}
		catch(e)
		{
		}
	}

	this.DisplayFixPos = function(leftpos, toppos, indexnum, parentObj, postype)
	{
		try
		{
			this.popupObj = document.createElement("div");
			if (parentObj)
			{
				parentObj.appendChild(this.popupObj);
				parentObj.style.position= "relative";
			}
			else
			{
				document.body.appendChild(this.popupObj);
			}
	
			if (postype == "static")
			{
				this.popupObj.style.position = postype;
				this.popupObj.style.styleFloat = "left";
			}
			else
			{
				this.popupObj.style.position = "absolute";
			}
	
			this.popupObj.style.background = "transparent";
			this.popupObj.style.zIndex = leiyanDivZindex;
			this.popupObj.width = templateArr[this.eyesAggregate.eyeType].width;
			this.popupObj.height= templateArr[this.eyesAggregate.eyeType].height;
			//this.popupObj.style.width = this.popupObj.width + "px";
			//this.popupObj.style.height = this.popupObj.height + "px";
			this.popupObj.style.left = leftpos  + 'px';
			this.popupObj.style.top = toppos + 'px';
			this.popupObj.style.display = "block";
	
			this.eyesAggregate.Init();
			var kid = this.keyobj.keyid;
			var leiyanId = this.eyesAggregate.eyesArray[0].eyeId;
			var leiyanUrl = GetLeiyanPageUrl(kid, leiyanId, 0);
			this.popupObj.innerHTML = GetIframeHtm(leiyanUrl, templateArr[this.eyesAggregate.eyeType].width, templateArr[this.eyesAggregate.eyeType].height);
		}
		catch (e)
		{}
	}

	this.Hide = function(indexnum)
	{
		this.hideId = setTimeout("delayHide(thunderdisplayarr["+ indexnum +"])", 100);
	}

	this.ImmediateHide = function(indexnum)
	{
		delayHide(this);
	}

	this.Click = function(indexnum, clicktype, evt, eyesindex)
	{
		try
		{
			this.eyesAggregate.Init();

			var m_x = evt.clientX;
			var m_y = evt.clientY;

			var tmpindex = (typeof(eyesindex) == "undefined") ? 0 : eyesindex;
			if (this.clickObj == null)
			{
				this.clickObj = document.createElement("form");
				document.body.appendChild(this.clickObj);
				this.clickObj.method = "get";
				this.clickObj.action = "http://cknum.sandai.net/fcg-bin/eyeclick";
				this.clickObj.target = "_blank";

				var tmpinput;
				this.inputid = CreateInput('id', this.eyesAggregate.eyesArray[tmpindex].eyeId, 'hidden', this.clickObj);
				this.inputtype = CreateInput('type', clicktype, 'hidden', this.clickObj);
				tmpinput = CreateInput('keyid', this.keyobj.keyid, 'hidden', this.clickObj);
				tmpinput = CreateInput('channelid', g_channelId, 'hidden', this.clickObj);
				tmpinput = CreateInput('selfchannelid', g_selfChannelId, 'hidden', this.clickObj);
				tmpinput = CreateInput('site', g_siteId, 'hidden', this.clickObj);
				tmpinput = CreateInput('platform', g_platform, 'hidden', this.clickObj);
				tmpinput = CreateInput('peerid', g_peerId, 'hidden', this.clickObj);
				this.mousposx =CreateInput('mouseposx', m_x , 'hidden', this.clickObj); 
				this.mousposy =CreateInput('mouseposy',  m_y, 'hidden', this.clickObj);
				this.time = CreateInput('time', new Date().getTime().toString(), 'hidden', this.clickObj);
				this.prerefer = CreateInput('prerefer',  document.referrer.replace(/url=/g, "%75%72%6C%3D"), 'hidden', this.clickObj);
				tmpinput = CreateInput('refer', g_referUrl, 'hidden', this.clickObj);
				this.inputurl = CreateInput('url', this.eyesAggregate.eyesArray[tmpindex].clickurl, 'hidden', this.clickObj);
			}
			else
			{
				this.inputid.value = this.eyesAggregate.eyesArray[tmpindex].eyeId;
				this.inputtype.value = clicktype;
				this.mousposx.value = m_x;
				this.mousposy.value = m_y;
				this.time.value = new Date().getTime().toString();
				this.inputurl.value = this.eyesAggregate.eyesArray[tmpindex].clickurl;
			}

			this.clickObj.submit();

			if (typeof(g_allianceStatUrl) != "undefined")
			{
				newIframeUrl(decodeURIComponent(g_allianceStatUrl));
			}
		}
		catch(e)
		{
		}
	}

	this.Close =function()
	{
		if (this.popupObj != null)
		{
			this.popupObj.innerHTML = "";
			this.popupObj.style.display = "none";
			this.popupObj = null;
			this.appended = 0;

			if (g_nowDis == this)
			{
				g_nowDis = null;
			}
		}
	}
}


//***************************************************************/
//
// stat
//
//***************************************************************/

var g_referUrl = window.location.href;
g_referUrl = encodeURIComponent(g_referUrl).replace(/url=/g, "%75%72%6C%3D");

function GetReferPvUrl(haveLeiyan)
{
	var tmpReferUrl = "http://cknum.sandai.net/commstat/eyesrefer"
		+ "?channelid=" + g_channelId 
		+ "&selfchannelid=" + g_selfChannelId 
		+ "&site=" + g_siteId 
		+ "&platform=" + g_platform 
		+ "&peerid=" + g_peerId 
		+ "&haveleiyan=" + haveLeiyan 
		+ "&time=" + new Date().getTime() 
		+ "&prerefer=" + encodeURIComponent(document.referrer).replace(/url=/g, "%75%72%6C%3D")
		+ "&refer=" + g_referUrl;
	return tmpReferUrl;
}

function GetLeiyanPvUrl(leiyanId, kid, interval)
{
	var tmpurl = "http://cknum.sandai.net/commstat/eyespv"
		+ "?id=" + leiyanId 
		+ "&channelid=" + g_channelId 
		+ "&selfchannelid=" + g_selfChannelId 
		+ "&site="+ g_siteId 
		+ "&platform=" + g_platform 
		+ "&keyid=" + kid 
		+ "&peerid=" + g_peerId 
		+ "&time=" + new Date().getTime() 
		+ "&interval=" + interval 
		+ "&refer=" + g_referUrl;
	return tmpurl;
}

function GetLeiyanPageUrl(kid, leiyanId, upOrDown)
{
	var url = "http://leiyanstatic.xunlei.com/leiyanpage/mainpage/" + leiyanId + ".htm"
		+ "?siteId=" + g_siteId
		+ "&channelId=" + g_channelId
		+ "&selfChannelId=" + g_selfChannelId
		+ "&sitePlatform=" + g_platform
		+ "&keyword=" + ""
		+ "&kid=" + kid
		+ "&peerId=" + g_peerId
		+ "&multyPage=" + g_multyPage
		+ "&upOrDown=" + upOrDown
		+ "&isTest=" + g_ifTest
		+ "&allianceStatUrl=" + ((typeof(g_allianceStatUrl) == "undefined") ? "" : g_allianceStatUrl)
		+ "&allianceStatPvReferUrl=" + ((typeof(g_allianceStatPvReferUrl) == "undefined") ? "" : g_allianceStatPvReferUrl)
		+ "&allianceStatPvUrl=" + ((typeof(g_allianceStatPvUrl) == "undefined") ? "" : g_allianceStatPvUrl)
		+ "&referUrl=" + g_referUrl;
	return url;
}

function GetIframeHtm(pageUrl, width, height)
{
	var htmStr = '<iframe src=' + pageUrl + ' scrolling="no" frameborder="0" allowTransparency="true" width="' + width + '" height="' + height + '"></iframe>';
	return htmStr;
}

function GetCowkeUrl()
{
	var headObj = document.getElementsByTagName("head")[0];
	var title = window.document.title;
	title = title.toLowerCase();
	if (typeof(title) != "undefined" && title != "")
	{
		if (title.length > 50)
		{
			title = title.substring(0, 50);
		}
		title = EncodeUrl(title);
	}

	var keywords = "";
	var description = "";
	var metaArr = headObj.getElementsByTagName("meta");
	var metaArrLen = metaArr.length;
	for (var i = 0; i < metaArrLen; i++)
	{
		var name = metaArr[i].getAttribute("name");
		name = name.toLowerCase();
		var content = metaArr[i].getAttribute("content");
		content = content.toLowerCase();
		if (name == "Keywords")
		{
			if (typeof(content) != "undefined" && content != "")
			{
				keywords = EncodeUrl(content);
			}
		}
		else if (name == "description")
		{
			if (typeof(content) != "undefined" && content != "")
			{
				if (content.length > 200)
				{
					content = content.substring(0, 200);
				}
				description = EncodeUrl(content);
			}
		}
	}

	if (g_referUrl.indexOf("movie.xunlei.com") != -1 || g_referUrl.indexOf("duowan.com") != -1)
	{
		var tmpStr="";
		var len = g_replaceObj.length;
	  for (var i=0; i < len; i++)
	  {
	  	if (i > 0)
	  		tmpStr += "\n";	  		
	  	tmpStr += GetInnerText(g_replaceObj[i]);
	  	if (tmpStr.length > 200)
	  	{
	  		tmpStr = tmpStr.substring(0,200);
	  		break;
	  	}
	  }	  
	  description = EncodeUrl(tmpStr);	
		/*
		var para = new Array();
		para[0] = 'leiyancontent';
		var objList = GetElementsByName(para);
		for (var i = 0; i < objList.length; i++)
		{
			var tmpArr = objList[i].getElementsByTagName('p');
			for (var j = 0; j < tmpArr.length; ++j)
			{
				var htmlstr = GetInnerText(tmpArr[j]);
				if (htmlstr != "")
				{
					if (htmlstr.length > 200)
					{
						htmlstr = htmlstr.substring(0, 200);
					}
					description = EncodeUrl(htmlstr);
				}
				break;
			}
			break;
		}
		*/
	}

	if ("" == title || "" == description)
	{
		return "";
	}

	var cowkeUrl = "http://cknum.sandai.net/commstat/cowkecontent"
		+ "?siteId=" + g_siteId
		+ "&channelId=" + g_channelId
		+ "&title=" + title
		//+ "&keywords=" + keywords
		+ "&description=" + description
		;

	if (typeof(g_encodeType) != "undefined" && g_encodeType != "")
	{
		cowkeUrl += "&encode=" + g_encodeType;
	}

	return cowkeUrl;
}


//***************************************************************/
//
// 模板类
//
//***************************************************************/
function JEyesTemplate(eyeType, width, height, keyIcon, urlName)
{
	this.eyeType = eyeType;
	this.width = width;
	this.height = height;
	this.keyIcon = keyIcon;
	this.urlName = urlName;
}

var TxtFlagIcon = "http://leiyanstatic.xunlei.com/img/txtflag.gif";
var ImgTxtFlagIcon = "http://leiyanstatic.xunlei.com/img/imgflag.gif";
var ImgFlagIcon = "http://leiyanstatic.xunlei.com/img/imgflag.gif";
var FlashFlagIcon = "http://leiyanstatic.xunlei.com/img/flashflag.gif";
var VedioFlagIcon = "http://leiyanstatic.xunlei.com/img/vedioflag.gif";


var g_leiyanWidth = 230;


var templateArr = new Array();
templateArr[Template2TxtTitle] = new JEyesTemplate(Template2TxtTitle, g_leiyanWidth, 330, TxtFlagIcon, "txtdesc_url");
templateArr[Template2ImgTxt] =  new JEyesTemplate(Template2ImgTxt, g_leiyanWidth, 330, ImgTxtFlagIcon, "txtimg_url");
templateArr[Template2Img] = new JEyesTemplate(Template2Img, g_leiyanWidth, 330, ImgFlagIcon, "img_url");
templateArr[Template2Flash] = new JEyesTemplate(Template2Flash, g_leiyanWidth, 330, FlashFlagIcon, "flash_url");
templateArr[Template2Vedio] = new JEyesTemplate(Template2Vedio, g_leiyanWidth, 380, VedioFlagIcon, "vedio_url");


//***************************************************************/
//
// 以下是开始拉关键字数据
//
//***************************************************************/

var g_maxDisplayCount=100;
var g_displayNum = 0;
var g_replaceObj;

function GetDummy()
{
	var tmpDate = new Date();
	var dummy = tmpDate.getYear().toString()  + (tmpDate.getMonth()+1).toString() +  tmpDate.getDate().toString() + tmpDate.getHours().toString();
	return dummy;
}


//***************************************************************/
//
// 关键字位置记录
//
//***************************************************************/
function KeywordPosArray()
{
	this.array = new Array();

	this.Add = function (pos)
	{
		var ret = 0;
		if (this.FindKeyPos(pos) == -1)//200个字以内有其他的关键词
		{
			ret = -1;
		}
		else //无其他关键词
		{
			this.array[this.array.length] = pos;
			ret = 0;
		}
		return ret;
	}

	//先简单考虑 如果性能成为瓶颈时考虑优化
	this.FindKeyPos = function(pos)
	{
		var len = parseInt(g_matchLength) / 2;
		var ret = 0;
		var tmplen = this.array.length;
		for (var i=0; i < tmplen; i++)
		{
			if ((pos - this.array[i]) < parseInt(len) && (pos - this.array[i]) > - parseInt(len))
			{
				ret = -1;
				break;
			}
		}
		return ret;
	}
}


function JLinkPos(beginPos, endPos)
{
	this.beginPos = beginPos;
	this.endPos = endPos;
}

function JMatch(key, pos, indexnum)
{
	this.key = key;
	this.pos = pos;	
	this.indexnum = indexnum;
}

function JudgeInLabel(linkArr, pos)
{
	if (typeof(linkArr) == "undefined" || linkArr.length == 0)
		return false;

	var ret = false;
	try
	{
		var nLen = linkArr.length;
		var tmpBegin = 0;
		var tmpEnd = nLen-1;
		var tmpInt = parseInt((tmpBegin+tmpEnd)/2);
		
		while (1)
		{
			if (pos >= linkArr[tmpInt].beginPos && pos <= linkArr[tmpInt].endPos) //==
			{
				ret = true;
				break;
			}
			else if (pos < linkArr[tmpInt].beginPos)//<
			{
				tmpEnd = tmpInt;
				tmpInt = parseInt((tmpBegin+tmpEnd)/2);
			}
			else //>
			{
				tmpBegin = tmpInt;
				tmpInt = parseInt((tmpBegin+tmpEnd)/2);
			}
			//中止条件
			if (tmpBegin == tmpEnd)
				break;
			if (tmpEnd - tmpBegin == 1)
			{
				if ((pos >= linkArr[tmpEnd].beginPos && pos <= linkArr[tmpEnd].endPos) || 
					(pos >= linkArr[tmpBegin].beginPos && pos <= linkArr[tmpBegin].endPos) )
				{
					ret = true;
				}
				break;
			}
		}	
	}
	catch(e)
	{
	}
	
	return ret;
}


function JLeiyanMap(maxNum)
{
	if (parseInt(maxNum) > 100)
		this.maxNum = maxNum;
	else
		this.maxNum = 100;

	this.itemNum = 0;
	
	this.arrObj = new Array();
	
	this.InsertItem = function(item, obj)
	{
		this.arrObj["leiyan_" + item] = obj;
		return;
	};
	
	this.ToString = function(type)
	{
		var tmpStr = "";
		var nLen = 7;
		this.itemNum  = 0;
		for (arr in this.arrObj)
		{
			if (arr.match(/^leiyan_/) != null && this.itemNum  <  this.maxNum)
			{
				if (this.itemNum  > 0)
					tmpStr = tmpStr +  ";";

				if (type == 0)
				{
					tmpStr = tmpStr + arr.substr(nLen);
				}
				else
				{
					tmpStr = tmpStr + this.arrObj[arr];
				}
				this.itemNum++;
			}
		}
		return tmpStr;
	};
}


function ArrayDel(arrayobj, n)
{
	if (n < 0)
		return arrayobj;
	else
		return arrayobj.slice(0,n).concat(arrayobj.slice(n+1,arrayobj.length));
}


var g_leiyanMatchKeyList = new JLeiyanMap(300);
var g_docLen = document.body.innerHTML.length;


//***************************************************************/
//
// 替换关键词广告
//
//***************************************************************/
function MatchKeyword(keyReg, keyAdvArr, htmlstr, ifCache, numObj)
{
	if (g_displayNum > g_maxDisplayCount)
	{
		return htmlstr;
	}

	if (keyReg.toString() == "//ig" 
		|| keyReg.toString() == "" 
		|| keyReg.toString() == "//gi" 
		|| keyReg.toString() == "//"
		)
	{
		return htmlstr;
	}

	//
	// 找到所有的链接，脚本, 图片
	//
	var linkArr = new Array();
	var linkReg = /<a[\s\S]*?<\/a>|<script[\s\S]*?<\/script>|<img[\s\S]*?src="[\s\S]*?"[\s\S]*?>|<[\s\S]*?>/gi;
	htmlstr.replace(linkReg, function($0, $1, $2)
		{
			var beginPos = parseInt($1);
			var tmpPos = new JLinkPos(beginPos, beginPos + $0.length);
			linkArr[linkArr.length] = tmpPos;
			return $0;
		}
	);

	var tmpMatchArr = new Array();
	var tmpMatchNum = 0;
	var tmpHtml = htmlstr.replace(keyReg, function($0, $1, $2)
		{
			var str;
			if (JudgeInLabel(linkArr, $1))	//检查是否在链接图片script中间
			{
				str = $0;
			}
			else	//可以加亮
			{
				str = "<%leiyan_" + tmpMatchNum + ">" + $0 + "</leiyan%>";
				tmpMatchArr[tmpMatchNum] = new JMatch($0, $1, tmpMatchNum);
				tmpMatchNum ++;
				if (!ifCache)
				{
					//缓存
					try
					{
						g_leiyanMatchKeyList.InsertItem(g_keyArray[$0], 0);
					}
					catch(e)
					{
					}
				}
			}
			return str;
		}
	);

	tmpHtml = RealReplaceKey(keyAdvArr, tmpMatchArr, tmpHtml, numObj);

	//替换没有生效的关键字为原样
	tmpHtml = tmpHtml.replace(/<%leiyan_[\s\S]*?>([\s\S]*?)<\/leiyan%>/gi, function($0, $1, $2, $3)
		{
			return $1;
		}
	);
	
	return tmpHtml;
}

function RealReplaceKey(keyAdvArr, tmpMatchArr, tmpHtml, numObj)
{
	var posArray = new KeywordPosArray();
	var tmpTextRange;
	var sBookmark;
	if (g_ifReplaceBody)
	{
		if (g_browserType == FIREFOXTYPE)
		{
			tmpTextRange = document.createRange();
		}
		else
		{
			tmpTextRange = document.body.createTextRange();
			sBookmark = tmpTextRange.getBookmark();
		}
	}
	
	//根据价格和间隔位置判断是否真的需要加亮	
	var keyAdvArrLen = keyAdvArr.length;
	for (var cc = 0; cc < keyAdvArrLen; cc++)
	{
		// 看这个广告是否被使用过
		if (!keyAdvArr[cc].IfEyes())
		{
			continue;
		}

		//
		// 屏蔽广告形式
		//
		if (g_disableStyleArray.length > 0 && typeof(keyAdvArr[cc].eyesarray[0].eyeType) != "undefined")
		{
			var disableStyle = false;
			var disableStyleArrayLen = g_disableStyleArray.length;
			for (var dsi = 0; dsi < disableStyleArrayLen; ++dsi)
			{
				if (keyAdvArr[cc].eyesarray[0].eyeType == g_disableStyleArray[dsi])
				{
					disableStyle = true;
					break;
				}
			}
			if (disableStyle)
			{
				continue;
			}
		}

		//
		// 屏蔽客户类型
		//
		if (g_disableClientStyleArray.length > 0 && typeof(keyAdvArr[cc].eyesarray[0].clientIndustry) != "undefined")
		{
			var disableClient = false;
			var disableClientStyleArrayLen = g_disableClientStyleArray.length;
			for (var dci = 0; dci < disableClientStyleArrayLen; dci++)
			{
				if (keyAdvArr[cc].eyesarray[0].clientIndustry == g_disableClientStyleArray[dci])
				{
					disableClient = true;
					break;
				}
			}
			if (disableClient)
			{
				continue;
			}
		}

		if (g_ifReplaceBody && g_browserType != FIREFOXTYPE) //替换body replaceid=-1
		{
				tmpTextRange.moveToBookmark(sBookmark);
				var aaret;
				
				while(aaret=tmpTextRange.findText(keyAdvArr[cc].key))
				{
					if (!filterNode(tmpTextRange))
					{
						tmpTextRange.collapse(false);
						continue;
					}
					else
					{
						break;
					}
				}
				
				if (!aaret) //没有匹配到
				{
					continue;
				}
				
				var tmpAgg = keyAdvArr[cc].GetEyeAgg();
				if (tmpAgg == null)
				{
					continue;
				}
				thunderdisplayarr[thunderdisplayarr.length] = new JDisplay(keyAdvArr[cc],  tmpAgg);
				var flagimgurl = templateArr[tmpAgg.eyeType].keyIcon;
				
				var destStr = "<span" 
					+ " id=linkeyes" + g_displayNum 
					+ " onClick='thunderdisplayarr[" + g_displayNum + "].Click(" + g_displayNum+", " + ClickTypeDirect + ", event)'  " 
					+ " onMouseOver='thunderdisplayarr[" + g_displayNum + "].Display(" + g_displayNum + ", event)' " 
					+ " onMouseOut='thunderdisplayarr[" + g_displayNum + "].Hide(" + g_displayNum + ")' " 
					+ " style='"+ g_baseReplacStyle+";border-bottom:1px dashed'>" 
					+ keyAdvArr[cc].key 
					+ "</span>";
				tmpTextRange.pasteHTML(destStr);
				g_displayNum++;
				numObj.num++;
		}
		else //指定替换范围
		{
			var tmpMatchArrLen = tmpMatchArr.length;
			for (var ii=0; ii < tmpMatchArrLen; ii++)
			{
				if (keyAdvArr[cc].key == tmpMatchArr[ii].key)
				{
					// 判断是否落在200字范围内
					var tmpret = posArray.Add(tmpMatchArr[ii].pos);
					
					if (tmpret == 0) 	//如果在范围内
					{
						var tmpAgg = keyAdvArr[cc].GetEyeAgg();
						if (tmpAgg == null)
						{
							break;
						}
	
						thunderdisplayarr[thunderdisplayarr.length] = new JDisplay(keyAdvArr[cc],  tmpAgg);
						var flagimgurl = templateArr[tmpAgg.eyeType].keyIcon;
	
						var destStr = "<span" 
							+ " id=linkeyes" + g_displayNum 
							+ " onClick='thunderdisplayarr[" + g_displayNum + "].Click(" + g_displayNum+", " + ClickTypeDirect + ", event)'  " 
							+ " onMouseOver='thunderdisplayarr[" + g_displayNum + "].Display(" + g_displayNum + ", event)' " 
							+ " onMouseOut='thunderdisplayarr[" + g_displayNum + "].Hide(" + g_displayNum + ")' " 
							+ " style='"+ g_baseReplacStyle+";border-bottom:1px dashed'>" 
							+ keyAdvArr[cc].key 
							+ "</span>";
/*
						if ("true" == g_enableIcon)
						{
							destStr += "<img src='" + flagimgurl + "' style='width:14px;height:14px;display:inline'>";
						}
*/
						tmpHtml = tmpHtml.replace("<%leiyan_" + tmpMatchArr[ii].indexnum + ">" + tmpMatchArr[ii].key + "</leiyan%>", destStr);
						
						g_displayNum++;
						numObj.num++;
						//tmpMatchArr=tmpMatchArr.del(ii);
						tmpMatchArr= ArrayDel(tmpMatchArr, ii)
	
						break;
					}
					else //继续向前寻找
					{
						//tmpMatchArr=tmpMatchArr.del(ii);
						tmpMatchArr = ArrayDel(tmpMatchArr, ii)
						ii--;
					}
				}
			}

			if (g_displayNum >= g_maxDisplayCount)	//最多显示100个关键词
			{
				break;
			}
		}
	}

	return tmpHtml;
}

function filterNode(txtRange)
{
	var Node=txtRange.parentElement();
//	if (Node.tagName=="IMG" || Node.tagName=="A" ||  Node.tagName=="SCRIPT" || Node.tagName== "OBJECT")
//        return false;

//    var pNode = Node.parentNode;
	var pNode = Node;    
	if (pNode.tagName == "SPAN" && pNode.id.match(/^linkeyes/) != null)
				 	return false;
	while (pNode.tagName != "BODY") {			
	    if (pNode.tagName=="IMG" || pNode.tagName=="A" ||  pNode.tagName=="SCRIPT" || pNode.tagName=="OBJECT")
	        return false;
	    pNode = pNode.parentNode;
	}
	
	var tmpHtml = txtRange.htmlText;
	var tmpReg = new RegExp(txtRange.text, "g");
	if (tmpHtml.match(tmpReg) == null)
	{
		return false;
	}

	var matchre=tmpHtml.match(/<a[\s\S]*?<\/a>|<script[\s\S]*?<\/script>|<img[\s\S]*?src="[\s\S]*?"[\s\S]*?>/i);
	if (matchre != null)
	{
		return false;
	}
    	return true;
};

function MatchKeywordForBody(keyReg, keyAdvArr, ifCache)
{
	//var bodyText = document.body.createTextRange().text;
	var bodyText;
	if (g_browserType == FIREFOXTYPE)
	{
		bodyText = document.createRange();
	}
	else
	{
		bodyText = document.body.createTextRange().text;
	}

	var tmpMatchArr = new Array();
	var tmpMatchNum = 0;
	bodyText.replace(keyReg, function($0, $1, $2)
		{
			var str;
			tmpMatchArr[tmpMatchNum] = new JMatch($0, $1, tmpMatchNum);
			tmpMatchNum ++;
			if (!ifCache)
			{
			    try
			    {
					g_leiyanMatchKeyList.InsertItem(g_keyArray[$0], 0);
			    }
			    catch(e)
			    {
			    }
			}
			return str;
		}
        );

    var tmpHtml;
    var numObj = new Object();
    RealReplaceKey(keyAdvArr, tmpMatchArr, tmpHtml, numObj);
}


//***************************************************************/
//
// 替换关键词广告，并更新服务器相应的关键词列表
//
//***************************************************************/
function ReplaceProcess(matchKeyRegex, matchKeyAdvArr,  ifCache)
{
	var replaceStr = "";
	if (g_ifReplaceBody && g_browserType != FIREFOXTYPE)
	{
		MatchKeywordForBody(matchKeyRegex, matchKeyAdvArr, ifCache);
	}
	else
	{
		var replaceObjLen = g_replaceObj.length;
		for (var i = 0; i < replaceObjLen; i++)
		{
			var htmlstr = g_replaceObj[i].innerHTML;
			var tmpNum = new Object();
			tmpNum.num=0;
			replaceStr = MatchKeyword(matchKeyRegex, matchKeyAdvArr,  htmlstr, ifCache, tmpNum);
			if (tmpNum.num > 0)
			{
				g_replaceObj[i].innerHTML = replaceStr;
			}
		}
	}

	//
	// 未缓存, 发送缓存消息
	//
	if (!ifCache && g_leiyanHref.indexOf("my.xunlei.com") == -1) 
	//if (!ifCache)
	{
		var updateUrl = "http://leiyancache.xunlei.com/eyescache/updateeyeskey"
			+ "?keylist=" + g_leiyanMatchKeyList.ToString(0) 
			+ "&cacheurl=" + encodeURIComponent(g_leiyanHref) 
			+ "&leiyan_cachedoclen=" + g_docLen;
		newScriptUrl(updateUrl);
	}

	if (thunderdisplayarr.length > 0)
	{
		newScriptUrl(GetReferPvUrl(1));

		if (typeof(g_allianceStatPvReferUrl) != "undefined")
		{
			newIframeUrl(decodeURIComponent(g_allianceStatPvReferUrl));
		}
	}
	else
	{
		newScriptUrl(GetReferPvUrl(0));
	}

	//var preCount = (thunderdisplayarr.length < g_preLoadLeiyanCount) ? thunderdisplayarr.length : g_preLoadLeiyanCount;
	//for (var k = 0; k < preCount; ++k)
	//{
	//	thunderdisplayarr[k].preLoad(k);
	//}

	//createIframe(thunderdisplayarr.length);
}

function PreMatchKey_callback()
{
	try
	{
		ReplaceProcess(g_matchKeyRegex, g_matchKeyAdvArr, false);
	}
	catch(e)
	{
	}
}


//***************************************************************/
//
// 匹配页面关键词，并查询对应的关键词广告
//
//***************************************************************/
function PreMatchKey(keyReg, keyArr)
{
	if (keyReg.toString() == "" 
		|| keyReg.toString() == "//ig" 
		|| keyReg.toString() == "//gi" 
		|| keyReg.toString() == "//"
		)
	{
		return;
	}

	var matchKeySet = new JLeiyanMap(400);

	//匹配整个body的文字
	//var htmlstr = document.body.createTextRange().text;//g_replaceObj[i].innerHTML;
	var htmlstr;
	if (g_browserType == FIREFOXTYPE)
	{
		//htmlstr = document.createRange();
		var replaceObjLen = g_replaceObj.length;
		for (var i=0; i < replaceObjLen; i++)
		{
			var htmlstr = g_replaceObj[i].innerHTML;
			var leiyanMatchArr = htmlstr.match(keyReg);
			if (leiyanMatchArr != null)
			{
				var leiyanMatchArrLen = leiyanMatchArr.length;
				for (var j=0; j < leiyanMatchArrLen; j++)
				{
					matchKeySet.InsertItem(keyArr[leiyanMatchArr[j]], 0);
				}
			}
		}
	}
	else
	{
		htmlstr = document.body.createTextRange().text;

		var leiyanMatchArr = htmlstr.match(keyReg);
		if (leiyanMatchArr != null)
		{
			var leiyanMatchArrLen = leiyanMatchArr.length;
			for (var j=0; j < leiyanMatchArrLen; j++)
			{
				matchKeySet.InsertItem(keyArr[leiyanMatchArr[j]], 0);
			}
		}
	}

	var keylistStr = matchKeySet.ToString(0);
	if (matchKeySet.itemNum == 0)
	{
		return;
	}
	
	var getLeiyanUrl = "http://leiyancache.xunlei.com/eyescache/getkeylist"
		+ "?siteid=" + g_siteId 
		+ "&chanid=" + g_channelId 
		+ "&selfchanid=" + g_selfChannelId 
		+ "&platform=" + g_platform;
	if (g_encodeType == "UTF-8")
	{
		getLeiyanUrl += "&encodetype=utf8";
	}
	getLeiyanUrl += "&keylist=" + keylistStr;
	
	var leiyanJs  = CreateScriptObj(getLeiyanUrl);
	ScriptProcess(leiyanJs, "", "PreMatchKey_callback");
}

function LoadEyesData_callback()
{
	try
	{
		PreMatchKey(g_keyRegex, g_keyArray);
	}
	catch(e)
	{
	}
}


//***************************************************************/
//
// 下载平台所有的关键字 
//
//***************************************************************/
function LoadEyesData(stationId)
{
	try
	{
		var sUrl;
		if (g_encodeType == "UTF-8")
		{
			sUrl = "http://leiyanstatic.xunlei.com/js/thunderkeyreg_"+stationId+"_utf8.js";
		}
		else
		{
			sUrl = "http://leiyanstatic.xunlei.com/js/thunderkeyreg_"+stationId+".js";
		}

		var tempjs = CreateScriptObj(sUrl, g_encodeType);
		ScriptProcess(tempjs, "", "LoadEyesData_callback");
	}
	catch(e)
	{
	}
}



//***************************************************************/
//
// 加载页面对应的关键词及广告内容
//
//***************************************************************/
function ProcessKeywod()
{
	try
	{
		//39健康网特殊处理,屏蔽北京和广州
		if (g_ipAraeInfo && g_channelId==60 &&  (g_ipAraeInfo==60009 ||g_ipAraeInfo==30000))
		{
			return;
		}
		
		if (g_cacheResult && g_leiyanHref.indexOf("my.xunlei.com") == -1)
		//if (g_cacheResult)
		{
			var changeRate = Math.abs(g_cacheDocLen - g_docLen) / g_docLen; //文章长度变化大于20%， 就要重新匹配
			if (changeRate < 0.2)
			{
				ReplaceProcess(g_matchKeyRegex, g_matchKeyAdvArr, true);
			}
			else
			{
				LoadEyesData(g_platform);
			}
		}
		else //下载所有的关键字 
		{
			LoadEyesData(g_platform);
		}

		if (!g_cowkeCacheResult)
		{
			var cowkeUrl = GetCowkeUrl();
			if (cowkeUrl != "")
			{
				newScriptUrl(cowkeUrl);
			}
		}
	}
	catch(e)
	{
	}
}


//***************************************************************/
//
// 加载页面对应的关键词
//
//***************************************************************/
function CacheProcess(nPlatform)
{
	var getKeyUrl = "http://leiyancache.xunlei.com/eyescache/geteyeskey"
		+ "?cacheurl=" + encodeURIComponent(g_leiyanHref) 
		+ "&platform="  + nPlatform 
		+ "&siteid=" + g_siteId 
		+ "&chanid=" + g_channelId 
		+ "&selfchanid=" + g_selfChannelId 
		+ "&time=" + new Date().getTime();
	if (g_encodeType == "UTF-8")
	{
		getKeyUrl += "&encodetype=utf8";
	}

	var stationKeyJs = CreateScriptObj(getKeyUrl);
	ScriptProcess(stationKeyJs, "", "ProcessKeywod");
}


//***************************************************************/
//
// 加载channel对应的平台id
//
//***************************************************************/
var undefinedChannelStation = 35;

function LoadEyesByChannel()
{
	try
	{
		if (chanstationarr)
		{
			g_platform = chanstationarr[g_channelId];
			if (typeof(g_platform) == "undefined" || g_platform == "" || g_platform <= 0)
			{
				g_platform = undefinedChannelStation;
			}

			CacheProcess(g_platform);
		}
	}
	catch(e)
	{
	}
}


//***************************************************************/
//
// 主处理过程
//
//***************************************************************/

var thunderdisplayarr = new Array();
var g_ifReplaceBody=false;

function LeiyanMain()
{
	try
	{
		if (g_ifTest == "notest")
		{
			if (g_replaceId == -1 && g_replaceClass ==-1 && g_replaceTag == -1)
			{
				g_ifReplaceBody = true;
				g_replaceObj = new Array();
				g_replaceObj[0] = document.body;
			}
			else if (g_replaceId != -1)
			{
				if (g_replaceTag == -1)
				{
					var tmplist = g_replaceId.split(";");
					g_replaceObj = GetElementsByName(tmplist);
				}
				else
				{
					var tmplist = g_replaceTag.split(";");
					g_replaceObj = GetElementsByTags2(g_replaceId.split(";"), tmplist);
				}
			}
			else if (g_replaceClass != -1)
			{
				if (g_replaceTag == -1)
				{
					var tmplist = g_replaceClass.split(";");
					g_replaceObj = GetElementsByClass(tmplist);
				}
				else
				{
					var tmplist = g_replaceTag.split(";");
					g_replaceObj = GetElementsByTags2(g_replaceClass.split(";"), tmplist, 1);
				}
			}
			else
			{
				var tmplist = g_replaceTag.split(";");
				g_replaceObj = GetElementsByTags(tmplist);
			}
	
			if (false)
			{
				//var tmp = CreateScriptObj("http://leiyanstatic.xunlei.com/cachejs/leiyanUtil.js");
				//ScriptProcess(tmp);
			}
			
			if (true)
			{
				if (typeof(g_siteId) != "undefined"
					&& g_siteId != "" 
					&& typeof(g_platform) != "undefined" 
					&& g_platform != "")
				{
					if (g_leiyanHref.indexOf("my.xunlei.com") == -1)
					//if (true)
					{
						CacheProcess(g_platform);
					}
					else
					{
						ProcessKeywod();
					}
				}
				else		// 否则根据频道号计算出对应平台的广告
				{
					var tempjs = CreateScriptObj("http://leiyanstatic.xunlei.com/js/chanstation.js");
					ScriptProcess(tempjs, "", "LoadEyesByChannel");
				}
			}
	
			if (false)
			{
				var stationJs = CreateScriptObj("http://leiyanstatic.xunlei.com/js/chanstation.js");
				ScriptProcess(stationJs, "", "LoadEyesByChannel");
			}
		}
		else
		{
			FixEyeCallback();
		}
	}
	catch(e)
	{
	}
}
/*
function waitForReady()
{
	if (g_browserType == IETYPE && document.readyState != "complete")
	{
		setTimeout(waitForReady, 500);
		return;
	}
	else
	{
		LeiyanMain();
	}
}
waitForReady();
*/

LeiyanMain();


//***************************************************************/
//
// google
//
//***************************************************************/

/*
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
var pageTracker = _gat._getTracker("UA-1123681-6");
pageTracker._initData();
pageTracker._trackPageview();
*/




