﻿var gActiveXCab = "TencentMailActiveX.cab";
var gActiveXExe = "TencentMailActiveXInstall.exe";
var gActiveXObj = [["TXGYMailActiveX.ScreenCapture", "TXGYMailActiveX.UploadFilePartition", "TXGYMailActiveX.Uploader"], ["FMO.ScreenCapture", "TXGYUploader.UploadFilePartition", "FMO.Uploader"]];
var gActivexLastVerNo = ["1.0.1.28", "1.0.1.28", "1.0.1.28"];
var gScreenSnapObj=null;
var gImgUploaderObj=null;
var gTBPScreenImg=null;
var gIsIE=true;
var gIEVer=8;
var gEditorAxMinVer = [(GetDomain()=="foxmail.com")?"1.0.0.5":"1.0.0.4", "1.0.1.27"];
var gIsInstall = true;
var gTimerID = 0;
function VersionCreater(ver)
{
	var v;
	v = ver.replace(/\./g,',');
	return v;
}
function getInstall(bNeedUpdate)
{
	var InstallText = ( bNeedUpdate[0] ? '<object CLASSID="CLSID:BFB79EE1-04AE-4d4a-B85E-27EE5F30C095" codebase="/activex/' + gActiveXCab + '#version=' + VersionCreater(gActivexLastVerNo[0]) + '"></object>' : '') + ( !bNeedUpdate[0] && bNeedUpdate[1] ? '<object classid="clsid:A877BA28-1F7E-4876-B299-50B3199A1A5D" codebase="/activex/' + gActiveXCab + '#version=' + VersionCreater(gActivexLastVerNo[1]) + '"></object>' : '');
	return InstallText;
}
function doDetectCapure()
{
	//activexId: 0 - screen capture; 1 - upload file partition; 2 - upload; detectType: 0 - exist; 1 - min exist; 2 - new exist
	var i=0;
	var res = 0;
	var needUpdate=new Array(false,false,false);
	for(i=0;i<3;i++)
	{
		res = DetectActiveX(i,2);
		needUpdate[i] = !res;
		if(needUpdate[i])
		{
			gIsInstall = false;
		}
	}
	gTimerID = setTimeout('doDetectCapure();',1000);
	if(gIsInstall)
	{	
		clearTimeout(gTimerID);
	}	
	var div = document.getElementById('capture_pic');
	if(div && gIsInstall)
	{
		div.style.backgroundImage="url(http://support.qq.com/public/external/edit/images/editoricon.gif)";
		div.style.backgroundPositionX="130px";	
	}
	return needUpdate;
}

