﻿
//  slectThunderType可以设置的值为：coWebThunder或coThunder5
var slectThunderType = "coThunder5";
var thunderType,sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType;

//判断是调用PublicSelectW还是PublicSelectT

function JudgeThunder(selectType,sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType)
{    
	if(slectThunderType == "coWebThunder") 
	{        PublicSelectW(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType)
             
	}
	else if (slectThunderType == "coThunder5") 
	{
		PublicSelectT(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType)            
	}
	else if(slectThunderType=="" && selectType==3)
	{
		 PublicSelectW(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType)             
	}
         else if(slectThunderType=="" && selectType==4)
	{
			 PublicSelectT(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType)             
	}
	else
	{
		 PublicSelectW(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType)            
	} 
}

/* Decode the refrence URL */
function Decode(str)
{
	str = str.replace(/&lt/g,"<");
	str = str.replace(/&gt/g,">");
	str = str.replace(/&amp/g,"&");
	str = str.replace(/&quot/g,"\"");
	str = str.replace(/&apos/g,"\'");
	str = str.replace(/<br>/g,"\n");
	
	return str;
}

/*get server build version*/
function get_server_build_version()
{
	if (thunder_server == null)
		return 0;
	
	var ver = thunder_server.GetVersion();
	ver = ver.split(".");
	return parseInt(ver[3]);
}

/* isOpenNewWindow: 
	1.open new window 
	2.alert gbk message and direct to download web thunder.
	3.alert UTF-8 message and direct to download web thunder.
*/
function OnDownloadClick(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType,selectType){
    var tempThunderType = "";
	if (isOpenNewWindow != undefined) 
       {
		 if(isOpenNewWindow == 3 || isOpenNewWindow == 4)
		{
			tempThunderType = isOpenNewWindow;
		}
	}

	if(selectType != undefined)
	{
		if(selectType == 3 || selectType == 4)
		{
			tempThunderType = selectType;
		}
	}
	else
	{
		selectType="";
	}
       //这里判断是调用webthunder.js还是thunder5.js

      JudgeThunder(tempThunderType,sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType);
}

function OnDownloadClickSd(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType,selectType){
    var tempThunderType = "";
	if (isOpenNewWindow != undefined) 
       {
		 if(isOpenNewWindow == 3 || isOpenNewWindow == 4)
		{
			tempThunderType = isOpenNewWindow;
		}
	}

	if(selectType != undefined)
	{
		if(selectType == 3 || selectType == 4)
		{
			tempThunderType = selectType;
		}
	}
	else
	{
		selectType="";
	}
       //这里判断是调用webthunder.js还是thunder5.js

      JudgeThunder(tempThunderType,sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType);
}

function OnDownloadClick_Company(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType,selectType,sCompany){
    try {
           duri =sCompany ;
           vhref = "http://analytics.xunlei.com/PV?peerid=" + sPid + "&uri=" + duri + "&src=" + sRefPage + "&screensize=" +window.screen.width +"*" +window.screen.height;
           image1 = new Image(1,1);
           image1.src = vhref;
         } 
		 catch(e) 
			 { }

	OnDownloadClickSd(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType,selectType)
}




function OnDownloadClick_Simple(linkObj, isOpenNewWindow,selectType)
{
	sDownload = linkObj.thunderHref;
	sResName = linkObj.thunderResTitle;
	sRefPage = location.href;
	sPid = linkObj.thunderPid;
	sType = linkObj.thunderType;
	var sCompany= linkObj.CompanyName;

	if ( !sResName)
		sResName = "";
		
	ThunderNetwork_UnsetHref(linkObj);
	if ( !sCompany)
	{
        return OnDownloadClickSd(sDownload, sResName, sRefPage, sPid, isOpenNewWindow, sType,selectType );
	}
	else
	{
        return OnDownloadClick_Company(sDownload, sResName, sRefPage, sPid, isOpenNewWindow, sType ,selectType,sCompany);
	}

}

function ThunderNetwork_SetHref(linkObj)
{
	var tDownloadURL = linkObj.thunderHref;
	//tDownloadURL = webThunderDecode(tDownloadURL);
	//tDownloadURL = webThunderEncode(tDownloadURL);
	linkObj.href = tDownloadURL;
}

function ThunderNetwork_UnsetHref(linkObj)
{
	linkObj.href = "JavaScript:;";
}

// webthunder_G.js
// interface: OpenAddTask
// 5-23-2006
// for portal.xunlei.com
// need Thunder Server Version 1.0.1.22 at least

