var dxq1;
var dxq2;
var orx;
var ory;
var drgobj;
var targetobj;
var http_request = false;
var cmenu;
var defaultAction = "/visit.do";/**默认请求地址*/
/**
	二维数组,不同的域名对应不同的请求地址
*/
var domins = new Array(
					["haodewap.com","/visit.do"],
					["hd.la","/visit.do"]
				);

/**
	根据域名返回指定的view页面的请求地址.
	根据已知域名请参考 变量： domins是二维数组
*/
function visitAction(){

	return domins[0][1];
}
function visitDomin(){

	var domain;
	var hrefURL = window.location.href;
	
	if(hrefURL.indexOf(domins[0][0]) != -1){
		domain = domins[0][0];
	}else if(hrefURL.indexOf(domins[1][0]) != -1){
		domain = domins[1][0];
	}else{
		domain = domins[1][0];
	}

	return domain;
}

//****************之上***********

/**目前有首页调用,body部分没有右键菜单*/
function init(userShuqian){
	window.ondeactivate=function(){
		alert(event.toElement);
	}
	/**这里主要用于 后台书签管理页面 的自定义收藏初始化、与init方法的区别是 少了初始化默认值推荐
		下面的if 只有在后台 页面时才会成立
	*/
	if(userShuqian != "userShuqian")
	{
		/**默认推荐的链接*/
		defaultLink();
	}
	/**初始化收藏链接的删除属性*/
	initDelAtt();
}
/**
 * 手机框连接“拦截器”，主要是实现view、game.jsp页面“手机框”中连接请求地址.如果是“浏览器”页面则省略本页面刷新.
 * on_click_interceptor
 * @param {type} obj
 * 
 */
