// JavaScript Document
/*********************************************************
document.write("<div id='sessionIframeBox' style='display:none; position:absolute; z-index:-10000;'><iframe src='about:blank' id='sessionAjaxIframe' name='sessionAjaxIframe' width='0' height='0' scrolling='no'></iframe></div>");
创建隐藏框架，用于会话sessionAjax保持。


var sBox=document.createElement("div");
sBox.id="sessionIframeBox";
sBox.style.display='block';
sBox.style.position='absolute';
sBox.style.zIndex=10000;

var bdy=document.getElementsByTagName("body")[0];
bdy.appendChild(sBox);
var sBoxObj=document.getElementById("sessionIframeBox");
//创建Iframe的盒子。

var sIframe=document.createElement("iframe");
sIframe.src="";
sIframe.id="sessionAjaxIframe";
sIframe.name="sessionAjaxIframe";
sIframe.width="600";
sIframe.height="200";
sIframe.style.display="block";
sBoxObj.appendChild(sIframe);

var sIframeObj=document.getElementById("sessionAjaxIframe");
*********************************************************/

/****************************************************
//在页面上点击任一链接时触发一个事件的代码
//该函数必须在body标签之后。
确保所点的是a标签才执行
****************************************************/

$(document).ready(function(){
						   
	$("a").click(function(){
		
		var hrefUrl=$(this).attr('href');
		//原目标网址
		if((typeof hrefUrl)!='undefined')
			if(hrefUrl.indexOf('sessionget.asp?')>0)
			{		
				//alert("执行跟踪测试！");
				var pathStr=hrefUrl.split('?')[0];
				var qStr=hrefUrl.split('?')[1];
				var hrefUrlqStr="";
				if((typeof hrefUrl.split('?')[2])!='undefined')
					hrefUrlqStr=hrefUrl.split('?')[2];				
				var qStrArrs=qStr.split('&');
				
				var temStr=""
				var newqStr=""  //新的查询参数
				var newhrefUrl=""  //新的目标网址
				
				if(qStr!="")
				{
					for(var i=0;i<qStrArrs.length;i++)
					{
						temStr=qStrArrs[i].split('=')[0].toLowerCase();
						if(temStr=="hrefurl")
						{
							newhrefUrl=qStrArrs[i].split('=')[1];
						}
					}
				}
				if(hrefUrlqStr!="")
					newhrefUrl+="?"+hrefUrlqStr;
				$(this).attr('href',newhrefUrl);
			}
		
		
		
		
		
		hrefUrl=$(this).attr('href');
		//alert(hrefUrl);
		var hrefHostName=hrefUrl.replace("http://","").replace("https://","").split("/")[0];
		var currentHostName=window.location.href.replace("http://","").replace("https://","").split("/")[0];
		//alert(hrefHostName);
		//alert(currentHostName);
		if(hrefHostName!=currentHostName)
		{
			
			var isDtaoDomainHost=isDtaoDomain(hrefHostName);
			//目标域名是否是地淘的域名。
			
			if(isDtaoDomainHost)
			{
				
				//只有目标域名是地淘域名，才执行sessionAjax
				var hrefDomainGeng=dtaoDomainGeng(hrefHostName);  //目标域名根
				var currentDomainGeng=dtaoDomainGeng(currentHostName);  //当前域名根
				//alert("测试跟踪#0"+hrefHostName+"%%"+currentHostName);
				//alert("测试跟踪#2"+hrefDomainGeng+"%%"+currentDomainGeng);
				//是否跨域名。			
				var isKuaDomain
				if(hrefDomainGeng==currentDomainGeng)
				{
					//alert("测试跟踪isKuaDomain为false");
					isKuaDomain=false				
				}
				else
				{
					//alert("测试跟踪isKuaDomain为true");
					isKuaDomain=true
				}
				
				
				//目标域名根和当前域名根都不为false，并且跨域，才执行以下跨域Ajax函数。
				if(hrefDomainGeng&&currentDomainGeng&&isKuaDomain)
				{
					
					//alert("测试跟踪enterAjax");
					var nw=new Date();
					var userName,loginRandom,loginPinCode;
					userName=GetCookie("loginDftb","userName");
					loginRandom=GetCookie("loginDftb","loginRandom");
					loginPinCode=GetCookie("loginDftb","loginPinCode");
					
					
					//alert("userName#"+userName);
					//alert("loginRandom#"+loginRandom);
					//alert("loginPinCode#"+loginPinCode);
					if(userName!=""&&loginRandom!=""&&loginPinCode!="")
					{
						var postParam
						postParam="userName="+escape(userName)+"&loginRandom="+loginRandom;
						postParam=postParam+"&loginPinCode="+escape(loginPinCode);			
						//alert(postStr);
						
						var newhrefUrl="";
						
/*						if(hrefUrl.indexOf("?")>0)
							newhrefUrl=hrefUrl+"&"+postParam;
						else
							newhrefUrl=hrefUrl+"?"+postParam;*/
							
						//hrefUrl="http://"+hrefUrl;
						
						var sessiongetUrl="http://"+hrefHostName+"/joinajax/sessionget.asp?"+postParam+"&hrefurl="+hrefUrl;
							//alert(sessiongetUrl);
							//hrefUrlnewhrefUrl
						$(this).attr('href',sessiongetUrl);
						return true;
					}
					
					
				}
			}
		}								  
	});
	
	
	$("a").mouseover(function(){
		var hrefUrl=$(this).attr('href');
		//原目标网址
		if((typeof hrefUrl)!='undefined')
			if(hrefUrl.indexOf('sessionget.asp?')>0)
			{		
				//alert("执行跟踪测试！");
				var pathStr=hrefUrl.split('?')[0];
				var qStr=hrefUrl.split('?')[1];
				var hrefUrlqStr="";
				if((typeof hrefUrl.split('?')[2])!='undefined')
					hrefUrlqStr=hrefUrl.split('?')[2];				
				var qStrArrs=qStr.split('&');
				
				var temStr=""
				var newqStr=""  //新的查询参数
				var newhrefUrl=""  //新的目标网址
				
				if(qStr!="")
				{
					for(var i=0;i<qStrArrs.length;i++)
					{
						temStr=qStrArrs[i].split('=')[0].toLowerCase();
						if(temStr=="hrefurl")
						{
							newhrefUrl=qStrArrs[i].split('=')[1];
						}
					}
				}
				if(hrefUrlqStr!="")
					newhrefUrl+="?"+hrefUrlqStr;
				$(this).attr('href',newhrefUrl);
			}
	});
	
	
/*	$("a").mouseout(function(){
		var hrefUrl=$(this).attr('href');
		//原目标网址

		if(hrefUrl.indexOf('?')>0)
		{
			//alert("执行跟踪测试！");
			var pathStr=hrefUrl.split('?')[0];
			var qStr=hrefUrl.split('?')[1];				
			var qStrArrs=qStr.split('&');
			
			var temStr=""
			var newqStr=""  //新的查询参数
			var newhrefUrl=""  //新的目标网址
			
			if(qStr!="")
			{
				for(var i=0;i<qStrArrs.length;i++)
				{
					temStr=qStrArrs[i].split('=')[0].toLowerCase();
					if(temStr!="username" && temStr!="loginrandom" && temStr!="loginpincode")
					{
						if(newqStr=="")
							newqStr=qStrArrs[i];
						else
							newqStr+="&"+qStrArrs[i];
					}
				}
			}
			if(newqStr!="")
			{
				newhrefUrl=pathStr+"?"+newqStr;		
			}
			else
			{
				newhrefUrl=pathStr;
			}
			
			$(this).attr('href',newhrefUrl);
		}
		
	});*/
					   
});




