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"]
				);

/**
	根据域名返回指定的view页面的请求地址.
	根据已知域名请参考 变量： domins是二维数组
*/
function visitAction(){

	return domins[0][1];
}


function getPosition(v){
	var tobj=v;
	ory=v.offsetTop;
	orx=v.offsetLeft;
	while (tobj=tobj.offsetParent){
		ory+=tobj.offsetTop;
		orx+=tobj.offsetLeft;
	}
  ooo=new Object();
  ooo.x=orx;
  ooo.y=ory;
	return ooo;
}

function mdown(v) {
	if (event.button==2){
	  menushow(v,"addmenu");	
	}
	if (event.button!=1) return;
	var ddiv=document.getElementById("dragdiv");
	var oos=getPosition(v);
	ddiv.style.top=oos.y	;
	ddiv.style.left=oos.x	;
	
	targetobj=v;
	ddiv.innerHTML=v.outerHTML;

	targetobj.onmousemove=mmove;
	targetobj.onmouseup=mup;
	targetobj.setCapture();
	dxq1=event.x;
	dxq2=event.y;
}

function mmove(){
	if (event.button!=1) return;
	if ((event.clientY-dxq2)*(event.clientY-dxq2)+(event.clientX-dxq1)*(event.clientX-dxq1)<9) return;
	var ddiv=document.getElementById("dragdiv");
	ddiv.style.display="block";
	ddiv.style.cursor="array";
	var adiv=document.getElementById("acceptdiv");
	ddiv.style.top=parseInt(ory)+event.clientY-dxq2;
	ddiv.style.left=parseInt(orx)+event.clientX-dxq1;
}

function mup() {

	/***************************/
	var reg2_layer = document.getElementById("mousehandle");
	if(reg2_layer != null)
	{
		mousehandle.style.display="none";
		mousedone.style.display="block";	
	}
	/***************************/
	if (event.button!=1) 
		return;
	var ddiv=document.getElementById("dragdiv");
	var adiv=document.getElementById("acceptdiv");
	targetobj.onmousemove=null;
	targetobj.onmouseup=null
	ddiv.style.display="none";
	targetobj.releaseCapture();

	var oos=getPosition(adiv);
	if ((event.clientY+document.body.scrollTop>=parseInt(oos.y))&&(event.clientY+document.body.scrollTop<=(parseInt(oos.y)+parseInt(adiv.offsetHeight)))){
		if ((event.clientX+document.body.scrollLeft>=parseInt(oos.x))&&(event.clientX+document.body.scrollLeft<=(parseInt(oos.x)+parseInt(adiv.offsetWidth)))){
			adiva=adiv.getElementsByTagName("a");
					for(i=0;i<adiva.length;i++) {
						if (adiva[i].href==targetobj.href){
							if (!window.confirm("您确定要添加重复的链接么？")) return;
							break;
						}
					}
			aa="<a href='" + targetobj.href + "' 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();
			setTimeout("isLogin();",1000);
		}
	}
}

//---可以实现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(); 
}
//****************之上***********
function init(userShuqian){
	 
	window.ondeactivate=function(){
		alert(event.toElement);
	}
	/**这里主要用于 后台书签管理页面 的自定义收藏初始化、与init方法的区别是 少了初始化默认值推荐
		下面的if 只有在后台 页面时才会成立
	*/
	if(userShuqian != "userShuqian")
	{
		/**默认推荐的链接*/
		defaultLink();
	}
	/**初始化收藏链接的删除属性*/
	initDelAtt();
 	var i;
	//判断对象是否存在 if(document.all.url1!=null){
   //url1.oncontextmenu=new Function("menushow(this,'addmenu');return false");}
  
	
	var alla=document.getElementsByTagName("a");
	//重构页面中非手机窗口部分的含有wapurl链接地址的右键菜单
	for(i=0;i<alla.length;i++) {
			if (alla[i].href.indexOf("wapurl")>0){
				alla[i].oncontextmenu=new Function("menushow(this,'addmenu');return false");
				alla[i].onmousedown=new Function("mdown(this)");
				alla[i].onmousemove=new Function("mouseMoveEvent(this)");
			}
	}
	//重构手机窗口部分的含有wapurl链接地址的右键菜单
	var adiv=document.getElementById("acceptdiv");
	if(adiv != null){	//本页有手机窗口
		var adiva=adiv.getElementsByTagName("a");
		for(i=0;i<adiva.length;i++) {
				adiva[i].onmousedown=null;
				adiva[i].classname="ap3gbox";
				adiva[i].oncontextmenu = new Function("menushow(this,'menu');return false");
		}
	}
}