function on_click_interceptor(obj){

	/**
	 * DEMO：
	 * http://www.haodewap.com3:8081/visit.do?wapurl=http://24sp.cc/wap/index.do?type=09&ch=10098&flag=a&stationmaster=10098
	 */
	var href = obj.href;
	var siteURL = href.substring(href.lastIndexOf("http"),href.length);/**业务请与上面demo地址作参考*/
	var windowURL = document.location.href;
	//alert(siteURL);
	//http://www.haodewap.com3/visit.do?wapurl=/downloadinfo.action?m=getDisplayInfoByID_Wap&id=39

	if(windowURL.indexOf("visit") != -1  || windowURL.indexOf("view.jsp") != -1 || windowURL.indexOf("game.jsp") != -1){
		/**这里查看软件单条信息特殊处理*/
		if(siteURL.indexOf("visit.do?wapurl=/downloadinfo.action?m=getDisplayInfoByID_Wap") != -1){
			wapview.location = "http://" + visitDomin() + siteURL.substring(siteURL.indexOf("=")+1,siteURL.length);
		}else if(siteURL.indexOf("visit.do?wapurl=/fileinfo.action?m=downFile") != -1){
			/**这里是下载地址*/
			siteURL = "http://" + visitDomin() + siteURL.substring(siteURL.indexOf("=")+1,siteURL.length);
			window.open(siteURL);
		}else{
			wapview.location = "/visits.do?wapurl="+siteURL;
		}
	}else{
		window.open(href);
	}
}
/**将某个对象隐藏*/
function menuhide(mname){
	if (!mname) return;
	var tobs=document.getElementById(mname);
	tobs.style.display="none";
}
/**右键菜单*/
function menushow(v,mname,tagAHrefTitle){ 
	menuhide(cmenu);
	event.cancelBubble = true;/**阻隔事件*/
	if(v.tagName == "DIV"){
		targetobj=document.getElementById('hidea');
	}/**这里的表示用户点击的 收藏管理中的 管理 属性、则要根据 该方法的第三个参数获取正确的标签a 对象赋给targetobj. */
	else if(v.tagName == "SPAN"){
		targetobj = getTargetobj(tagAHrefTitle);
	}else{
		targetobj=v;
	}
	var tob=document.getElementById(mname);
	tob.style.display="block";
	
	var _Left;
	var _Top;
	/**当页面标准为http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd 时*/
	_Left = event.clientX + document.documentElement.scrollLeft;
	_Top  = event.clientY + document.documentElement.scrollTop;
	var bname = navigator.appName;
	if (bname.search(/microsoft/i) != 0){/**非IE*/
	}else{/**IE*/
		/**当时以下文件时采用不同的方式*/
		var href = document.location.href;
		if(href.indexOf("visit") != -1 || href.indexOf("game.jsp") != -1 || href.indexOf("view.jsp") != -1 || href.indexOf("wapurl") != -1){
			_Left = event.clientX + document.body.scrollLeft;
		 	_Top  = event.clientY + document.body.scrollTop;
		}
	}
	tob.style.display="block";
	tob.style.left = _Left.toString() + 'px';
	tob.style.top  = _Top.toString()  + 'px';
	document.body.onclick=new Function("menuhide('"+mname+"')");
	cmenu=mname;
}
/**根据 该方法的 参数tagAHrefTitle 返回符合的具体对象 参数的规则是：例如: http://www.baidu.com@&百度
	该方法则要根据 参数分割出的值 与 当前用户的自定义收藏中 的每一个 对象 如果 href true and innerHTML true 则返回当前遍历到的 对象getTargetobj。
*/
function getTargetobj(tagAHrefTitle)
{
	var targetobj;
	var hrefAndInnerHTML = tagAHrefTitle.split("@&");
	var delHref = unescape(hrefAndInnerHTML[0]);
	var delInnerHTML = unescape(hrefAndInnerHTML[1]);
	/**获取一个存储用户收藏链接的容器对象*/
	var adiv = acceptdivObj();
	var adivas=adiv.getElementsByTagName("a");
	/**取得内容、在过滤内容中的<br>大小写、最后替换统一格式小写*/
	var adiva = adiv.innerHTML.replace(/<br>/g,"<BR>").replace(/<BR>/g,"<br>");
	var len = adivas.length;/**在容器adiv中所有标签a 的对象个数*/
	for(var i = 0;i<len;i++)
	{
		/**注意 if 中的条件  原因是这样的：由于在初始化的时候在原有的收藏 后面追加了 删除属性.
		*/
		/**如果条件成立说明当前项不是所要删除的项*/
		if(adivas[i].href == delHref && adivas[i].innerHTML == delInnerHTML)
		{
			targetobj = adivas[i];
			break;
		}
	}
	return targetobj;
}
/**书签重命名*/
function alterEdit(){
	var link = targetobj.href;
	var title = targetobj.innerHTML;
	document.getElementById('resetTitle').value = title;
	document.getElementById('resetLink').value = link;
	popDialog('resitename',400,150);
}
/**书签重命名action处理函数*/
function resiteEdit(title)
{
	targetobj.innerHTML=title;
	saveFavorite();
	hidePopupLoginDialog('resitename');
}
/**弹出窗口添加收藏的链接处理请求函数*/
function alterAdd(aLink,aTitle){

	var resultA = null;/**最后的结果数据*/
	var subContent = null;/**存储截取的内容字符串：站点链接地址*/
	var flag = "0";/**0=否、1=真；含义是：是否有重复项；默认情况下没有重复的。*/
	
	/**验证是否为空、如果为空则else分支*/
	if (aLink != null && aLink != ""){
		aLink=aLink.replace(/(^\s*)|(\s*$)/g, "");
		var adiv=document.getElementById("acceptdiv");
		var adiva=adiv.getElementsByTagName("a");
		/**如果所输入的地址不是以：http://开头的则如下操作*/
		if(aLink.indexOf("http://") == -1){
				aLink = "http://" + aLink;
		}
		/**验证添加重复项的链接地址、过滤*/
		for(i=0;i<adiva.length;i++) {
			/**如果含有http://则 不等于-1，则条件成立*/
			if(adiva[i].href.indexOf("http://") != -1){
				/**截取这个字符串的最后一次以：http://开始的到、整个字符串的总长度*/
				/**adiva[i].href.lastIndexOf("http://")//最后一次出现的以：http://开头*/
				subContent = adiva[i].href.substring(adiva[i].href.lastIndexOf("http://"),adiva[i].href.length);
				/**如果原始的链接地址等于当前自定义添加的标签内容地址相同则*/
				if(subContent == aLink){
					/**整个for循环终止。*/
					flag = "1";
					break;
				}
			}
		}
		/**如果等于1 说明有重复项、选项.*/
		if(flag == "1"){
			/**如果有重复项则如如下提示、如果if不成立则再次提示是否 还添加*/
			if (!window.confirm("您确定要添加重复的链接么？")) {
				return;
			}
		}
		/**追加为符合访问标准的地址*/
		/**aLink = "/visit.do?wapurl=" + aLink;//该代码修改为下行代码*/
		aLink = visitAction() + "?wapurl=" + aLink;
		/**标题的验证如果为空则赋予默认值。*/
		if(aTitle == null || aTitle == "")
		{
			aTitle = "自定义书签";
		}
		/**用于避免“自定义书签的重复”**/
		if(aTitle == "自定义书签")
		{
			var count = "";
			/**验证添加重复项的链接地址、过滤*/
			for(i=0;i<adiva.length;i++) {
				/**如果含有http://则 不等于-1，则条件成立*/
				if(adiva[i].innerHTML.indexOf("自定义书签") != -1){
					++count;
				}
			}
			aTitle += count;
		}
		resultA="<a href='"+ aLink +"' class='link1_5'>" + aTitle + "</a><br>";
		adiv.innerHTML= resultA + adiv.innerHTML;
		adiva=adiv.getElementsByTagName("a");
		for(i=0;i<adiva.length;i++) {
				adiva[i].style.cssText='';
				adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
		}
	}
	saveFavorite();
	hidePopupLoginDialog('creatsitename');
}
/**添加一项*/
function additem(){

	var reg2_layer = document.getElementById("mousehandle");
	if(reg2_layer != null)
	{
		mousehandle.style.display="none";
		mousedone.style.display="block";
		mouseadd.style.display="block";
	}
	/**如果这里的targetobj 对象等于 null 说明 收藏的不是链接 而是 当前页浏览地址与标题*/
	if(targetobj == null){
		targetobj = document.getElementById("hidea");/**保存了 当前所浏览的页面标题、链接*/
	}
	var adiv=document.getElementById("acceptdiv");
	adiva=adiv.getElementsByTagName("a");
	var url = targetobj.href;
	if(url == null || url.indexOf("wapurl=null") > -1 || url.indexOf("wapurl/null") > -1){
		alert("很抱歉，本页为动态生成页面，不能完成添加！");
		hidePopupLoginDialog('recomend');
		return;
	}
	
	var url = targetobj.href;
	/**针对可能的重定向的URL,恢复URL原有的格式*/
	if(url != null && url.indexOf("wapurl/") > -1){
		url = urlrewrite(url);
	}
	/**因为添加后的“项”全部匹配追加了visit.do、所以如果在判断是否有重复时固先匹配上visit.do在做判断。*/
	for(i=0;i<adiva.length;i++) {
		if (adiva[i].href==url){
			if (!window.confirm("您确定要添加重复的链接么？")) return;
			break;
		}
	}
	aa="<a href='"+ url +"' class='link1_5'>"+targetobj.innerHTML+"</a><br>";
	adiv.innerHTML= aa + adiv.innerHTML;
	adiva=adiv.getElementsByTagName("a");
	for(i=0;i<adiva.length;i++) {
			adiva[i].style.cssText='';
			adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
	}
	saveFavorite();
	/**校验是否登录、如果是非登录状态则弹出一个登录or注册层提供用户登录or注册---该函数来自 /js/util.js中*/
	setTimeout("isLogin();",1000);
}
/**添加一项*/
function addItem(siteTitle,siteLink){

	var adiv=document.getElementById("acceptdiv");
	adiva=adiv.getElementsByTagName("a");
	var url = siteLink;
	/**转码，由于地址中可能会含有编过码的特殊字符，这里需要强制转换*/
	url = decodeURIComponent(url);
	
	/**地址重写*/
	url = "http://" + visitDomin() + visitAction() + "?wapurl=" + url

	/**因为添加后的“项”全部匹配追加了visit.do、所以如果在判断是否有重复时固先匹配上visit.do在做判断。*/
	for(i=0;i<adiva.length;i++) {
		if (adiva[i].href==url){
			if (!window.confirm("您确定要添加重复的链接么？")) return;
			break;
		}
	}
	aa="<a href='"+ url +"' class='link1_5'>"+siteTitle+"</a><br>";
	adiv.innerHTML= aa + adiv.innerHTML;
	adiva=adiv.getElementsByTagName("a");
	for(i=0;i<adiva.length;i++) {
			adiva[i].style.cssText='';
			adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
	}
	saveFavorite();
	/**校验是否登录、如果是非登录状态则弹出一个登录or注册层提供用户登录or注册---该函数来自 /js/util.js中*/
	setTimeout("isLogin();",1000);
}