function CreateActiveX(activexId)
{
	if (activexId >= 0 && activexId <= 2)
	{
		for (var i = 0, len = gActiveXObj.length; i < len; i++)
		{
			try
			{
				var o = new ActiveXObject(gActiveXObj[i][activexId]);
				if (o)
				{
					return o;
				}
			}
			catch (e)
			{
			}
		}
	}
	return null;
}
function DetectActiveX(activexId, detectType)
{
	var activeXObj = CreateActiveX(activexId);
	if (activeXObj == null)
	{
		return false;
	}
	if (detectType != 1 && detectType != 2)
	{
		return true;
	}
	if (parseInt(GetActiveXVer(activeXObj).split(".").join("")) >= 
		parseInt((detectType == 1 ? gEditorAxMinVer : gActivexLastVerNo)[activexId].split(".").join("")))
	{
		activeXObj=null;
		return true;
	}
	else
	{
		return false;
	}
}
function fUploadCustomImg(bIsWarn) {
	debug('in fUploadCustomImg');
	if (!gScreenSnapObj.IsClipBoardImage) {
		if (bIsWarn) alert("截屏不成功!");
		debug('截屏不成功!');
		return;
	}
	gTBPScreenImg = gScreenSnapObj.SaveClipBoardBmpToFile(1);
	if (!gTBPScreenImg) {
		if (bIsWarn) alert("保存截屏图片不成功!");
		debug("保存截屏图片不成功!");
		return;
	}
//	fHideTBPMenu();
	startUploadCustomImg();
}
function startUploadCustomImg(filectrl) {
	if (gTBPScreenImg == "" && !filectrl) return;
	//showUploadStatus();
	debug('in startUploadCustomImg :gImgUploaderObj='+ ((gImgUploaderObj==null)?'null':'an object'));
	gImgUploaderObj.StopUpload();
	gImgUploaderObj.ClearHeaders();
	gImgUploaderObj.ClearFormItems();

	gImgUploaderObj.OnEvent = fOnEvent;
	gImgUploaderObj.URL = 'http://image.support.qq.com/cgi-bin/uploadscreen';
	debug('url='+gImgUploaderObj.URL);
	gImgUploaderObj.AddHeader("Cookie", document.cookie);
	gImgUploaderObj.AddFormItem("fid", 0, 0, "32");
	if (!gIsIE || gIEVer >= 7) {
		gImgUploaderObj.AddFormItem("mode", 0, 0, "download");
	}
	gImgUploaderObj.AddFormItem("from", 0, 0, filectrl ? "" : "snapscreen");
	if (filectrl) {
		gImgUploaderObj.AddFormItemObject(filectrl);
	}
	else {
		gImgUploaderObj.AddFormItem("UploadFile", 1, 4, gTBPScreenImg);
	}
	gImgUploaderObj.StartUpload();
}
function fScreenSnap(mode) {
	//if (!S("tbp_"+gTBPCmds[2])||!DetectActiveX(0, 1)) return;
         if(!DetectActiveX(0, 1))return;	
	if (gScreenSnapObj) gScreenSnapObj = null;
	if (gImgUploaderObj) {
		gImgUploaderObj.StopUpload();
		gImgUploaderObj = null;
	}

	gScreenSnapObj = CreateActiveX(0);
	gImgUploaderObj = CreateActiveX(2);
debug('gScreenSnapObj='+ ((gScreenSnapObj==null)?'null':'an object'));	
debug('gImgUploaderObj='+((gImgUploaderObj==null)?'null':'an object'));
	if (mode == "paste") {
		fUploadCustomImg();
		return;
	}

	//fHideTBPMenu();

	try{gScreenSnapObj._Type = (GetDomain()=="foxmail.com") ? 1 : 0;}catch(e){}
	gScreenSnapObj.OnCaptureFinished = function() {
		window.focus();
		fUploadCustomImg(1);
	};
	gScreenSnapObj.OnCaptureCanceled = function() {
		window.focus();
		//fSetEditorFocus();
	};
	gScreenSnapObj.DoCapture();
}
function GetDomain()
{
	return 'qq.com';
}
function GetActiveXVer(parm)
{
	try
	{
		var activeXObj = typeof(parm) == "number" ? CreateActiveX(parm) : parm;
		var version = activeXObj ? (activeXObj.version ? activeXObj.version : "1.0.0.3") : "";
	}
	catch (e)
	{
		var version = "";
	}
	return version;
}
function debug(msg)
{
}
function fOnEvent(obj, eventID, p1, p2, p3) {
	debug('fOnEvent eventID='+eventID);
	switch(eventID) {
		case 1:		//error
			alert("图片上传失败!err:" + p1);
			//text="fail"+ActiveXErrDescription(p1);		
			//showUploadStatus( "图片上传失败: " + ActiveXErrDescription(p1));
			break;
		case 2:		//process
			//alert('图片上传中: '+parseInt(p1 * 90 / p2) + "%");
			//showUploadStatus('图片上传中: '+parseInt(p1 * 90 / p2) + "%");
			break;
		case 3:		//finish
			//text="success"+ActiveXErrDescription(p1);		
			debug('response code='+gImgUploaderObj.ResponseCode );
			if (gImgUploaderObj.ResponseCode != "200") {
				alert("图片上传失败!err:" + p1);
				//showUploadStatus( "图片上传失败:" +  ActiveXErrDescription(p1) );
				return;
			}
			//alert('图片上传完成: 100%');
			//showUploadStatus( '图片上传完成: 100%');
			var ss = gImgUploaderObj.Response;
			debug("server response "+ss);
			uploadSuccess(ss);
			break;
		default:
			break;
	} 
}
function uploadSuccess(ss)
{
	var er = ss.split("<er>");
	er = er[1].split("</er>");
	if(er[0] == "0")
	{
		var url = ss.split("<screen_url>");	
		url = url[1].split("</screen_url>");
		var text = GetContent();
		if((text.indexOf("为安全起见，请您不要主动在内容中提供QQ密码、身份证号码、银行帐号与密码等机密信息。")!=-1)||(text.indexOf("首先感谢您的反馈")!=-1)){
			PutContent('<img src='+url[0]+'>');
		}else
			AddContent('<img src='+url[0]+'>');
	}
	else
	{
		if(er[0] == "-20987")
		{
			alert("登陆超时,请重新登陆以后再上传截屏");
		}
		else
		{
			alert("图片上传失败,请联系管理员,err_code:" + er[0]);
		}
	}	
}

function StartCapture()
{
	var object = doDetectCapure();
	if((getCookie("uin") == "" || getCookie("skey")=="")&&(getCookie("support_uin") == ""||getCookie("support_key")=="")&&(getCookie("qqmail_username")==""))
	{
		alert("请登陆后再上传截屏");
		return;
	}
	var text = getInstall(object);
	if(text.length>0)
	{
		var t;
		t = text.replace(/\</g,'&lt;');
		t = t.replace(/\>/g,'&gt;');
		debug('install text:'+t);
		alert("需要更新控件,请安装控件并等待页面自动刷新");
		var div = document.getElementById('div_install');
		div.innerHTML=text;
		//alert(div.innerHTML);
		return;
	}
	fScreenSnap('');
}