/*document.body.onclick=function(evt)
{
	//兼容两大浏览器取得event对象
	evt = evt||window.event;
	//兼容两大浏览器取得event对象的元素对象。
	var cObj = evt.srcElement?evt.srcElement:evt.target;
	//判断元素对象的标签名是否是A
	if (cObj.tagName=="A")
	{
		//alert(cObj.href);
		//alert("onclick事件触发!");
		//return false;
		//return sessionAjax(cObj.href);
		
		
		var hrefUrl=cObj.href;
		
		
		//alert(hrefUrl);
		var hrefHostName=hrefUrl.replace("http://","").replace("https://","").split("/")[0];
		var currentHostName=window.location.href.replace("http://","").replace("https://","").split("/")[0];
		//alert(hrefHostName);
		//alert(currentHostName);
		if(hrefHostName!=currentHostName)
		{
			
			var isDtaoDomainHost=isDtaoDomain(hrefHostName);
			//目标域名是否是地淘的域名。
			
			if(isDtaoDomainHost)
			{
				
				//只有目标域名是地淘域名，才执行sessionAjax
				var hrefDomainGeng=dtaoDomainGeng(hrefHostName);  //目标域名根
				var currentDomainGeng=dtaoDomainGeng(currentHostName);  //当前域名根
				//alert("测试跟踪#0"+hrefHostName+"%%"+currentHostName);
				//alert("测试跟踪#2"+hrefDomainGeng+"%%"+currentDomainGeng);
				//是否跨域名。			
				var isKuaDomain
				if(hrefDomainGeng==currentDomainGeng)
				{
					//alert("测试跟踪isKuaDomain为false");
					isKuaDomain=false				
				}
				else
				{
					//alert("测试跟踪isKuaDomain为true");
					isKuaDomain=true
				}
				
				
				//目标域名根和当前域名根都不为false，并且跨域，才执行以下跨域Ajax函数。
				if(hrefDomainGeng&&currentDomainGeng&&isKuaDomain)
				{
					
					//alert("测试跟踪enterAjax");
					var nw=new Date();
					var userName,loginRandom,loginPinCode;
					userName=GetCookie("loginDftb","userName");
					loginRandom=GetCookie("loginDftb","loginRandom");
					loginPinCode=GetCookie("loginDftb","loginPinCode");
					
					
					//alert("userName#"+userName);
					//alert("loginRandom#"+loginRandom);
					//alert("loginPinCode#"+loginPinCode);
					if(userName!=""&&loginRandom!=""&&loginPinCode!="")
					{
						var postParam						
						postParam="userName="+escape(userName)+"&loginRandom="+loginRandom;
						postParam=postParam+"&loginPinCode="+escape(loginPinCode);
						//postParam+="&dt="+nw.getTime();
						
						//var postUrl,postStr
						//postUrl="http://"+hrefHostName+"/inc/sessionAjax.asp";						
						//postStr=postUrl+"?"+postParam;
						//getTime()是Date对象的一个方法，返回 1970 年 1 月 1 日至今的毫秒数。是一个长整型的数		
						
						//alert(postStr);
						if(cObj.href.indexOf("?")>0)
							cObj.href=cObj.href+"&"+postParam;
						else
							cObj.href=cObj.href+"?"+postParam;
						return true;
					}

					
					
				}
			}
		}
			
			
		
	}
}*/