function initdiv(){
   var div = document.getElementById("acceptdiv");
   div.innerHTML=div.innerHTML;
   var divaaa=div.getElementsByTagName("a");
   for(i=0;i<divaaa.length;i++) {
         divaaa[i].classname="ap3gbox";
		 //divaaa[i].onclick=new Function("event.returnValue=false");
		 divaaa[i].oncontextmenu = new Function("menushow(this,'menu');return false");
         	//function(){menushow();event.returnValue = false
	 }
}

function menuinit(){
	if(event.srcElement.classname=="ap3gbox" && event.button==2){
		menushow(event.srcElement);
	}
		return false;
}



	
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";
	tob.style.top=event.clientY+document.body.scrollTop;
	if (event.clientY+parseInt(tob.offsetHeight)>parseInt(document.body.clientHeight)) 
		tob.style.top=document.body.clientHeight+document.body.scrollTop-parseInt(tob.offsetHeight);
	tob.style.left=event.clientX+document.body.scrollLeft;
	if (event.clientX+parseInt(tob.offsetWidth)>parseInt(document.body.clientWidth) ) 
		tob.style.left=document.body.clientWidth+document.body.scrollLeft-parseInt(tob.offsetWidth);
	document.body.onclick=new Function("menuhide('"+mname+"')");
	cmenu=mname;
	
}
/**根据 该方法的 参数tagAHrefTitle 返回符合的具体对象 参数的规则是：例如: http://www.baidu.com@&百度
	该方法则要根据 参数分割出的值 与 当前用户的自定义收藏中 的每一个 对象 如果 href true and innerHTML true 则返回当前遍历到的 对象。
*/
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);
}
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);
}

/**批量添加-目前：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();
}

//*****************************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);  
    }  
  } 
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();
}
//******************添加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属性*******结束
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 HighlightAll(){
    var urlx = document.forms[0]["wapurl"].value;
    var urla = urlx;

	if(urlx==""){
		urlx = "http://www.haodewap.com" 
	}
	else if(urlx.indexOf("http://")<0){
		urlx = "http://"+urlx;
	}
	document.forms[0]["wapurl"].value = "http://www.haodewap.com/visit.do?wapurl="+urlx;
	var tempval=document.forms[0]["wapurl"];
	therange=tempval.createTextRange();
	therange.execCommand("Copy");
	document.forms[0]["wapurl"].value = urla;
	alert("网址已复制成功，你可以和QQ、MSN上的好友一起分享了！");
}

function secBoard(n){
  
    for(i=0;i<secTable.cells.length;i++){
    	if(secTable.cells[i].className=="sec2"){
      	secTable.cells[i].className="sec1";
      }
    }
    secTable.cells[n].className="sec2"; 
    for(i=0;i<mainTable.tBodies.length;i++){ 
      mainTable.tBodies[i].style.display="none";
    }
    mainTable.tBodies[n].style.display="block";
}

 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',315,215);
			   }
           } 
           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 submitbug(v){
	    var value = targetobj.outerHTML;
	  	var win = open("/about/information.jsp?sitename="+value,"","");
   }	  
   
   function newwindow(v){
  		window.open(targetobj.href);
   }
   
   function helpme(){
   	window.open("/help/help.jsp");
   }
   
   function recommend(){
	  //show('recomend');
	  //return false;
		
	  //该方法实现了 窗口与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("很抱歉，本页为动态生成页面，不能完成推荐！");
			//hidePopupLoginDialog('recomend');
			return;
		}
		//取出URL有两种方法，采用不同的编码方式
		if(url.indexOf("%") > -1)//地址中含有%，是点击链接用右键取出的URL地址，已经经过浏览器转码
			url = decodeURIComponent(wapurl(url));
		else
			url = wapurl(url);
			//url = encodeURIComponent(wapurl(url));
		//openurl="/about/recommend_submit.jsp?link_url=" + url
			//+ "&link_title=" + escape(targetobj.innerHTML);
		//window.open(openurl,"tuijian","toolbar=no,location=no,directories=no,status=no,menub ar=no,scrollbar=no,resizable=no,copyhistory=yes,width=400,height=200,left=300,top=200");

		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;}//屏蔽自身菜单
//<script language="JavaScript">
window.defaultStatus=" 【提示】可以用鼠标将链接『拖拽』到左边的手机框中进行『收藏』!";
//</script>

/****************新增功能业务区****************/

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;
			}
		}
		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");
			}
		}
		/**默认推荐*/
		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>";
				}
			}
		}
		/**带有滚动条的对象设置为在最下面*/
		function scrollDown(){
			/**获取一个存储用户收藏链接的容器对象*/
			var adiv = acceptdivObj();
			adiv.scrollTop = adiv.scrollHeight;
		}