/**批量添加-目前：1、搜索时的批量添加*/
function additems(tagAs){

	var adiv=document.getElementById("acceptdiv");
	adiv.innerHTML = tagAs + adiv.innerHTML;
	adiva=adiv.getElementsByTagName("a");
	for(i=0;i<adiva.length;i++) {
			adiva[i].style.cssText='';
			adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
	}
	saveFavorite();
	/**校验是否登录、如果是非登录状态则弹出一个登录or注册层提供用户登录or注册---该函数来自 /js/util.js中*/
	setTimeout("isLogin();",1000);
}
/***新增*end*/


/**删除一项*/
function removeitem(v){
	var arr = new Array();/**用于保存当前项的一个数组、temp的。*/
	var adiv=document.getElementById("acceptdiv");
	var aTextList = adiv.getElementsByTagName("a");/**获取原始的所有添加项*/
	var tmphtml=targetobj.outerHTML;/**将当前要移动的对象保存了起来*/
	targetobj.removeNode(true);/**将当前要移动的对象删除*/
	var aTextListSize = aTextList.length;/**获取大小*/
	if(aTextListSize == 0)
	{
		adiv.innerHTML = "";
	}
	for(j = 0;j<aTextListSize;j++)
	{
		arr[j] = aTextList[j].outerHTML;
	}
	for(k = 0;k<aTextListSize;k++)
	{
		if(k == 0)
		{
			adiv.innerHTML = aTextList[k].outerHTML + "<br/>";
		}else{
			adiv.innerHTML += arr[k] + "<br/>";
		}
	}
	adiv.innerHTML = adiv.innerHTML.replace(/<BR><BR>/,"<br>");
	var adiva=adiv.getElementsByTagName("a");
	for(i=0;i<adiva.length;i++) {
			adiva[i].classname="ap3gbox";
			adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
	}
	saveFavorite();
} 