/* Call WebThunder Add Task Panel
** Parameters
** szParam [IN]  string specifies the download url , resource title and refrence url, split by {\r*\r} 
** Return Values
** int
** If call panel successfully  return  0
** If call panel failed        return  1    
** If ThunderServer uninstall  return  2
*/

/* Decode the refrence URL */
isFun 	 = function(a){ return typeof a == "function"; };
isNull 	 = function(a){ return typeof a == "object" && !a; };
isNumber = function(a){ return typeof a == "number" && isFinite(a);};
isObject = function(a){ return (a && typeof a == "object") || isFun(a);};
isString = function(a){ return typeof a == "string";};
isArray  = function(a){ return isObject(a) && a.constructor == Array; };
isUndef  = function(a){ return typeof a == "undefined";};
DoNothing = function(){};
var thunder_isOpenNewWindow = 1;
var Class = {
	create: function(){
		return function(){
			this.initialize.apply(this, arguments);
		}
	},
	
	extend: function(destination, source){
		for (property in source) {
    		destination[property] = source[property];
  		}	
		return destination;
	}
}
var Delegate = {
	create: function (obj, func){
		var f = function()	{
			var target = arguments.callee.target;
			var func = arguments.callee.func;
			return func.apply(target, arguments);
		}
		f.target = obj;
		f.func = func;
		return f;
	}
};

function Decode(str)
{
	str = str.replace(/&lt/g,"<");
	str = str.replace(/&gt/g,">");
	str = str.replace(/&amp/g,"&");
	str = str.replace(/&quot/g,"\"");
	str = str.replace(/&apos/g,"\'");
	str = str.replace(/<br>/g,"\n");
	
	return str;
}

var Thunder = {
	getInstance: function(){
		//优先使用web迅雷,web迅雷未安装则使用迅雷5,迅雷5也未安装或初始化出错抛出异常
		//var opt = [Thunder.WebThunder, Thunder.Thunder5];
		var opt = [Thunder.Thunder5, Thunder.WebThunder];
	
		for (var i=0; i<opt.length; i++){
			try{
				return opt[i].getInstance();
			}catch(e){
				continue;
			}
		}
		throw "迅雷初始化失败";
	},
	
	setParameter: function(cid, url, refer, stat){
		var inputs = ["thunder_cid", "thunder_down_url", "thunder_down_pageurl", "thunder_stat_pageurl"];
		var input;
		for (var i=0; i<inputs.length; i++){
			if (isUndef(input = $(inputs[i]))){
				input = document.createElement("input");
				input.type = "hidden";
				input.id = inputs[i];
				document.body.appendChild(input);
			}
			input.value = arguments[i];
		}
	},
	
	        download: function(cid, url, refer, name, stat){
		this.getInstance().download(cid, url, refer, name, stat);
	}
}
Thunder.WebThunder = Class.create();
Thunder.WebThunder.getInstance = function(){
	if (isUndef(this._thunder))
		this._thunder = new Thunder.WebThunder();
	        return this._thunder;
}
Thunder.WebThunder.prototype = {	
	initialize: function(){
		this.__thunder = new ActiveXObject("ThunderServer.webThunder.1");
	},
	
	/*get server build version*/
	getVersion: function(){
		return parseInt(this.__thunder.GetVersion().split(".")[3]);
	},
	
	download: function(cid, url, refer, name, stat){
			/*开始*/
     sDownloadURL=url;
       sResName=name;
       sRefPage=refer;
  if ( isOpenNewWindow != undefined) 
    {
		if(isOpenNewWindow == false)
			thunder_isOpenNewWindow = 2;
		else 
			thunder_isOpenNewWindow = isOpenNewWindow;
    }
    else thunder_isOpenNewWindow = 1;
    if ( isOpenNewWindow != undefined) 
    {
         if(isOpenNewWindow > 2 || isOpenNewWindow < 0)
	   {

		   thunder_isOpenNewWindow = 1;
	   }
    }
	if(sType != undefined) 
       {
		thunder_type = sType;
	}
	if ( (sDownloadURL.indexOf("mms://") != -1) || (sDownloadURL.indexOf("rtsp://") != -1 ))
	{
		return true;
	}
	else
	{		
		//sDownloadURL = webThunderDecode(sDownloadURL);
		//sDownloadURL = webThunderEncode(sDownloadURL);
		if ( sPid != null )
			OpenAddTask(sDownloadURL + "{\r*\r}" + sResName + "{\r*\r}" + sRefPage, sPid);
		else
			OpenAddTask(sDownloadURL + "{\r*\r}" + sResName + "{\r*\r}" + sRefPage);
		return false;
	}

	}
}

