﻿/* 定义全局变量 */
var G_sAgt=navigator.userAgent.toLowerCase();
var G_Microsoft_IE=(G_sAgt.indexOf("msie")!=-1 && document.all) ? true : false;

var sExec=0;					/* 停止执行命令 */
var WorkProgress=new Array();			/* BICQ请求队列 */
/* ########################################################################################################################### */
function $get_(id) {
	return document.getElementById(id);
};

/* 取得Cookie的值 */
function get_cookie(Name) {
	var search = Name + "=";
	var returnvalue = "";
	if (document.cookie.length > 0) {
		offset = document.cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			if (end == -1)
			end = document.cookie.length;
			returnvalue=unescape(document.cookie.substring(offset, end));
		}
	}
	return returnvalue;
};

/* 设置Cookie值 */
function set_cookie(Name,Value) {
	var UTime=new Date();
	UTime.setTime(UTime.getTime() + 1000*3600*24*365);
	document.cookie=Name+"="+Value+";expires="+UTime.toGMTString();
};

/* 将数据保存到UserData区域 */
function GzSaveUserData(name,value) {
	if (!G_Microsoft_IE) return false;

	var oObj=$get_("__globalGUserData");
	oObj.setAttribute(name,value);		//设置name属性值为value
	oObj.save(BICQ_UserDataVersion);	//存储到UserData区域
	return true;
};

/* 从UserData区域读取数据 */
function GzLoadUserData(name) {
	if (!G_Microsoft_IE) return null;

	var oObj=$get_("__globalGUserData");
	oObj.load(BICQ_UserDataVersion);	//从UserData区域载入
	return oObj.getAttribute(name);		//读取name属性值并返回
};

/* 保存客户端帐号信息 */
function SetGuestUserAccountKey(sKey) {
	set_cookie("GuestAccountKey",sKey);
	GzSaveUserData("GuestAccountKey",sKey);
};

/* 取得客户端帐号信息 */
function GetGuestUserAccountKey() {
	var sKey=get_cookie("GuestAccountKey");
	sKey=(sKey=="" ? GzLoadUserData("GuestAccountKey") : sKey);
	return (sKey==null ? "" : sKey);
};

/* 取得随机数 */
function GetRandom(N) {
	var Rand=Math.round(Math.random()*(N/2));
	return parseInt(Rand);
};

function GetOptionsValue(ID) {
	if ($get_(ID)) {
		return $get_(ID).options[$get_(ID).selectedIndex].value;
	}
	else {
		return null;
	}
};

/*获取本地时间*/
function GetCurrentTime() {
	var TimeObj=new Date();
	var Time_Year=TimeObj.getYear();
	var Time_Month=TimeObj.getMonth()+1;
	var Time_Date=TimeObj.getDate();
	var Time_Hours=TimeObj.getHours();
	var Time_Minutes=TimeObj.getMinutes();
	var Time_Seconds=TimeObj.getSeconds();

	if (Time_Month<10) Time_Month="0"+Time_Month;
	if (Time_Date<10) Time_Date="0"+Time_Date;
	if (Time_Hours<10) Time_Hours="0"+Time_Hours;
	if (Time_Minutes<10) Time_Minutes="0"+Time_Minutes;
	if (Time_Seconds<10) Time_Seconds="0"+Time_Seconds;

	return (Time_Year+"-"+Time_Month+"-"+Time_Date+" "+Time_Hours+":"+Time_Minutes+":"+Time_Seconds);
};

/* 特殊字符过滤 */
function ReplaceAjaxWord(Msg) {
	Msg=Msg.replace(/&/gi,"\x7fa\x7f");
	Msg=Msg.replace(/\+/gi,"\x7fb\x7f");
	return Msg;
};

/* 产生唯一队列ID */
function GetUniqueProgressKeyID() {
	var TimeObj=new Date();
	return TimeObj.getTime()+"_"+Math.ceil(Math.random()*1000000000000000);
};