/****************************************************
参数说明
hrefUrl是链接的目标网网址
该函数作用：
1、判断目标网址与当前网址是否是同一个根域名下的子域名。
2、判断目标网址是否属于地淘的域名。
3、如果不是相同根域下的子域名，并且是地淘域名，则创建sessionAjax会话状态。
****************************************************/
function sessionAjax(hrefUrl)
{
	//alert(hrefUrl);
	var hrefHostName=hrefUrl.replace("http://","").replace("https://","").split("/")[0];
	var currentHostName=window.location.href.replace("http://","").replace("https://","").split("/")[0];
	//alert(hrefHostName);
	//alert(currentHostName);
	if(hrefHostName!=currentHostName)
	{
		
		var isDtaoDomainHost=isDtaoDomain(hrefHostName);
		//目标域名是否是地淘的域名。
		
		if(isDtaoDomainHost)
		{
			
			//只有目标域名是地淘域名，才执行sessionAjax
			var hrefDomainGeng=dtaoDomainGeng(hrefHostName);  //目标域名根
			var currentDomainGeng=dtaoDomainGeng(currentHostName);  //当前域名根
			//alert("测试跟踪#0"+hrefHostName+"%%"+currentHostName);
			//alert("测试跟踪#2"+hrefDomainGeng+"%%"+currentDomainGeng);
			//是否跨域名。			
			var isKuaDomain
			if(hrefDomainGeng==currentDomainGeng)
			{
				//alert("测试跟踪isKuaDomain为false");
				isKuaDomain=false				
			}
			else
			{
				//alert("测试跟踪isKuaDomain为true");
				isKuaDomain=true
			}
			
			
			//目标域名根和当前域名根都不为false，并且跨域，才执行以下跨域Ajax函数。
			if(hrefDomainGeng&&currentDomainGeng&&isKuaDomain)
			{
				
				//alert("测试跟踪enterAjax");
				var nw=new Date();
				var userName,loginRandom,loginPinCode;
				userName=GetCookie("loginDftb","userName");
				loginRandom=GetCookie("loginDftb","loginRandom");
				loginPinCode=GetCookie("loginDftb","loginPinCode");
				
				
				//alert("userName#"+userName);
				//alert("loginRandom#"+loginRandom);
				//alert("loginPinCode#"+loginPinCode);
				var postUrl,postParam,postStr
				postUrl="http://"+hrefHostName+"/inc/sessionAjax.asp";
				
				postParam="userName="+escape(userName)+"&loginRandom="+loginRandom;
				postParam=postParam+"&loginPinCode="+escape(loginPinCode)+"&dt="+nw.getTime();
				
				postStr=postUrl+"?"+postParam;
				//getTime()是Date对象的一个方法，返回 1970 年 1 月 1 日至今的毫秒数。是一个长整型的数		
				
				//alert(postStr);
				cObj.href=cObj.href+"?"+postParam;
				return true;
				/********************************************************************
				if(document.getElementById("sessionAjaxIframe"))
				{
					var sonFrameObj=document.getElementById("sessionAjaxIframe");
					//sonFrameObj.src="about:blank";
					
					sonFrameObj.src=postStr;
					
					sonFrameObj.onload=function()
					{
						var strResult=sonFrameObj.document.getElementById("reVal").innerText;
						alert(strResult);
						
						if(strResult=="sessionCreated")
						{
							return true;
						}
						else
						{
							return false;
						}
					}
				}
				********************************************************************************/
				
				
			}
		}
	}
}


