﻿// 定义：
// QQ直播的最新版本号：
var VER_QQLIVE		= "5.0.3236.0";
var VER_MEDIAPLAYER	= "9.0.0.0";
var QQLIVE_DOWNLOAD_URL = "qqlive";
var QQLIVE_DOWNLOAD_TPTURL = "";
var QQLIVE_INSTALLER_CAB = "http://cache.tv.qq.com/qqlive_ocx/QQLiveInstaller.cab#version=1,0,0,3";
var MEDIAPLAYER_DOWNLOAD_URL = "http://tv.qq.com/download.htm";
var QQLIVE_PRODUCT_NAME	= "QQLive软件";
var QQLIVE_PRODUCT_ICON = "http://cache.tv.qq.com/qqlive_ocx/ocx_download_guide03.gif"
var QQLIVE_PRODUCT_DOWNLOAD_PIC = "http://cache.tv.qq.com/qqlive_ocx/ocx.gif"

// 控件参数开始
function qqliveOcxParam(strName, strValue)
{
	this.Name = strName;
	this.Value = strValue;
}

function qqliveOcxParams()
{
	this.count = 0;
}
// 控件参数结束

// 系统监测开始
function compareVersions(strVer1, strVer2)
{
	strVer1 = strVer1.replace(/,/g, '.');
	strVer2 = strVer2.replace(/,/g, '.');
	
	var vArray1 = strVer1.split('.');
	var vArray2 = strVer2.split('.');
	
	for (var i = 0; i < 4; i++)
	{
		var nVer1 = Number(vArray1[i]);
		var nVer2 = Number(vArray2[i]);
			
		if (nVer1 > nVer2)
		{
			return 1;
		}
		else if (nVer1 < nVer2)
		{
			return -1;
		}
	}
	
	return 0;
}

// 下载开始
function DownloadCallBack(stateType, strResult)
{
	var strState = "";
	switch (stateType)
	{
	case 0:
		strState = "正在准备下载。。。";
		break;
	case 1:
		if (strResult > 93)
		{
			strResult = "93";
		}
		strState = "正在下载。。。" + strResult + "%";
		break;
	case 2:
		strResult = "96";
		strState = "正在安装。。。" + strResult + "%";
		break;
	case 3:
		strState = "运行安装程序完毕!";
		window.location.reload();
		break;
	case -1:
		strState = "启动下载失败！"; 
		break;
	case -2:
		strState = "安装程序被终止！";
		break;
	case -3:
		strState = "下载失败!";
		break;
	case -100:
		strState = "下载路径不合法！";
		break;
	default:
		strState = "未知状态！";
		break;
	}
	var strHtml = "<center>" + strState + "</center><p><p>";
	if (stateType == 1 || stateType == 2)
	{
		strHtml += "<table width=100%><tr><td>&nbsp;</td><td width=90%>";
		strHtml += "<table width=100% border=1 cellpadding=0 cellspacing=0><tr><td>";
		if (strResult == "0")
		{
			strHtml += "<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td>&nbsp;";
			strHtml += "</td><td></td></tr></table>";	
		}
		else
		{
			strHtml += "<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#0000ff width=" + strResult;
			strHtml += "%>&nbsp;</td><td>&nbsp;</td></tr></table>";	
		}
		strHtml += "</td></tr></table>";
		strHtml += "</td><td>&nbsp;</td></tr></table>";
	}
	else if (stateType < 0)
	{
		var vURL = strResult;
		if (vURL == "" || vURL == null)
		{
			vURL = "http://tv.qq.com";
		}
		
		strHtml += "<center>您可以通过点击<a href=" + vURL + ">此处</a>手动下载安装</center>";
	}
	_qqlivecontent.innerHTML = "<font style='font-size:20px' face='黑体' color=white><i>" + strHtml + "</i></font>";
}

var nDownloadTimeID = -1;
function Download()
{
	if (nDownloadTimeID != -1)
	{
		clearTimeout(nDownloadTimeID);
		nDownloadTimeID = -1;
	}
	
	var objQQLiveInstaller = null;
	objQQLiveInstaller = QLiveInstaller;
	try
	{
		objQQLiveInstaller.DownloadSetup(QQLIVE_DOWNLOAD_URL, QQLIVE_DOWNLOAD_TPTURL, 1, " /S", DownloadCallBack);
	}
	catch(e)
	{
		_qqlivecontent.innerHTML = "<font style='font-size:20px' face='黑体' color=white><i>请先安装QQ直播安装控件，在弹出的对话框中，请确认控件具有Tencent签名，选择安装。安装之后请点击<a href=\"javascript:window.location.reload();\">刷新<a></i></font>";
	}
}
// 下载结束