/**上移到最上*/
function itemmoveuptop(v){
	var arr = new Array();/**用于保存当前项的一个数组、temp的。*/
	var adiv=document.getElementById("acceptdiv");
	var aTextList = adiv.getElementsByTagName("a");/**获取原始的所有添加项*/
	var tmphtml=targetobj.outerHTML;/**将当前要移动的对象保存了起来*/
	/**这种情况下的判断是：当添加一个项时点击了“上一到最上”、如果 为：1 即将消失、这样retur就好了*/
	if(aTextList.length == 1)
		return;
	targetobj.removeNode(true);/**将当前要移动的对象删除*/
	var aTextListSize = aTextList.length;/**获取大小*/
	for(j = 0;j<aTextListSize;j++)
	{
		arr[j] = aTextList[j].outerHTML;
	}
	adiv.innerHTML = "";
	for(k = 0;k<aTextListSize;k++)
	{
		if(k == 0)
		{
			adiv.innerHTML = tmphtml + "<br>";/**tmphtml就是要移动的项、加到最前面*/
		}
		adiv.innerHTML += arr[k] + "<br/>";
	}
	adiv.innerHTML = adiv.innerHTML.replace(/<BR><BR>/,"<br>");
	var adiva=adiv.getElementsByTagName("a");
	for(i=0;i<adiva.length;i++) {
			adiva[i].classname="ap3gbox";
			adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
	}
	saveFavorite();
}

/**上移*/
function itemmoveup(v){
	var adiv=document.getElementById("acceptdiv");
	var adiva=adiv.getElementsByTagName("a");
	for(i=0;i<adiva.length;i++) {
		if (adiva[i]==targetobj){
			/**此处修改了、要判断一下这个值是否为空、如果为空的话在下面。outerHTML会报错的、固加了一个if*/
			/**alert(adiva[i-1] == null);//这个是测试的结果如果为true说明这条数据已是第一条了*/
			if(adiva[i-1] != null)
			{
				var tmpobj=adiva[i-1].outerHTML;
				if (i>0){
					adiva[i-1].outerHTML=adiva[i].outerHTML;
					adiva[i].outerHTML=tmpobj;
					adiva[i].classname="ap3gbox";
					adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
					adiva[i-1].classname="ap3gbox";
					adiva[i-1].oncontextmenu = new Function("menushow(this,'menu');return false");
				}
			}
		}
	}
	saveFavorite();
}

/**下移到最下*/
function itemmovedownlast(v){
	var arr = new Array();/**用于保存当前项的一个数组、temp的。*/
	var adiv=document.getElementById("acceptdiv");
	var aTextList = adiv.getElementsByTagName("a");/**获取原始的所有添加项*/
	var tmphtml=targetobj.outerHTML;/**将当前要移动的对象保存了起来*/
	/**这种情况下的判断是：当添加一个项时点击了“上一到最下”、如果 为：1 即将消失、这样retur就好了*/
	if(aTextList.length == 1)
		return;
	targetobj.removeNode(true);/**将当前要移动的对象删除*/
	var aTextListSize = aTextList.length;/**获取大小*/
	for(j = 0;j<aTextListSize;j++)
	{
		arr[j] = aTextList[j].outerHTML;
	}
	for(k = 0;k<aTextListSize;k++)
	{
		if(k == 0)
		{
			adiv.innerHTML = arr[k] + "<br/>";
		}else{
			adiv.innerHTML += arr[k] + "<br/>";
		}
	}
	adiv.innerHTML += tmphtml + "<br/>";/**tmphtml就是要移动的项、加到最后面*/
	adiv.innerHTML = adiv.innerHTML.replace(/<BR><BR>/,"<br>");
	var adiva=adiv.getElementsByTagName("a");
	for(i=0;i<adiva.length;i++) {
			adiva[i].classname="ap3gbox";
			adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
	}
	saveFavorite();
}

