﻿//此Javascript代码,主要作用是用于异步显示博客文件的附下载次数.
// jawin 2008-8-13
    var perOnload_Download=null;
	var xml=null;
	var IE=false;
	var Links=new Array();
	var LinkNames= new Array();
	var hPATTimer=null;
	var dXMLString=null;

	function ProcessATag()
	{
	    if(hPATTimer!=null)
	        window.clearTimeout(hPATTimer);
	    if (perOnload_Download!=null)
	         perOnload_Download();
        if(xml!=null)
            return;
		XML_init();
		var root=xml.documentElement;
		if (!root)
			return;
			
		var links=document.links;
		var link,result;
		var re= /\d+\.(rar|pdf|doc|xls|zip|ppt)$/ig;
		var  LinkCount=0;
		
		
		for (var i=0; i<links.length;i++)
		{
			link=links[i];
			if(!re.test(link.href))
				continue;
		        		
			
			LinkNames[LinkCount]=link.href.match(re)[0];
			Add(LinkNames[LinkCount]);
            DownFrm(link);
			Links[LinkCount++]=link;
		}
		//alert(LinkCount);
		if(IE)
		    ajaxRequest(xml.xml);
		else
		    ajaxRequest(serializeXml(xml));
		xml=null;
        
    

		function Add(file)
		{
			var el=xml.createElement("item");
			if(IE)
			    el.text=file;
			else
			    el.textContent=file;
			   
			root.appendChild(el);
		}
		
		function XML_init()
		{
			if (window.ActiveXObject)
	        {
		        xml = new ActiveXObject("Microsoft.XMLDOM");
		        IE=true;
				xml.loadXML("<root author=\"Jawin\" authorBlog=\"http://shotgun.gkbk.com\"/>");
				return;
	        } 

	        if (document.implementation && document.implementation.createDocument)
		        xml = document.implementation.createDocument("","",null);
			var el=xml.createElement("jawin");
			xml.appendChild(el);
		} 
		
		function ajaxRequest(xmlString)
		{
		    var request;
		    if (IE)
		        request=new ActiveXObject("Microsoft.XMLHTTP");
		    else
		        request=new XMLHttpRequest();
		        
		    request.open("POST", "download.aspx?action=ajax",true);
		    request.onreadystatechange=function ()
		    {
		        if(request.readyState!=4)
		            return;
		        processXML(request.responseXML);
		    }
		    dXMLString=xmlString;
		    request.send(xmlString);
		}
		function processXML(xml)
		{
		    var root=xml.documentElement;
		    if (!root)
		        return;
		    var el,attr,i;
		    var FileName,oName,Times;
		    var result;
	        var href;
	        var dsp;
		    for( i=0;i<root.childNodes.length;i++)
		    {
		        el=root.childNodes[i];
		        if(!el.attributes)
		            continue;
		        attr=el.attributes.getNamedItem("FileName");
		        if (!attr)
		            continue;
		        FileName=attr.value;
		        
		        attr=el.attributes.getNamedItem("Times");
		        if(!attr)
		            Times="0";
		        else
		            Times=attr.value;
		        
		        oName=el.text;
		        for(var x=0;x<LinkNames.length;x++)
		        {
		        
		            if(LinkNames[x]==null || Links[x] ==null || FileName != LinkNames[x])
		                continue;
		                
		                
		           href=Links[x].href;
		           result=href.match("uploadfile\\d+");
		           if(result==null)
		                continue;
		               
		           Links[x].href="doWnlOaD.aSpX/"+ oName +"?fIlE="+ result +"/"+ FileName;
		           dsp=document.getElementById("ts"+FileName);
		           dsp.innerHTML="(已下载"+Times+"次)&nbsp;";
		           dsp.title="此文件已经被成功下载了:"+ Times +"次";
//		           dsp=document.getElementById("th"+ FileName);
//		           dsp.innerHTML=GetXunLeiURL(Links[x].href,Links[x].innerHTML);
		           //Links[x]=null;
		           //LinkNames[x]==null;
		        }
		        
		    }
	        Links=null;
	        LinkNames=null;
		}
	}
	
	function serializeXml(oNode)
	{ 
         var oSerializer = new XMLSerializer(); 
         return oSerializer.serializeToString(oNode); 
    } 
    function DownFrm( obj )
    {
        var re=/\d{5,}\.(rar|pdf|doc|xls|zip|ppt)/ig;
        var href=obj.href;
        var result=href.match(re);
        try
        {
            CreateDownFrm(obj,result[0]);
        }
        catch(e){}
        return;
    }
    
    function CreateDownFrm(ATag,id)
    { 
        var Div= document.createElement("LABEL");
        Div.id="ts"+id;
        insertAfter(Div,ATag);
//        Div= document.createElement("SPAN");
//        Div.id="th"+id;
//        Div.innerHTML=GetXunLeiURL(ATag.href,ATag.innerHTML);
//        insertAfter(Div,ATag);
        return ;
    }
    
    function GetXunLeiURL( url,title )
    {
        var thunder_url=url;
        var restitle = title;
        var thunder_pid = "30431";
        var html='&nbsp;[<a href="#" thunderHref="' + ThunderEncode(thunder_url) + '" thunderPid="' + thunder_pid + 
                '" thunderResTitle="' + restitle + '" onClick="return OnDownloadClick_Simple(this,2,4)"'+
                ' oncontextmenu="ThunderNetwork_SetHref(this)">迅雷下载</a>]&nbsp;';
        return html;
    }
    
    
    function insertAfter(newElement, targetElement) 
    { 
        var parent = targetElement.parentNode; 
        if(parent.lastChild == targetElement) 
        { 
            parent.appendChild(newElement); 
        } 
        else 
        { 
            parent.insertBefore(newElement, targetElement.nextSibling); 
        } 
    }

	window.setTimeout(ProcessATag,1);