/* 输出JS错误 */
function JsErrorDebug(jsErr) {
	alert("Error:\r\n\r\n"+jsErr);
};

/* 执行JS脚本 */
function RunJavaScript(jStr) {
	/*在末尾添加;*/
	if (jStr.substr((jStr.length-3),3)!="\r;\n") jStr+="\r;\n";
	var jEnd=0;
	var jReStr="";
	while((jEnd=jStr.indexOf("\r;\n"))!=-1) {
		jReStr=jStr.substr(0,(jEnd+3));
		jStr=jStr.replace(jReStr,"");

		if (jReStr!="") {
			alert(jReStr);
			/*执行并返回结果*/
			if ((jReStr.substr(0,3)=="\r;\n") || (jReStr.substr(0,4)=="\r;;\n")) {
				var key_start=jReStr.indexOf("\n/*\x7f")+4;
				var key_end=jReStr.indexOf("\x7f*/");
				var ProcessID=jReStr.substr(key_start,key_end-key_start);
				//window.status=ProcessID+"_"+WorkProgress["id_"+ProcessID];
				if (WorkProgress["id_"+ProcessID]==true) {
					WorkProgress["id_"+ProcessID]=null;// 注销ID
					try {
						eval(jReStr);
					}
					catch(e) {
						//IE@description,message,name,number
						//Fire Fox@message,fileName,lineNumber,stack,name

						if (G_Microsoft_IE) {
							var err=e.message;
							var url=e.name;
							var line=e.number;
						}
						else {
							var err=e.message;
							var url=e.fileName;
							var line=e.lineNumber;
						}
						httpconnect("index.php","action=error&agt="+G_sAgt+"&err=eval@"+err+"&url="+url+"&line="+line);
						if (JsAllErrorDebug==1) {
							JsErrorDebug("type=eval@\r\nurl="+url+"\r\nline="+line+"\r\nerror="+err+"\r\n");
							alert(jReStr);
						}
					}
				}
			}
			else {
				/*错误处理*/
				if (JsAllErrorDebug=="1") JsErrorDebug(jReStr.substr(0,jReStr.length-3));
			}
		}
	}
};

/* Ajax对象 */
function httpconnect(sURL,sVars) {
	var sArg = null;
	var argv = httpconnect.arguments;
	var argc = httpconnect.arguments.length;
	var xmlHttp=null;
	if (window.XMLHttpRequest) {
		xmlHttp=new XMLHttpRequest();
	}
	else {
		var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
		for (var n = 0; n < MSXML.length; n ++) {
			try {
				xmlHttp = new ActiveXObject(MSXML[n]);
				break;
			}
			catch(e) {
				//JsErrorDebug(e.message);
			}
		}
	}

	try {
		if (argc>3) sArg=argv[3];
		if (sArg=="wait") {
			xmlHttp.open("POST",sURL,false);
		}
		else {
			xmlHttp.open("POST",sURL,true);
		}
		var ProcessID=GetUniqueProgressKeyID();
		WorkProgress["id_"+ProcessID]=true;

		xmlHttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		xmlHttp.send("process_id="+ProcessID+"&SESSION_ID="+BICQ_SESSION_ID+"&AccountKey="+GetGuestUserAccountKey()+"&"+sVars);

		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState==4) {
				if (xmlHttp.status=="200") {
					var ajaxText=xmlHttp.responseText;
					ajaxText=ajaxText.replace(/\xEF\xBB\xBF/g, "");
					if (sArg=="debug") {
						alert(ajaxText);
					}
					else {
						if (sExec==0) {
							//RunJavaScript(ajaxText);
							if(ajaxText.length)
							{
								//alert(ajaxText);
								eval(ajaxText);
							}
						}
					}
				}
				else {
					window.status="Error Code:"+xmlHttp.status;
				}
			}
		}
	}
	catch(e) {
		if (sExec==0) alert('网站跨域使用Ajax，请在BICQ后台设置使用Ajax跨域代理。');
		sExec=1;
	}
};