/**下移*/
function itemmovedown(v){
	var adiv=document.getElementById("acceptdiv");
	var adiva=adiv.getElementsByTagName("a");
	for(i=0;i<adiva.length;i++) {
		if (adiva[i]==targetobj){
			/**此处修改了、要判断一下这个值是否为空、如果为空的话在下面。outerHTML会报错的、固加了一个if*/
			/**alert(adiva[i+1] == null);//这个是测试的结果如果为true说明这条数据已是最后一条了*/
			if(adiva[i+1] != null)
			{
				var tmpobj=adiva[i+1].outerHTML;
				if (i+1<adiva.length){
					adiva[i+1].outerHTML=adiva[i].outerHTML;
					adiva[i].outerHTML=tmpobj;
					adiva[i].classname="ap3gbox";
					adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
					adiva[i+1].classname="ap3gbox";
					adiva[i+1].oncontextmenu = new Function("menushow(this,'menu');return false");
				}
			}
		}
	}
	saveFavorite();
}

function saveFavorite(){
	http_request = false;
	if(window.XMLHttpRequest) {/**Mozilla, Safari,*/
		http_request = new XMLHttpRequest();
		if(http_request.overrideMimeType){ 
			http_request.overrideMimeType('text/xml');
		}
	}else if (window.ActiveXObject){/**IE*/
		try {            
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (e) {}
		}
	}
	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');  
		return false;
	}
	/**在添加到kao servlet 请求之前过滤一下收藏内容中的删除属性*start*/
	siftDelAtt();
	/**end*/
	var adiv=document.getElementById("acceptdiv");
	var what=adiv.innerHTML;
	what = trim(what);/**过滤空格 trim(param1)函数在util.js中*/
	/**随机生成文件名规避防dos设置*/
	var url="kao" + Math.floor(Math.random()*100) + ".fav?add";
	http_request.open("POST",url,true);
	http_request.send(what);
	/**保存完后在重新赋值 删除属性*/
	initDelAtt();
	return ;
}

function saveOk(){
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var response=http_request.responseText;
			if(response=="300"){
				window.location='/user/login.jsp';
			}else{
				/**alert(response);*/
				popDialog('helperResponse',400,193);
			}
		}else{
			alert('There was a problem with the request.');
		}
	}
}
function clearOK(){
	if (http_request.readyState == 4){
		if (http_request.status == 200){
		}else {
			alert('There was a problem with the request.');        
		}
	}
}
function saveFavByForm(){
	http_request = false;
	if(window.XMLHttpRequest) {/**Mozilla, Safari,*/
		http_request = new XMLHttpRequest();
		if(http_request.overrideMimeType){ 
			http_request.overrideMimeType('text/xml');
		}
	}else if (window.ActiveXObject){/**IE*/
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e) {
			try{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (e){}
		}
	}
	if(!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	/**在添加到kao servlet 请求之前过滤一下收藏内容中的删除属性*start*/
	siftDelAtt();
	//随机生成文件名规避防dos设置
	var url="kao" + Math.floor(Math.random()*100) + ".fav?save";
	http_request.open("POST",url,true);
	http_request.onreadystatechange=saveOk;  
	http_request.send(null);
	/**保存完后在重新赋值 删除属性*/
	initDelAtt();
}
	function clearFavorite(){
		http_request = false;
		if(window.XMLHttpRequest) { /**Mozilla, Safari,*/
			http_request = new XMLHttpRequest();
			if(http_request.overrideMimeType){
				http_request.overrideMimeType('text/xml');
			}
		}else if (window.ActiveXObject){ /** IE*/
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e) {
				try {
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				}catch (e){}
			}
		}
		if (!http_request) {
			alert('Giving up :( Cannot create an XMLHTTP instance');  
			return false;
		}
		document.getElementById("acceptdiv").innerHTML="";
		/**随机生成文件名规避防dos设置*/
		var url="kao" + Math.floor(Math.random()*100) + ".fav?clear";
		http_request.onreadystatechange=clearOK;  
		http_request.open("POST",url,true);
		http_request.send(null);
	}
	/**新窗口打开*/
	function newwindow(v){
		window.open(targetobj.href);
	}
	/**帮助*/
	function helpme(){
		window.open("/help/help.jsp");
	}
	/**推荐*/
	function recommend(){
		//该方法实现了 窗口与div 之间的隔离
		ScreenConvert();
		/**如果这里的targetobj 对象等于 null 说明 收藏的不是链接 而是 当前页浏览地址与标题*/
		if(targetobj == null){
			targetobj = document.getElementById("hidea");//保存了 当前所浏览的页面标题、链接
		}
		var url = targetobj.href;
		if(url == null || url.indexOf("wapurl=null") > -1 || url.indexOf("wapurl/null") > -1){
			alert("很抱歉，本页为动态生成页面，不能完成推荐！");
			return;
		}
		/**取出URL有两种方法，采用不同的编码方式*/
		/**地址中含有%，是点击链接用右键取出的URL地址，已经经过浏览器转码*/
		if(url.indexOf("%") > -1){
			url = decodeURIComponent(wapurl(url));
		}else{
			url = wapurl(url);
		}
		show('recomend',targetobj.innerHTML,url);
	}

	/**将静态化的地址(wapurl/3g.cn.htm)重写为,(wapurl=http://3g.cn)便于与原始的规则相适应*/
	function urlrewrite(str){
		var i = str.indexOf("wapurl/");
		var u;
		if(i > 0){
			/**7是字符串wapurl/的长度，4是字符串.htm的长度*/
			u = str.substring((i+7),(str.length - 4));
			/**
				改代码修改以下第二行代码
			*/
			/**str = str.substring(0,i) + "visit.do?wapurl=http://" + u;*/
			str = str.substring(0,i - 1) + visitAction() + "?wapurl=http://" + u;
		}
		return str;
	}
	/**将WEB的URL地址(wapurl/3g.cn.htm)中wap站点的URL地址提炼出来(http://3g.cn),用于网页推荐*/
	function wapurl(str){
		var i;
		if((i=str.indexOf("wapurl/")) > 0){//(wapurl/3g.cn.htm)
				/**7是字符串wapurl/的长度，4是字符串.htm的长度*/
				str = "http://" + str.substring((i+7),(str.length - 4));
		}
		else if((i=str.indexOf("wapurl=")) > 0){//(wapurl=http://3g.cn)
				/**7是字符串wapurl=的长度,截取到链接末尾*/
				str = str.substring((i+7),str.length);
		}
		return str;
	}