Thunder.Thunder5 = Class.create();
Thunder.Thunder5.getInstance = function(){
	if (isUndef(this._thunder))
		this._thunder = new Thunder.Thunder5();
	        return this._thunder;
}
Thunder.Thunder5.prototype = {
	initialize: function(){
		this.__thunder = new ActiveXObject("ThunderAgent.Agent.1");
	},
	
	download: function(cid, url, refer, name, stat){
		try{
			this.addTask(cid, url, refer, name, stat);
			this.commitTasks();
		}catch(e){
			alert(e.message);
		}
	},
	
	addTask: function(cid, url, refer, name, stat){
		var _addTask = [
			Delegate.create(this, function(){this.__thunder.AddTask4(url, "", "", name, refer, -1, 0, -1, "", cid, stat);}),
			Delegate.create(this, function(){this.__thunder.AddTask3(url, "", "", name, refer, -1, 0, -1, "", cid);}),
			Delegate.create(this, function(){this.__thunder.AddTask2(url, "", "", name, refer, -1, 0, -1, "");}),
			Delegate.create(this, function(){this.__thunder.AddTask(url, "", "", name, refer, -1, 0, -1);})
		];
		for (var i=0; i<_addTask.length; i++){
			try{
				_addTask[i]();
				return;
			}catch(e){	
			}
		}
		throw "不支持此方法，请安装最新的迅雷客户端";
	},
	
	commitTasks: function(){
		var _commitTasks = [
			Delegate.create(this, function(){this.__thunder.CommitTasks2(1);}),
			Delegate.create(this, function(){this.__thunder.CommitTasks();})
		];
		for (var i=0; i<_commitTasks.length; i++){
			try{
				_commitTasks[i]();
				return;
			}catch(e){
			}
		}
		throw "不支持此方法，请安装最新的迅雷客户端";
	}
}



function PublicSelectT(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType)
{   
        
	var sDownload = sDownloadURL;
	var sRefPage = sRefPage;
	var sPid = sPid;
	var sType = sType;

		sResName = "";
		
	//ThunderNetwork_UnsetHref(linkObj);
	try{
         Thunder.download('', sDownload, sRefPage, sResName, sRefPage);	
     }catch(e)
     { 
         if(e == "迅雷初始化失败")
        {
            InfoMode(isOpenNewWindow);
        }else{
            sDownload = sDownloadURL;
            return true;
        }
     }
     return false;
}
//判断是弹出对话框还是打开下载页面
function InfoMode(isOpenNewWindow)
{
      if ( isOpenNewWindow != undefined) 
      {
		if(isOpenNewWindow == false)
			thunder_isOpenNewWindow = 2;
		else 
			thunder_isOpenNewWindow = isOpenNewWindow;
      }
	else thunder_isOpenNewWindow = 1;

	 if ( isOpenNewWindow != undefined) 
     {
           if(isOpenNewWindow > 2)
	   {
		   thunder_isOpenNewWindow = 1;
	   }
     }
                  if( thunder_isOpenNewWindow == 1)
	          {
	               window.open("http://pstatic.xunlei.com/about/product/down_xl5.htm");
	           }
	           else
	           {
		        var ainfo = "";
			if( thunder_isOpenNewWindow == 2)
		        ainfo = "此链接为迅雷专用下载通道，必须安装迅雷5才能进行下载，安装后请重新进入此页进行下载。强烈建议您安装迅雷5，体验急速下载的乐趣！点击确定即刻安装迅雷5";
			else 
		        ainfo = "";
			alert(ainfo);
			window.open("http://ftp.union.sandai.net/xunlei_official.exe");	
                     }
}
function ThunderNetwork_SetHref(linkObj)
{
	var tDownloadURL = linkObj.thunderHref;
	//tDownloadURL = webThunderDecode(tDownloadURL);
	//tDownloadURL = webThunderEncode(tDownloadURL);
	linkObj.href = tDownloadURL;
}

function ThunderNetwork_UnsetHref(linkObj)
{
	linkObj.href = "JavaScript:;";
}
  
// JavaScript Document
// interface: OpenAddTask
// 5-23-2006
// 4-6-2007 modify
// for portal.xunlei.com
// need Thunder Server Version 1.0.1.22 at least

/* Call WebThunder Add Task Panel
** Parameters
** szParam [IN]  string specifies the download url , resource title and refrence url, split by {\r*\r} 
** Return Values
** int
** If call panel successfully  return  0
** If call panel failed        return  1    
** If ThunderServer uninstall  return  2
*/