/************************************************** 
由于asp的cookie是经过url编码的，所以读之前要unescape一下。
下面是我用正则的方法取cookie，包括单值和多值：
参数说明： 
sMainName Cookie名 
sSubName Cookie子键名，留空表示单值Cookie 
**************************************************/ 
function GetCookie(sMainName, sSubName)
{
    var re=new RegExp((sSubName?sMainName+"=(?:.*?&)*?"+sSubName+"=([^&;$]*)":sMainName+"=([^;$]*)"),"i");
    return re.test(unescape(document.cookie)) ? RegExp["$1"] : "";
}



/************************************************** 
参数说明： 
dtaoDomain，地淘的域名
返回值是该地淘域名的根域名或false
本函数是将地淘的域名返回根域名。如果返回false则说明出现异常。
isDtaoDomain
**************************************************/ 
function dtaoDomainGeng(dtaoDomain)
{
	var hrefArrs=dtaoDomain.split(".");
	var domainGeng;
	switch(hrefArrs.length)
	{
		case 2:
			if(isDtao2DuanDomain(dtaoDomain))
			{				
				//alert("跟踪测试之dtaoDomainGeng_2_1");
				//domainGeng=dtaoDomain;
				return dtaoDomain;
			}
			else
			{				
				//alert("跟踪测试之dtaoDomainGeng_2_2");
				return false;
			}
			break;
		case 3:
			if(isDtao3DuanDomain(dtaoDomain))
			{
				//alert("跟踪测试之dtaoDomainGeng_3_1");
				//验证目标域是否是地淘三段域，如果是返回真
				//domainGeng=dtaoDomain;
				return dtaoDomain;				
			}
			else
			{
				//alert("跟踪测试之dtaoDomainGeng_3_2");
				//如果不是，再验证二段域是否地淘根域
				domainGeng=hrefArrs[1]+"."+hrefArrs[2];
				if(isDtao2DuanDomain(domainGeng))
				{				
					//alert("跟踪测试之dtaoDomainGeng_3_2_1");
					return domainGeng;
				}
				else
				{
					//本函数是将地淘的域名返回根域名。如果返回false则说明出现异常。
					return false;
				}
			}
			break;
		case 4:
			domainGeng=hrefArrs[1]+"."+hrefArrs[2]+"."+hrefArrs[3];
			if(isDtao3DuanDomain(domainGeng))
			{
				//验证目标域是否是地淘三段域，如果是返回真
				return domainGeng;
			}
			else
			{
				//如果不是，再验证二段域是否地淘根域
				domainGeng=hrefArrs[2]+"."+hrefArrs[3];
				if(isDtao2DuanDomain(domainGeng))
				{				
					return domainGeng;
				}
				else
				{
					//本函数是将地淘的域名返回根域名。如果返回false则说明出现异常。
					return false;
				}
			}
			break;
		case 5:
			domainGeng=hrefArrs[2]+"."+hrefArrs[3]+"."+hrefArrs[4];
			if(isDtao3DuanDomain(domainGeng))
			{
				//验证目标域是否是地淘三段域，如果是返回真
				return domainGeng;
			}
			else
			{
				//本函数是将地淘的域名返回根域名。如果返回false则说明出现异常。
				return false;
			}		
			break;
		default:
			alert("跟踪测试之dtaoDomainGeng_default");
			return false;
			break;		
	}	
	
}