document.oncontextmenu=function(e){return false;}//屏蔽自身菜单
window.defaultStatus="鼠标点击☆收藏，手机即可访问!";

/**--可以实现ff浏览器中的右击效果*****实现ff事件event***************************/
function __firefox(){
	HTMLElement.prototype.__defineGetter__("runtimeStyle", __element_style); 
	window.constructor.prototype.__defineGetter__("event", __window_event); 
	Event.prototype.__defineGetter__("srcElement", __event_srcElement); 
}
function __element_style(){ 
	return this.style; 
}
function __window_event(){ 
	return __window_event_constructor(); 
}
function __event_srcElement(){ 
	return this.target; 
}
function __window_event_constructor(){ 
	if(document.all){ 
		return window.event; 
	}
	var _caller = __window_event_constructor.caller;
	while(_caller!=null){
	var _argument = _caller.arguments[0];
	if(_argument){
		var _temp = _argument.constructor;
		if(_temp.toString().indexOf("Event")!=-1){
			return _argument;
		}
	}
	_caller = _caller.caller;
	}
	return null;
}
if(window.addEventListener){
	__firefox();
}
/******************添加outerHTML属性***ff中****开始***/
if(window.HTMLElement){
	HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML){
		var r=this.ownerDocument.createRange();
		r.setStartBefore(this);
		var df=r.createContextualFragment(sHTML);
		this.parentNode.replaceChild(df,this);
		return sHTML;
	});
	HTMLElement.prototype.__defineGetter__("outerHTML",function(){
		var attr;
		var attrs=this.attributes;
		var str="<"+this.tagName.toLowerCase();
		for(var i=0;i<attrs.length;i++){
			attr=attrs[i];
			if(attr.specified)
				str+=" "+attr.name+'="'+attr.value+'"';
			}
		if(!this.canHaveChildren)
			return str+">";
		return str+">"+this.innerHTML+"</"+this.tagName.toLowerCase()+">";
	});
	HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){
		switch(this.tagName.toLowerCase()){
			case "area":
			case "base":
			case "basefont":
			case "col":
			case "frame":
			case "hr":
			case "img":
			case "br":
			case "input":
			case "isindex":
			case "link":
			case "meta":
			case "param":
			return false;
		}
		return true;
	});
}
/*******************添加outerHTML属性*******结束*/
/*****************************removeNode***************/
if(window.Node){/**修正Node的DOM*/
	/**替换指定节点*/
	Node.prototype.replaceNode=function(Node){
		this.parentNode.replaceChild(Node,this);
	}
	Node.prototype.removeNode=function(removeChildren){/**删除指定节点*/
		if(removeChildren){
			if(this.parentNode != null)
				return this.parentNode.removeChild(this);
		}else{
				var range=document.createRange();
				range.selectNodeContents(this);
				return this.parentNode.replaceChild(range.extractContents(),this);
			}
		}
		Node.prototype.swapNode=function(Node){/**交换节点*/
		var nextSibling=this.nextSibling;
		var parentNode=this.parentNode;
		node.parentNode.replaceChild(this,Node);
		parentNode.insertBefore(node,nextSibling);
	}
}