var thunder_server = null;
var thunder_isOpenNewWindow = 1;
var thunder_type = "";
function OpenAddTask(szParam, sPid)
{
	try
	{
		thunder_server = new ActiveXObject("ThunderServer.webThunder.1");
	}
	catch(e)
	{
		if(thunder_type == "07") sPid = "g" + sPid;
	    if( thunder_isOpenNewWindow == 1)
	    {
			if( sPid != null) {
				//如果合作商是网游官方
				if(thunder_type == "07") {
					window.open("http://my.xunlei.com/setup.htm?gid=" + sPid,"WEBTHUNDER_SET_UP");
				}
				else {
					window.open("http://my.xunlei.com/setup.htm?pid=" + sPid,"WEBTHUNDER_SET_UP");
				}
			}
			else
				window.open("http://my.xunlei.com/setup.htm?pid=","WEBTHUNDER_SET_UP");
	    }
	    else
	    {
			var ainfo = ""; 
			if( thunder_isOpenNewWindow == 2)
				ainfo = "此链接为迅雷专用下载通道，必须安装WEB迅雷才能进行下载，安装后请重新进入此页进行下载。强烈建议您安装web迅雷，体验急速下载的乐趣！点击确定即刻安装web迅雷";
                               else 
				ainfo = "";
			alert(ainfo);
			window.open("http://ftp.union.sandai.net/webthunder/union/webxl_" + sPid + ".exe");
	    }			
		return 2;
	}
	
	// split the input parameters
	var aryParam = szParam.split("{\r*\r}");
	
	//parameters' length error 
	// call panel failed
	var nParamLen = aryParam.length;
	
	// old page call with 2 parameters
	// new page call with 3 parameters
	if (nParamLen < 2 ||  nParamLen > 3)
		return 1;
	
	// 下午 08:10 2007-4-6
	if (nParamLen == 3)
		thunder_server.CallAddTask(Decode(aryParam[0]), Decode(aryParam[1]), Decode(aryParam[2]), 1, "", "");
	else if (nParamLen == 2)
		thunder_server.CallAddTask(Decode(aryParam[0]), Decode(aryParam[1]), "", 1, "", "");
		
	return 0;
}

/* Decode the refrence URL */
function Decode(str)
{
	str = str.replace(/&lt/g,"<");
	str = str.replace(/&gt/g,">");
	str = str.replace(/&amp/g,"&");
	str = str.replace(/&quot/g,"\"");
	str = str.replace(/&apos/g,"\'");
	str = str.replace(/<br>/g,"\n");
	return str;
}

/*get server build version*/
function get_server_build_version()
{
	if (thunder_server == null)
		return 0;
	var ver = thunder_server.GetVersion();
	ver = ver.split(".");
	return parseInt(ver[3]);
}

/* isOpenNewWindow: 
	1.open new window 
	2.alert gbk message and direct to download web thunder.
	3.alert UTF-8 message and direct to download web thunder.
*/

function ThunderNetwork_SetHref(linkObj)
{
	var tDownloadURL = linkObj.thunderHref;
	linkObj.href = tDownloadURL;
}

function ThunderNetwork_UnsetHref(linkObj)
{
	linkObj.href = "JavaScript:;";
}

function PublicSelectW(sDownloadURL,sResName, sRefPage, sPid, isOpenNewWindow, sType)
{  
    if ( isOpenNewWindow != undefined) 
    {
		if(isOpenNewWindow == false)
			thunder_isOpenNewWindow = 2;
		else 
			thunder_isOpenNewWindow = isOpenNewWindow;
    }
    else thunder_isOpenNewWindow = 1;
    if ( isOpenNewWindow != undefined) 
    {
         if(isOpenNewWindow > 2 || isOpenNewWindow < 0)
	   {

		   thunder_isOpenNewWindow = 1;
	   }
    }
	if(sType != undefined) 
       {
		thunder_type = sType;
	}
	if ( (sDownloadURL.indexOf("mms://") != -1) || (sDownloadURL.indexOf("rtsp://") != -1 ))
	{
		return true;
	}
	else
	{		
		if ( sPid != null )
			OpenAddTask(sDownloadURL + "{\r*\r}" + sResName + "{\r*\r}" + sRefPage, sPid);
		else
			OpenAddTask(sDownloadURL + "{\r*\r}" + sResName + "{\r*\r}" + sRefPage);
		return false;
	}
}