/************************************************** 
作用：验证一个域名是否是地淘的域名，如果是返回true,否则返回false
参数说明：hrefHostName是目标主机名
**************************************************/ 
function isDtaoDomain(hrefHostName)
{
	var hrefArrs=hrefHostName.split(".");
	var domainGeng;
	switch(hrefArrs.length)
	{
		case 2:
			return isDtao2DuanDomain(hrefHostName);
			break;
		case 3:
			if(isDtao3DuanDomain(hrefHostName))
			{
				//验证目标域是否是地淘三段域，如果是返回真
				return true;
			}
			else
			{
				//如果不是，再验证二段域是否地淘根域
				domainGeng=hrefArrs[1]+"."+hrefArrs[2];
				return isDtao2DuanDomain(domainGeng);
			}
			break;
		case 4:
			domainGeng=hrefArrs[1]+"."+hrefArrs[2]+"."+hrefArrs[3];
			if(isDtao3DuanDomain(domainGeng))
			{
				//验证目标域是否是地淘三段域，如果是返回真
				return true;
			}
			else
			{
				//如果不是，再验证二段域是否地淘根域
				domainGeng=hrefArrs[2]+"."+hrefArrs[3];
				return isDtao2DuanDomain(domainGeng);
			}
			break;
		case 5:
			domainGeng=hrefArrs[2]+"."+hrefArrs[3]+"."+hrefArrs[4];
			//验证目标域是否是地淘三段域，如果是返回真
			return isDtao3DuanDomain(domainGeng);
			break;
		default:
			return false;
			break;		
	}
}


/************************************************** 
是否是地淘的2段的域名根
作用：验证一个2段的根域名是否是地淘的根域名，如果是返回true,否则返回false
参数说明：domainGeng是任意一个根域名。
**************************************************/ 
function isDtao2DuanDomain(domainGeng)
{
	switch(domainGeng)
	{
		//地淘网
		case "dftb.cn":
		//地淘
		case "dtao.cn":
		case "dtao.net":
		//地方企业
		case "df7y.com":
		case "df7y.cn":
		//地方物流
		case "dfw6.com":
		case "dfw6.cn":
		//地淘.cn和地淘.com
		case "xn--ces204c.cn":
		case "xn--ces204c.com":
		//地方淘宝.com
		case "xn--cesw6h2vkvni.com":
		//中国地方
		case "chinadif.cn":
		case "chinadif.com":
		case "chinadifang.com":
		case "chinadifang.cn":
		//猫咪Q
		case "maomiq.cn":
		case "maomiq.com":
		//付款宝
		case "fkbao.cn":
		case "fkbao.com":
		//暂没启用的
		case "fukuanbao.cn":
			return true;
			break;
		default:
			return false;
			break;
	}
}



/************************************************** 
是否是地淘的3段的域名根
作用：验证一个3段的根域名是否是地淘的根域名，如果是返回true,否则返回false
参数说明：domainGeng是任意一个3段的根域名。
**************************************************/ 
function isDtao3DuanDomain(domainGeng)
{
	switch(domainGeng)
	{
		case "dftb.com.cn":
		case "dftb.net.cn":
		case "df7y.com.cn":
		case "dfw6.com.cn":
		case "chinadif.com.cn":
		case "chinadifang.com.cn":
		case "maomiq.com.cn":
		case "fkbao.com.cn":
		case "fukuanbao.com.cn":
			return true;
			break;
		default:
			return false;
			break;
	}
}
