var mode;
var param;
var silent;
var divElement = null;
var refer = document.URL;
var status_ctl;
var progress_ctl;
var the_timeout;
//this.param=param;
//this.mode=mode;

function isSogouTBInstalled(){
	try {
		var obj = new ActiveXObject("sogoutb.Detector");
		if (obj) {
			//alert("您已经安装sogou toolbar");
			return true;
		}
	} catch (e) {
		//alert("您未安装sogou Toolbar");
		return false;
	}
}

var done = false;

function test1()
{
	done = true;
}

function addActiveXDLL(){
	var elem = document.createElement("<div>");
	//var str= 'alert(1);';
	var str= '<OBJECT onreadystatechange="javascript:test1()" ID="dlcore" width=1 height=1 codeBase="http://tb.sogou.com/DLLoader.cab#Version=1,0,1,0" CLASSID="CLSID:98A62E3F-A8C5-4EF0-8A00-C70CF9D18A89"></OBJECT>';
	elem.innerHTML=str;
	document.body.appendChild(elem);

	return elem;
}

function checkDLCORE(){
	var errmsg = "在线安装sogou直通车失败，请检查：1，activeX 是否被拦截；2，IE安全选项是否禁用了activeX";
	var ok = false;
	try{
		if( typeof(dlcore.versionStatus)=='undefined' ){
			ok = false;
		}else{
			ok = true;
		}
	} catch(e) {
		ok = false;
	}
	if (!ok) { window.status = errmsg; }
	return ok;
}

function doTimer(mode,param){
	installSogouTB(mode,param);
}


function installSogouTB(mode,param) {
	try {
		status_ctl      = top.document.getElementById("the_status");
        	progress_ctl    = top.document.getElementById("the_progress");
	}catch(e){
		//alert("e");
	}
	if(divElement==null)
		divElement = addActiveXDLL();
	
	if (!done) {
		window.setTimeout("doTimer('"+mode+"','"+param+"');",500);
		return;
	}
	if (!checkDLCORE()){
		downloadSetup(mode,param);
		return;
	}
	try{
		var b = doNeedInstall();
		if (b) {
			setParam(mode,param);
			dlcore.installPack();
			getInstallProgress(mode,param);
		}
	} catch(e) {
		downloadSetup(mode,param);
	}
}
function hint() {
	if( confirm("安装成功！请重新启动IE浏览器。是否关闭当前IE浏览器？") ) {
		top.window.close();
	}
}


function getInstallProgress(mode,param) {
	if ( !checkDLCORE() )
		return;
	var progress = dlcore.installProgress;
	if (progress>=0 && progress<=100) {
	if(status_ctl){
			progress_ctl.style.width = (progress>0?progress:1)+"%";
                        status_ctl.innerText = "已下载" + progress + "%";
		}else{	
			 window.status = "已下载" + progress + "%";
			}
		if (progress==100)
	 	  if(status_ctl){
			status_ctl.innerText = "下载完成，正在安装……";
		  }else{
			window.status="下载完成，正在安装";
			}
		the_timeout = setTimeout("getInstallProgress('"+mode+"','"+param+"');", 500);
	} else if (progress>100) {			
		if (dlcore.installStatus==0) {
		if(status_ctl){
			status_ctl.innerText = "安装完成";
        		}else{
			window.status="搜狗直通车安装完成 请重启IE浏览器";
				}
			addMode(mode,param);
			hint();
		} else {
			downloadSetup(mode,param);
		}
	} else if (progress<0) {
		downloadSetup(mode,param);
	}
}


function doNeedInstall() {
	if ( !checkDLCORE() )
		return true;
	var status = dlcore.versionStatus;
	switch (status){
	case -1:
		if(status_ctl){
		status_ctl.innerText = "需要安装";}
		else{
		window.status  = "需要安装";}
		return true;
		break;
	case 0:
		if(status_ctl){
		status_ctl.innerText  = "您已安装最新版本";}
		else{
		window.status = "您已安装最新版本";}
		return false;
		break;
	default:
		if(status_ctl){
		status_ctl.innerText  = "需要更新";}
		else{
		window.status = "需要更新";}
		return true;
	}
}

function downloadSetup(mode,param){
	if (status_ctl){
	status_ctl.innerText = "在线安装失败，请下载安装包选择离线安装";
	}
	else{
	window.status  = "在线安装失败，请下载安装包选择离线安装";
	}
//	setParam(mode,param);
	location.href="http://tb.sogou.com/dl/sogoutb_setup.exe?refer=install_toolbar.js&mode="+mode+"&param="+param+"&source=js.exe";
}

function setParam(mode,param) {
	var modes = mode.split(",");
	var params = param.split(";");
	for (i=0; i<modes.length; i++) {
		var modee = modes[i];
		var paramm = params[i];
		switch (modee){
		case 'plugin':
			dlcore.setInstallParam("method=online&"+mode+"="+paramm);
			break;
		case 'download':
			var address = paramm.split("|");
			var f = address[0];
			var fileurls = address[1];
			if(f = 1) {
				dlcore.setForceDownload();
			}
			dlcore.setInstallParam("method=online&url="+fileurls);
			break;
		case 'skin':
			dlcore.setInstallParam("method=online&"+mode+"="+paramm);
			break;
		case 'rss':
                        dlcore.setInstallParam("method=online&"+mode+"="+paramm);
                        break;
		default:
			break;
		}
	}
}



function addMode(mode,param) {
	var modes = mode.split(",");
	var params = param.split(";");
	for (i=0; i<modes.length; i++) {
		var modee = modes[i];
		var paramm = params[i];
		switch (modee){
		case 'plugin':
			var plugins = paramm.split(",");
			for (j=0; j<plugins.length; j++) {
				var plugin = plugins[j];
				dlcore.addPlugin(plugin);
			}
			break;
		case 'download':
			var address = paramm.split("|");
			var f = address[0];
			var fileurls = address[1];
			if(f = 1) {
				dlcore.setForceDownload();
			}
			var fileurl = fileurls.split(",");
			for (k=0; k<fileurl.length; k++) {
				var file = fileurl[k];
				dlcore.downloadFile(file,refer,"");
			}
			break;
		case 'skin':
			var skins = paramm.split(",");
			for (l=0; l<skins.length; l++) {
				var skin = skins[l];
				dlcore.addSkin(skin);
			}
			break;
		case 'rss':
                        var rsses = paramm.split(",");
                        for (m=0; m<rsses.length; m++) {
                                var rss = rsses[m];
				alert(rss);
                                dlcore.addFeed(rss);
                        }
                        break;
		default:
			return;
		}
	}
}