/****************新增功能业务区**************“删除”、“管理”**/

		var splitChar = " |";
		/**初始化一个del属性*/
		function initDelAtt()
		{
			/**清空 删除属性*/
			siftDelAtt();
			var result = "";/**最后返回的内容收藏*/
			/**获取一个存储用户收藏链接的容器对象*/
			var adiv = acceptdivObj();
			var adivas = adiv.getElementsByTagName("a");
			/**取得内容、在过滤内容中的<br>大小写、最后替换统一格式小写*/
			var adiva = adiv.innerHTML.replace(/<br>/g,"<BR>").replace(/<BR>/g,"<br>");

			var splits = adiva.split("<br>");/**利用已有的标签<br>做为分隔符*/
			var length = splits.length - 1;/**取得分割的长度、由于leng 的长度会比预定的长达多一 所以要减一 原因是最后多了一个<br>*/

			for(var i = 0;i<length;i++)
			{
				/**备注: 《1》escape(adivas[i])+"@&"+escape(adivas[i].innerHTML)+"@&"+i = 收藏链接a 的 hred + innerHTML + i(这里的i值在这里表示一个索引、为了避免重复链接、标题，删除时的一个标识、即在删除的时候如果出现了两个 链接、标题一样、这时将所选的当前删除项 i 值取出、在删除的遍历中 的i值对比相等皆是本次删除项)
						《2》splits[i] 等于= 整个标签a 例如<a href="http://www.haodewap.com">好的wap</a><br>
				*/
				result += (splits[i] + splitChar + appendTagDelAtt(escape(adivas[i].href)+"@&"+escape(adivas[i].innerHTML)+"@&"+i,adivas[i].innerHTML));//追加一个 删除属性
				result += (appendTagManageAtt(adivas[i].innerHTML));//追加一个 管理属性
				result += "<br>";
			}
			adiv.innerHTML = result;
			/**添加不同的右键菜单*/
			addMenu();
			addManageMenu();
		}
		/**校验是否已经有了删除属性 true/false  是/否*/
		function isDel()
		{
			var adiv = acceptdivObj();
			var adiva = adiv.innerHTML;
			if(adiva.indexOf("删除") != -1 && adiva.indexOf("<SPAN ") != -1)
			{
				return true;
			}
		}
		/**获取固定手机框容器ID对象*/
		function acceptdivObj()
		{
			return document.getElementById("acceptdiv");
		}
		/**追加 标签a 删除属性
			参数o 表示的值是：一个完整的 链接标签href+innerHTML例如:http://wap.haodewap.com@&好的wap
		*/
		function appendTagDelAtt(o,title)
		{
			/**由于o 是一个 完整的标签span 组成的所以要将所有的 字符转译一下这样才能确保不出现错误*/
			/**return "<span onClick=\"del('"+o+"');\">删除</span>";*/
			return "<span onClick=\"del('"+o+"');\" style='cursor:pointer;color:#999;font-size:12px;' title='点击删除\n"+title+"'>&nbsp;删除</span>";
		}
		/**追加 标签span 管理属性
			参数 title 表示要管理的标题
		*/
		function appendTagManageAtt(title)
		{
			/**由于o 是一个 完整的标签onClick 组成的所以要将所有的 字符转译一下这样才能确保不出现错误*/
			/**return "<span onClick=\"addManageMenu();\">删除</onClick>";*/
			return "<span att=\"manageMenu\" style='cursor:pointer;color:#999;font-size:12px;' title='单击管理\n"+title+"'>&nbsp;管理</span>";
		}
		/**添加管理菜单*/
		function addManageMenu()
		{
			var count = 1;//控制取得 管理adivSpan对象的下标
			/**获取一个存储用户收藏链接的容器对象*/
			var adiv = acceptdivObj();
			var adivas=adiv.getElementsByTagName("a");
			var adivSpan=adiv.getElementsByTagName("span");
			for(i=0;i<adivas.length;i++) {
				var hrefAndInnerHTML = escape(adivas[i].href)+"@&"+escape(adivas[i].innerHTML);
				/**参数att 请参考方法appendTagManageAtt 可以明白。*/
				if(adivSpan[i+count].getAttribute("att") == "manageMenu"){
					/**IE-支持*/
					adivSpan[i+count].onclick = new Function("menushow(this,'menu','"+hrefAndInnerHTML+"');return false;");
					//oncontextmenu
					adivSpan[i+count].oncontextmenu = new Function("menushow(this,'menu','"+hrefAndInnerHTML+"');return false;");
				}
				count++;
			}
		}
		/**参数o 的值结构是：http://wap.haodewap.com/@&好的wap 当然以&分割的两边已经是加密的了。*/
		function del(o)
		{
			/**要记住 因为在 所有的 标签a 后面追加了 删除属性 由于 删除属性中的href 中函数的值 进行了escape()函数转译
				所有这里在使用的时候别忘记了 反转译unescape();
			*/
			var hrefAndInnerHTML = o.split("@&");
			var delHref = unescape(hrefAndInnerHTML[0]);/**链接的href值*/
			var delInnerHTML = unescape(hrefAndInnerHTML[1]);/**练级的标题(InnerHTML)*/
			var thisLinkIndex = unescape(hrefAndInnerHTML[2]);/**当前连接的 i 索引值、用来区分相同 链接、标题的 当前项*/
			var result = "";
			/**获取一个存储用户收藏链接的容器对象*/
			var adiv = acceptdivObj();
			var adivas=adiv.getElementsByTagName("a");
			/**取得内容、在过滤内容中的<br>大小写、最后替换统一格式小写*/
			var adiva = adiv.innerHTML.replace(/<br>/g,"<BR>").replace(/<BR>/g,"<br>");
			var len = adivas.length;/**在容器adiv中所有标签a 的对象个数*/
			for(var i = 0;i<len;i++)
			{
				/**注意 if 中的条件  原因是这样的：由于在初始化的时候在原有的收藏 后面追加了 删除属性.
				*/
				/**如果条件成立说明当前项不是所要删除的项*/
				if(adivas[i].href != delHref || adivas[i].innerHTML != delInnerHTML)
				{
					result += "<a href='"+ adivas[i].href +"' class='link1_5'>"+adivas[i].innerHTML+"</a><br>";
				}else{/**如果执行了 else 则说明这一项正好是要删除的项、此时有一个校验、目的实现了相同 链接、标题的 当前项*/
					if(i != thisLinkIndex)
					{
						result += "<a href='"+ adivas[i].href +"' class='link1_5'>"+adivas[i].innerHTML+"</a><br>";
					}
				}
				/**其实、目前实现删除的思路是 根据所有收藏的索引、以上的if 分支其实可以省掉了、 不去的原因是，可以实现双重保险*/
			}
			/**最后将除了删除的对象为复制到容器中*/
			adiv.innerHTML = result;
			/**保存到session中*/
			saveFavorite();
		}
		/**筛选掉删除属性后的数据保存到数据库中
			筛选前：<a href="http://www.haodewap.com/?id=a&a=123">好的wap1</a>|<span href="#">删除</span><br>
			筛选后：<a href="http://www.haodewap.com/?id=a&a=123">好的wap1
		*/
		function siftDelAtt()
		{
			var result = "";
			/**获取一个存储用户收藏链接的容器对象*/
			var adiv = acceptdivObj();
			/**取得内容、在过滤内容中的<br>大小写、最后替换统一格式小写*/
			var adiva = adiv.innerHTML.replace(/<br>/g,"<BR>").replace(/<BR>/g,"<br>");
			var splits = adiva.split("<br>");/**利用已有的标签<br>最为分隔符*/
			var length = splits.length - 1;/**取得分割的长度、由于leng 的长度会比预定的长达多一 所以要减一*/

			for(var i = 0;i<length;i++)
			{
				result += splits[i].split(splitChar)[0] + "<br>";
			}
			/**最后将除了删除的对象为复制到容器中*/
			adiv.innerHTML = result;
		}
		/**添加菜单*/
		function addMenu()
		{
			/**获取一个存储用户收藏链接的容器对象*/
			var adiv = acceptdivObj();
			adiva=adiv.getElementsByTagName("a");
			for(i=0;i<adiva.length;i++) {
				adiva[i].style.cssText='';
				adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
				adiva[i].onclick = new Function("on_click_interceptor(this);return false");/**手机框中连接“点击拦截器”*/
			}
		}
		/**默认推荐*/
		function defaultLink()
		{
			var defaultLinkS = new Array(
								new Array("这5分钟大家在看什么",visitAction() + "?wapurl=http://wap.haodewap.net")
								);
			var linksSize = defaultLinkS.length;

			/**获取一个存储用户收藏链接的容器对象*/
			var adiv = acceptdivObj();
			var adivas=adiv.getElementsByTagName("a");
			var len = adivas.length;/**在容器adiv中所有标签a 的对象个数*/
			if(len == 0)
			{
				for(var i = 0;i < linksSize;i++)
				{
					adiv.innerHTML += "<a href='"+ defaultLinkS[i][1] +"' class='link1_5'>"+defaultLinkS[i][0]+"</a><br>";
				}
			}
		}

		


/**统计*/

/**
 * 该函数必须与/download/js/util.js同时使用，要使用到函数sendAction
 */
function statClick(id,text){
	var url = "/about/stat.jsp?id="+id+"&text="+text;
	sendAction(url,resMsg);
}
function resMsg(){}