function QQLiveObject(vWidth, vHeight)
{
	this.width = vWidth;
	this.height = vHeight;
	this.ocxParams = new qqliveOcxParams();
}

QQLiveObject.prototype.addParam = function(strName, strValue)
{
	this.ocxParams[this.ocxParams.count] = new qqliveOcxParam(strName, strValue);
	this.ocxParams.count++;
}

QQLiveObject.prototype.write = function(vElementId)
{
	// 安装控件
	var strHtml;
	strHtml = "<OBJECT style=\"display:none;\" classid=\"clsid:1DABF8D5-8430-4985-9B7F-A30E53D709B3\" codebase=\"" + QQLIVE_INSTALLER_CAB + "\" ID=QLiveInstaller></OBJECT>";
	strHtml += "<table cellpading=0 cellspacing=0 width=" + this.width + " height=" + this.height + " bgcolor=#000000><tr><td><div id=_qqlivecontent></div></td></tr></table>";
	
	document.getElementById(vElementId).innerHTML = strHtml;
	vElementId = "_qqlivecontent";
	
	{
		// 判断版本
		var objQQLiveInstaller = null;
		objQQLiveInstaller = document.getElementById('QLiveInstaller');
		var nVer = 0;
		try
		{
			nVer = objQQLiveInstaller.GetVersion();
		}
		catch(e)
		{
			nVer = 0;
		}
		
		var strVer;
		var nMain = parseInt(nVer / 10000 / 100);
		var nSub = parseInt(nVer / 10000) - nMain * 100;
		var nReleaseNO = parseInt(nVer) - (nMain * 100 * 10000 + nSub * 10000);
		strVer = nMain + "." + nSub + "." + nReleaseNO;
		
		// alert(strVer);
		
		if (compareVersions(strVer, VER_QQLIVE) < 0)
		{
			// 版本过旧或没有安装QQLive
			strHtml = "正在检测您的QQ直播系统环境。。。";
			document.getElementById(vElementId).innerHTML = strHtml;
			
			strHtml = "<table align=center><tr><td align=left width=170><i><b><font face=\"黑体\" size=4 color=white style=\"line-height:1.3\">您的电脑还未安装</font><font face=\"黑体\" size=5 color=white style=\"line-height:1.3\">" + QQLIVE_PRODUCT_NAME + "</font><font face=\"黑体\" size=4 color=white style=\"line-height:1.3\">或者您的版本过低</font></b></i></td><td width=10> </td><td width=100><img src=\"" + QQLIVE_PRODUCT_ICON + "\"></td></tr>";
			strHtml += "<tr><td colspan=3><br></td></tr><tr><td colspan=3 align=center><a href=\"javascript:Download();\"><img border=0 src=\"" + QQLIVE_PRODUCT_DOWNLOAD_PIC + "\"></a></td></tr>";
			strHtml += "</table>";
			// nDownloadTimeID = setTimeout("Download();", 5000);		
		}
		else
		{
			strHtml = "<Object id=QQLiveOcx width=" + this.width;
			strHtml += " height=" + this.height;
			strHtml += " classid=CLSID:9242BB35-0DB0-43ac-8DFC-8EA07E63B92A";
			strHtml += " standby=\"Loading Tencent QQLive componets...\">";
			
			// 添加属性
			var nParamCount = this.ocxParams.count;
			for (i = 0; i < nParamCount; i++)
			{
				var vParam = this.ocxParams[i];
				if (vParam != null)
				{
					strHtml += " <PARAM NAME=\"" + vParam.Name + "\" VALUE=\"" + vParam.Value + "\">";
				}
			}
			strHtml += " </Object>";
		}
	}
	document.getElementById(vElementId).innerHTML = strHtml;	
}

QQLiveObject.prototype.getCtrl = function()
{
	return document.getElementById("QQLiveOcx");
}

function createQQLive(vElementId)
{
	var vQQLive = new qqlive();
	vQQLive.Create(vElementId);
	return vQQLive;
}

