<!--
/**
 * common.js
 * @fileoverview 公有函数类，常用/公用的函数集合类
 * @author Lynk Li
 */

/**
 * 扩展Array
 * 判断数组中是否包含child
 * @param Object child 子元素
 */
function Array_has(child) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == child) return true;
	}
	return false;
}
Array.prototype.has = Array_has;

/**
 * @class OperatorStatus 客服状态对象类
 * @constructor
 * @param String id 状态ID
 * @param String value 状态值 A:离线B:隐身C:在线D:在线不交谈
 * @param String label 状态名
 */
function OperatorStatus(id, value, label) {
	/**
	 * 状态ID
	 */
	this.id = id;
	/**
	 * 状态值 A:离线B:隐身C:在线D:在线不交谈
	 */
	this.value = value;
	/**
	 * 状态名
	 */
	this.label = label;
}

/**
 * @class Common 公用类，定义一些常用的变量、函数等
 * @constructor
 * @author Lynk Li
 */
function Common() {
	/**
	 * 客服状态数组，存储公司对应客服状态信息
	 */
	this.arrOperatorStatus = new Array();
	/**
	 * 存储登陆以后，服务器访问的参数，例如客户端版本，是否包含VOIP等，参见{@link Login#checkLogin}； 9001;ErrorID[错误ID];CompanyID[公司ID];UserID[客服ID];[客服列表版本号];[类别列表版本号];[监控页面列表版本号];[客服状态列表版本号];[请求类别与客服关系列表];[请求预存消息列表];[请求域名绑定列表];CompanyType;InviteNum;InviteUseNum;WatchNum;WatchUseNum;是否开通电话
	 */
	this.loginParam = new Array();
	/**
	 * 存储9022返回的权限控制字符串，
	 */
	this.versionArr = new Array();
	this.getArrayObject = Common_getArrayObject;
	
	this.myTrim = Common_myTrim;
	this.send = Common_send;
	this.setReceiveTimer = Common_setReceiveTimer;
	this.receiveTimer = Common_receiveTimer;
	this.dealwithMessage = Common_dealwithMessage;
	
	this.showFrame = Common_showFrame;
	/**
	 * 初始化各个列表的超时设置，参见{@link #initDepartmentList}
	 */
	this.initTimeout = 20;
	this.showLeft = Common_showLeft;
	this.showLeftVlist = Common_showLeftVlist;
	this.showLeftOplist = Common_showLeftOplist;
	this.showLeftToolbars = Common_showLeftToolbars;
	
	this.getArrayObjByPropertyValue = Common_getArrayObjByPropertyValue;
	this.getListObjByPropertyValue = Common_getListObjByPropertyValue;
	
	this.resizeUI = Common_resizeUI;
	/**
	 * 存储当前内页显示的类型
	 */
	this.innerType = "";
	this.setInnerType = Common_setInnerType;
	this.resizeInnerUI = Common_resizeInnerUI;
	
	this.clearPopDiv = Common_clearPopDiv;
	
	this.findTableField = Common_findTableField;
	this.soundPrompt = Common_soundPrompt;
	this.popPrompt = Common_popPrompt;
	this.removePopup = Common_removePopup;
	
	this.clearSelect = Common_clearSelect;
	this.addOption = Common_addOption;
	this.buildSelect = Common_buildSelect;
	
	this.checkEmail = Common_checkEmail;
	this.nl2br = Common_nl2br;
	this.loadDatas = Common_loadDatas;
	this.loadDatasOk = Common_loadDatasOk;
	this.showLeftTools = Common_showLeftTools;
	
	this.countSeconds = Common_countSeconds;
	this.countSecondsByTime = Common_countSecondsByTime;
	/**
	 * 右下角弹出提示框的标志字符串，参见{@link Setting#defaultPopPrompt}
	 */
	this.popPromptSetting = _setting.defaultPopPrompt;
	/**
	 * 声音提示的标志字符串，参见{@link Setting#defaultSoundPrompt}
	 */
	this.soundPromptSetting = _setting.defaultSoundPrompt;
	/**
	 * 存储右下角弹出提示框设置，值为0不弹出1弹出
	 * 用于{@param #popPrompt}
	 * 初始化，从Cookie获取，如果Cookie为空则使用默认值，参考{@link #loadPromptSetting}
	 * 在个人设置中可以设置并保存，参考{@link Personal#setPrompt}
	 */
	this.aPopPrompt = new Array();
	/**
	 * 存储声音提示框设置，值为0不提示1提示
	 * 用于{@param #soundPrompt}
	 * 初始化，从Cookie获取，如果Cookie为空则使用默认值，参考{@link #loadPromptSetting}
	 * 在个人设置中可以设置并保存，参考{@link Personal#setPrompt}
	 */
	this.aSountPrompt = new Array();
	this.loadPromptSetting = Common_loadPromptSetting;
	this.reloadOpertorList = Common_reloadOpertorList;
	this.alertDebug = Common_alertDebug;	
	/**
	 * lists of initial datas
	 */
	this.lists = {
		l9002 : [],
		l9003 : [],
		l9004 : [],
		l9005 : [],
		l9006 : [],
		l9070 : []
		};
	/**
	 * array of initialed listDatas
	 */
	this.listsOk = [];
	/**
	 * cache messages stored before init datas ok
	 */
	this.cacheMessages = [];
	this.initDatas = Common_initDatas;
	this.checkListOk = Common_checkListOk;
	this.businessControl = Common_businessControl;
	/**
	 * IE 6 or IE 7
	 */
	this.ieVersionFlag = navigator.appVersion.indexOf("MSIE 6.0") == -1 ? 7 : 6;
	this.setAutoHiddenTimer = Common_setAutoHiddenTimer;
	this.autoHidden = Common_autoHidden;
	/**
	 * 自动隐身Timer
	 */
	this.autoHiddenTimer = null;
	this.ocxPrompt = Common_ocxPrompt;
}

/**
 * 根据数组元素的某个属性，查询数组的元素
 * @param Array arr 带查询的数组
 * @param String property 数组元素的属性名
 * @param String value 数组元素相应属性值
 * @returns 相应数组元素对象，如果没有查找到返回null
 */
function Common_getArrayObject(arr, property, value) {
	for (var i = 0; i < arr.length; i++) {
		if (eval("arr[i]." + property + " == '" + value + "'")) {
			return arr[i];
		}
	}
	return null;
}

/**
 * 过滤函数,过滤掉字符串中的空格、回车、换行、Tab
 * @param String str 待过滤字符串
 * @return 过滤后的字符串
 */
function Common_myTrim(str) {
	var rg = /\s/g;
	str = str.replace(rg, "");
	return str;
}


/**
 * 查询Table中满足条件的Field的index
 * @param type 表ID，例如9002
 * @param recordIndex 记录索引值
 * @param condition1 fieldAtom索引条件1
 * @param value1 条件值1
 * @param condition2 fieldAtom索引条件2
 * @param value2 条件值2
 * @return 符合条件的FieldIndex，如果没有找到返回-1
 */
function Common_findTableField(type, recordIndex, condition1, value1, condition2, value2) {
	eval("var list = _common.lists.l" + type + ";");
	
	for (var i = 0; i < list.length; i++) {
		var v1 = list[i][condition1];
		if (v1 == value1) {
			if (condition2 != -1) {
				var v2 = list[i][condition2];
				if (v2 == value2) return i;
			} else {
				return i;
			}
		}
	}
	return -1;
}

/**
 * 通过控件发送一条消息到服务器
 * @param String p_strMsg 待发送的消息字符串
 */
function Common_send(p_strMsg) {
	if (typeof webcl == "undefined" || webcl == null) return;
	this.alertDebug("Send-------------:" + p_strMsg.replace(/</g, "&lt;").replace(/>/g, "&gt;"));
	if (webcl.Send(p_strMsg) > 0) {
		//alert("与服务器连接已经断开，请重新登陆。");
	}
}

/**
 * 设置获取消息Timer，从而通过receiveTimer定时获取服务器发下来的信息
 * @param int iInterval Timer的时间间隔
 */
function Common_setReceiveTimer(iInterval) {
	window.receiveHandle = setInterval("_common.receiveTimer()", iInterval);
}

/**
 * 获取控件缓冲区消息
 */
function Common_receiveTimer() {
	if (typeof webcl == "undefined" || webcl == null) return;
	try {
		var strRead = "";
		while(webcl.GetToWebMsgSize() > 0) {
			strRead += webcl.GetToWebMsg();
		}
		if (strRead != "") {
			if (this.listsOk.length == 5) this.dealwithMessage(strRead);
			else this.initDatas(strRead);
		}
	} catch(exc_alertfun) {
		_common.alertDebug("系统产生一个异常:Common_receiveTimer:$message=" + exc_alertfun.message + ";$name=" + exc_alertfun.name);
	}
}

/**
 * 初始化各项初始数据的处理中心
 * @param String str 服务器发送来的消息字符串
 */
function Common_initDatas(str) {
	//_common.alertDebug(str.replace(/</g, "&lt;"));
	str = str.replace(/\n/g, "<br />");
	var parseStringMessages = new HJWebClMsgString(str);
	//_common.alertDebug("msglength:" + parseStringMessages.messages.length);
	for (var iM = 0; iM < parseStringMessages.messages.length; iM++) {
		var msg = parseStringMessages.messages[iM];
		switch (msg.msgId) {
			case "9002":
				for (var i = 0; i < msg.datas.length; i++) {
					for (var j = 0; j < msg.datas[i].length; j++) {
						var a = msg.datas[i][j].split(";");
						var opid = a[0];
						var company = a[1];
						var account = a[3];
						var nick = a[4];
						var email = a[5];
						var type = a[7];
						var hello = a[13];
						var bye = a[14];
						var phone = a[21];
						var telephone = a[22];
						/*
						 * phone, telephone
						 */
						//alert("phone=" + phone + ";telphone=" + telephone);
						var position = a[23];
						if (_personSession.account == account) {
							 /**
							  * 0	op_id
							  * 1	op_company
							  * 2	op_active
							  * 3	op_username
							  * 4	op_name
							  * 5	op_email
							  * 6	op_status
							  * 7	op_type
							  * 8	op_talkstatus
							  * 9	op_login
							  * 10	op_logout
							  * 11	op_onlinetime
							  * 12	op_session
							  * 13	op_hello
							  * 14	op_bye
							  * 15	op_movie_status
							  * 16	op_voice_status
							  * 17	op_picurl
							  * 18	op_helptype
							  * 19	op_automsg
							  * 20	op_passwd
							  * 21	op_phone
							  * 22	op_telephone
							  * 23	op_position
							  * 24	op_memo
							  * 25	op_ip_mt
							  * 26	op_ip
							  */
							_personSession.id = opid;
							_personSession.company = company;
							_personSession.nick = nick;
							_personSession.hello = hello;
							_personSession.bye = bye;
							_personSession.type = type;
							_personSession.position = position;
							_personSession.phone = phone;
							_personSession.telephone = telephone;
							_personSession.email = email;
							_login.setLoginAccount(_personSession.account, _personSession.nick);
							_login.setMyStatus(status);
							this.showLeftTools();
						}
						//_common.insertOperator(a[0], nick, a[6]);
						var status = a[6];
						var opStatus = _common.getArrayObject(_common.arrOperatorStatus, "id", status);
						_operators.insert(opid, company, a[2], account, nick, email, opStatus.value, type, a[8], a[9], a[10], a[11], a[12], hello, bye, a[15], a[16], a[17], a[18], a[19], a[20], phone, telephone, position, a[24], a[25], a[26]);
						this.lists.l9002.push(a);					
					}
				}
				
				_operators.sort();
				_operators.show();		
				_reserve.getList();
				_common.alertDebug("load operator list ok!");
				if (!this.listsOk.has(9002)) this.listsOk.push(9002);
				break;
			case "9003":
				for (var i = 0; i < msg.datas.length; i++) {
					for (var j = 0; j < msg.datas[i].length; j++) {
						this.lists.l9003.push(msg.datas[i][j].split(";"));
					}
				}
				_common.alertDebug("load department list ok!");
				if (!this.listsOk.has(9003)) this.listsOk.push(9003);
				break;
			case "9004":
				for (var i = 0; i < msg.datas.length; i++) {
					for (var j = 0; j < msg.datas[i].length; j++) {
						this.lists.l9004.push(msg.datas[i][j].split(";"));
					}
				}				
				_common.alertDebug("load page list ok!");
				if (!this.listsOk.has(9004)) this.listsOk.push(9004);
				break;
			case "9005":				
				var loginSId = "";
				for (var i = 0; i < msg.datas.length; i++) {
					for (var j = 0; j < msg.datas[i].length; j++) {
						var a = msg.datas[i][j].split(";");
						var sId = a[0];
						var sValue = a[1];
						var sLabel = a[2];
						var opStatus = new OperatorStatus(sId, sValue, sLabel);
						if (_login.defaultStatus == sValue) loginSId = sId;
						this.arrOperatorStatus.push(opStatus);
						this.lists.l9005.push(a);
					}
				}
				if (loginSId != "") _common.send("<M><C>9008;" + loginSId + ";" + _login.defaultStatus + "</C></M>");
				
				_common.alertDebug("load status list ok!");
				if (!this.listsOk.has(9005)) this.listsOk.push(9005);
				break;
			case "9006":
				for (var i = 0; i < msg.datas.length; i++) {
					for (var j = 0; j < msg.datas[i].length; j++) {
						this.lists.l9006.push(msg.datas[i][j].split(";"));
					}
				}
				_common.alertDebug("load depOp list ok!");
				if (!this.listsOk.has(9006)) this.listsOk.push(9006);
				break;
			default:
				_common.alertDebug("cache msg:" + msg.msgId);
				this.cacheMessages.push(msg);
		}
	}
	this.checkListOk();
}


/**
 * 检查初始化列表是否已经完成
 */
function Common_checkListOk() {
	if (this.listsOk.length == 5) {
		_common.alertDebug("Load Lists Complete!");
		for (var i = 0; i < this.cacheMessages.length; i++) {
			//_common.alertDebug(this.cacheMessages.length);
			_common.alertDebug("Process Cached Msg:" + this.cacheMessages[i].msgId);
			this.businessControl(this.cacheMessages[i]);
		}
	} else {
		_common.alertDebug(this.listsOk);
	}
}

/**
 * business control
 */
function Common_businessControl(msg) {
	switch (msg.msgId) {
			//断线重新登陆以后，重新获取客服列表
			case "9002":
				this.reloadOpertorList();
				break;
			case "9022":
				this.versionArr = msg.commands;
				_versionFlag.setBy9022(msg);
				this.showLeftTools();
				this.loadDatasOk();				
				setViewColsDisplay();
				if (_setting.defaultMain == 'monitor') {
					_monitor.gotoMonitorInterface();
				} else if (_setting.defaultMain == 'report') {
					_report.gotoReportInterface();
				}
				break;
			//修改客服状态
			case "9008":
				if (msg.commands.length == 2) _operators.changeStatus(msg.commands[0], msg.commands[1]);
				break;
			//监控页面进入
			case "9070":
				if (msg.commands[0] == "0") {
					if (msg.commands[1] == "1") _monitor.visitorFlashInfo(msg);
					else _monitor.visitorIn(msg);
				}
				break;
			//修改页面状态
			case "9071":
				if (msg.commands.length > 2) _monitor.visitorUpdate(msg);
				break;
			//聊天页面进入
			case "9072":
				if (msg.commands[0] == "0") _monitor.chatPageIn(msg);
				break;
			//客服邀请访客结果:9102,ErrId,pageid,result,groupid
			case "9102":
				if (msg.commands[0] == "0") _monitor.requestVisitorResult(msg); 
				break;
			//访客请求客服进行交谈:9103,sn_id,pageid(访客),chat_ground_id,text
			case "9103":
				_monitor.visitorRequestChat(msg);
				break;
			//交谈消息:9105,groupid,消息类型(0,正常,1悄悄话),fromId,toId,text
			case "9105":
				_chat.receiveMsg(msg);
				break;
			//交谈访客输入信息预览
			case "9109":
				_chat.visitorPreMsg(msg);
				break;
			//交谈成员登录或登出,广播消息,广播客服退出群聊:9111,groupId,功能码(0,加入;1,	退出),op_id,op_name
			case "9111":
				_chat.memberInOut(msg);
				break;
			//初始化交谈组:<M><C>9112;groupId</C><R><F>交谈成员,交谈成员名称</F></R><R><F>交谈纪录</F></R></M>	
			case "9112":
				if (msg.commands[0] == "0") _chat.newChatGroup(msg);
				break;
			//文件传送网页推送之类消息:9107,groupID,消息类型(0,文件发送;1,网页推送;2,)fromId,toId,URL
			case "9107":
				break;
			case "9301"://访客Flash信息改变
				_monitor.fviChange(msg);
				break;
			case "9019"://公司登记信息
				if (msg.commands[0] == "0") {
					_system.infoArr = msg.commands;
					_system.showCompanyInfo(msg.commands);
				}
				break;
			case "9253"://返回修改公司登记信息结果
				_system.rsModifyInfo(msg);
				break;
			case "9180"://返回添加部门结果
				_system.rsAddDep(msg);
				break;
			case "9181"://收到增加部门广播
				_system.newDep(msg.commands);
				break;
			case "9184"://返回删除部门结果
				_system.rsDeleteDep(msg);
				break;
			case "9185"://收到删除部门广播
				_system.removeDep(msg.commands);
				break;
			case "9182"://返回修改部门
				_system.rsMdDep(msg);
				break;
			case "9183"://收到修改部门广播
				_system.modifyDep(msg);
				break;
			case "9020"://公司使用信息
				if (msg.commands[0] == "0") {
					_system.usageArr = msg.commands;
					_system.showCompanyUsage(msg.commands);
				}
				break;
			case "9190"://返回客服添加
				_system.rsAddOp(msg);
				break;
			case "9191"://收到添加客服广播
				_system.newOp(msg);
				break;
			case "9192"://返回删除客服
				_system.rsMdOp(msg);
				break;
			case "9193"://收到修改客服广播
				_system.modifyOp(msg);
				break;
			case "9194"://返回删除客服
				_system.rsDeleteOp(msg);
				break;
			case "9195"://收到删除客服广播
				_system.removeOp(msg.commands);
				break;
			case "9010"://下载公司域名绑定
				_system.rsDomain(msg);
				break;
			case "9017"://下载留言列表
				_leaveWords.rsList(msg);
				break;
			case "9246"://返回删除留言
				_leaveWords.rsDelete(msg);
				break;
			case "9261"://收到留言回复列表
				_leaveWords.viewReply(msg);
				break;
			case "9248"://收到新增留言消息
				_leaveWords.newLw(msg);
				break;
			case "9240"://返回留言浏览信息
				_leaveWords.opened(msg);
				break;
			case "9260"://返回回复留言
				_leaveWords.rsReply(msg);
				break;
			case "9247"://返回添加备注
				_leaveWords.rsRemark(msg);
				break;
			case "9014"://收到对话记录列表
				_chatRecords.rsList(msg);
				break;
			case "9152"://返回删除对话记录
				_chatRecords.rsDelete(msg);
				break;
			case "9156"://返回下载对话记录
				_chatRecords.rsFileDownload(msg);
				break;
			case "9154"://返回添加对话记录备注
				_chatRecords.rsRemark(msg);
				break;
			case "9016"://返回历史对话记录列表
				_chatRecords.rsHistory(msg);
				break;
			case "9250"://返回修改欢迎语
				_personal.rsMdWelcome(msg);
				break;
			case "9254"://返回修改个人信息
				_personal.rsMdInfo(msg);
				break;
			case "9007"://返回预存列表
				_reserve.rsList(msg);
				break;
			case "9160"://返回添加预存
				_reserve.rsAdd(msg);
				break;
			case "9164"://返回删除预存消息
				_reserve.rsDelete(msg);
				break;
			case "9165"://收到删除预存消息广播<M><C>9165;ID[删除的预存消息ID];Version[删除后的版本号]</C></M>
				_reserve.removeReserve(msg);
				break;
			case "9162"://收到修改预存返回
				_reserve.rsMd(msg);
				break;
			case "9161"://收到新增预存广播
				_reserve.newReserve(msg);
				break;
			case "9163"://收到修改预存广播
				_reserve.mdReserve(msg);
				break;
			case "9803"://返回电话设置和坐席设置列表
				_phone.rsData(msg);
				break;
			case "9820"://返回添加电话设置
				_phone.rsSetAdd(msg);
				break;
			case "9821"://收到添加电话设置广播
				_phone.newSet(msg);
				break;
			case "9822"://返回修改电话设置
				_phone.rsSetMd(msg);
				break;
			case "9823"://收到修改电话设置广播
				_phone.modifySet(msg);
				break;
			case "9824"://返回删除电话设置
				_phone.rsDelSet(msg);
				break;
			case "9825"://收到删除电话设置广播
				_phone.removeSet(msg);
				break;
			case "9800"://返回添加坐席设置
				_phone.rsSeatAdd(msg);
				break;
			case "9804"://收到添加坐席设置广播
				_phone.newSeat(msg);
				break;
			case "9801"://返回修改坐席设置
				_phone.rsSeatMd(msg);
				break;
			case "9805"://收到修改坐席设置广播
				_phone.modifySeat(msg);
				break;
			case "9802"://返回删除坐席设置
				_phone.rsDelSeat(msg);
				break;
			case "9806"://收到删除坐席设置广播
				_phone.removeSeat(msg);
				break;
			case "9816"://返回通话记录列表
				_phone.rsCallList(msg);
				break;
			case "9950"://和服务器连接断开
				/* 转移到103处理
				if (msg.commands[0] == "9501") {
					_login.reloginFlag = true;
					_login.relogin();
				}
				*/
				break;
			case "103":
				_login.connectStatus(msg.commands[0]);
				if (msg.commands[0] == "0") {//正常状态					
				} else if (msg.commands[0] == "1") {//与服务器连接断开
				} else if (msg.commands[0] == "2") {//重新连接					
				} else if (msg.commands[0] == "3") {//重新登陆
					_login.reloginFlag = true;
					_login.relogin();
				}
				break;
			case "9000":
				if (!_login.reloginFlag) break;
				if (msg.commands[0] != "0" && msg.commands[0] != "102") _login.relogin();
				break;
			case "9001":
				if (!_login.reloginFlag) break;
				if (msg.commands[0] != "0" && msg.commands[0] != "102" && msg.commands[0] != "0011") _login.relogin();
				else if (msg.commands[0] == "0") {
					_common.send("<M><C>9002</C></M>");
					_login.reloginFlag = false;
				}
				break;
			case "104":
				eval(msg.commands[1]);
				break;
		}
}

/**
 * 消息控制中心，解析服务器发送下来的消息，并将消息交给相应的程序进行处理
 * @param String str 服务器发送来的消息字符串
 */
function Common_dealwithMessage(str) {
	_common.alertDebug(str.replace(/</g, "&lt;"));
	str = str.replace(/\n/g, "<br />");
	var parseStringMessages = new HJWebClMsgString(str);
	for (var i = 0; i < parseStringMessages.messages.length; i++) {
		var msg = parseStringMessages.messages[i];
		this.businessControl(msg);
	}
}

/**
 * 显示/隐藏訪客列表
 */
function Common_showLeftVlist() {
	var left_vlist = document.getElementById("left_vlist");
	var left_oplist = document.getElementById("left_oplist");
	var left_toolbars = document.getElementById("left_toolbars");
	
	if (left_vlist.style.display == "none") {
		left_vlist.style.display = "";
		left_oplist.style.display = "none";
		left_toolbars.style.display = "none";
	}
	_monitor.gotoMonitorInterface();
}

/**
 * 显示/隐藏客服列表
 */
function Common_showLeftOplist() {
	var left_vlist = document.getElementById("left_vlist");
	var left_oplist = document.getElementById("left_oplist");
	var left_toolbars = document.getElementById("left_toolbars");
	
	if (left_oplist.style.display == "none") {
		left_vlist.style.display = "none";
		left_oplist.style.display = "";
		left_toolbars.style.display = "none";
	}
}

/**
 * 显示/隐藏左边div
 */
function Common_showLeft() {
	var contentLeft = document.getElementById("contentLeft");
	var contentSplitter = document.getElementById("contentSplitter");
	var mmg_titleDiv = document.getElementById("mmg_titleDiv");
	if (contentLeft.style.display == "none") {
		contentLeft.style.display = "";
		contentSplitter.innerHTML = "<img src=\"" + _setting.imagesPath + "left.gif\" border=\"0\" onClick=\"_common.showLeft();\" />";
		if (mmg_titleDiv) {
			if (_common.ieVersionFlag == 6) {
				mmg_titleDiv.style.left = "121px";
			} else {
				mmg_titleDiv.style.left = "120px";
			}
		}
	} else {
		contentLeft.style.display = "none";
		contentSplitter.innerHTML = "<img src=\"" + _setting.imagesPath + "system_right.gif\" border=\"0\" onClick=\"_common.showLeft();\" />";
		if (mmg_titleDiv) {
			if (_common.ieVersionFlag == 6) {
				mmg_titleDiv.style.left = "7px";
			} else {
				mmg_titleDiv.style.left = "7px";
			}
		}
	}
	this.resizeUI();
}

/**
 * 打开恒聚支持
 */
function openHJSupport() {
	var url = "http://cs.5107.cn/v4/chat/chat.php?company=48";
	var VCWindow = window.open(url, "_blank", "toolbar=no,location=no,directories=no,scrollbars=no,menubar=no,width=690,height=563,resizable=no,left=0,top=0, status=no");
	if (VCWindow != null){
		VCWindow.focus();
	}
}

/**
 * 显示整体框架
 */
function Common_showFrame() {
	var data = {
		images_path	: _setting.imagesPath,
		systemInfo	: _langPackage.common.systemInfo,
		quick_url	: _setting.quickUrl + _personSession.company
		};
	var str = TrimPath.processDOMTemplate("mainFrame_tpl", data);
	document.getElementById("mainDiv").innerHTML = str;
	var data = {
		images_path	: _setting.imagesPath,
		wait_info	: _langPackage.common.loading
		};
	var str = TrimPath.processDOMTemplate("main_wait_tpl", data);
	document.getElementById("loadDataDiv").innerHTML = str;
}

/**
 * 显示左边功能列表界面
 */
function Common_showLeftTools() {
	if (_personSession.type == "A") {
		var funs = new Array();
		if (_versionFlag.get(37) == 1) funs.push({fun : "chatRecords", funName : "ChatRecords"}); 
		if (_versionFlag.get(17) == 1) funs.push({fun : "leaveWords", funName : "LeaveWords"});
		if (_versionFlag.get(124) == 1) funs.push({fun : "report", funName : "Report"});
		if (_versionFlag.get(52) == 1) funs.push({fun : "reserve", funName : "Reserve"});
		if (_versionFlag.get(126) == 1) funs.push({fun : "personal", funName : "Personal"});
		if (_versionFlag.get(80) == 1) funs.push({fun : "system", funName : "System"});
		if (_setting.versionFlags.phone == 1) funs.push({fun : "phone", funName : "Phone"});
		if (_versionFlag.get(125) == 1) funs.push({fun : "code", funName : "Code"});
	} else {
		var funs = new Array();
		if (_versionFlag.get(37) == 1) funs.push({fun : "chatRecords", funName : "ChatRecords"}); 
		if (_versionFlag.get(17) == 1) funs.push({fun : "leaveWords", funName : "LeaveWords"});
		if (_versionFlag.get(52) == 1) funs.push({fun : "reserve", funName : "Reserve"});
		if (_versionFlag.get(126) == 1) funs.push({fun : "personal", funName : "Personal"});
	}
	var data = {
		images_path	: _setting.imagesPath,
		funs		: funs
		};
	var str = TrimPath.processDOMTemplate("leftTools_tpl", data);
	document.getElementById("left_toolbars").innerHTML = str;
}



/**
 * 装载后台数据
 */
function Common_loadDatas() {
	try {
		var loadDataDiv = document.getElementById("loadDataDiv");
		var monitor_MainDiv = document.getElementById("innerMainDiv");
		loadDataDiv.style.display = "";
		monitor_MainDiv.style.display = "none";
	} catch (exc) {
		_common.alertDebug("系统产生一个异常:Common_loadDatas:$message=" + exc.message + ";$name=" + exc.name);
	}
}

/**
 * 装载后台数据完成
 */
function Common_loadDatasOk() {
	try {
		var loadDataDiv = document.getElementById("loadDataDiv");
		var monitor_MainDiv = document.getElementById("innerMainDiv");
		loadDataDiv.style.display = "none";
		monitor_MainDiv.style.display = "";
	} catch (exc) {
		_common.alertDebug("系统产生一个异常:Common_loadDatasOk:$message=" + exc.message + ";$name=" + exc.name);
	}
	/*
	try {
		window.resizeTo(800, 600);
	} catch(exc) {
		_common.alertDebug("系统产生一个异常:Common_loadDatasOk:$message=" + exc.message + ";$name=" + exc.name);
	}
	*/
	this.showLeft();
	this.showLeft();
}

/**
 * 从对象数组中获取一个对象，根据对象某个属性的值
 * @param Array arr 带查询的数组
 * @param String propertyName 数组元素的属性名
 * @param String propertyValue 数组元素相应属性值
 * @returns 相应数组元素对象，如果没有查找到返回null
 */
function Common_getArrayObjByPropertyValue(arr, propertyName, propertyValue) {
	for (var i = 0; i < arr.length; i++) {
		var obj = arr[i];
		if (eval("obj." + propertyName + " == propertyValue")) return obj;
	}
	return null;
}

/**
 * 从控件列表中获取一条数据
 * @param int iType 数据的类型 例如9002、9003等
 * @param int propertyIndex 查询条件列的列序号
 * @param String propertyValue 查询条件的值
 * @return 数据记录数组
 */
function Common_getListObjByPropertyValue(iType, propertyIndex, propertyValue) {
	var arr = new Array();
	eval("var list = _common.lists.l" + iType + ";");
	for (var i = 0; i < list.length; i ++) {
		if (list[i][propertyIndex] == propertyValue) {
			return list[i];
		}
	}
	
	return arr;
}

/**
 * 显示/隐藏功能列表
 */
function Common_showLeftToolbars () {
	var left_vlist = document.getElementById("left_vlist");
	var left_oplist = document.getElementById("left_oplist");
	var left_toolbars = document.getElementById("left_toolbars");
	
	if (left_toolbars.style.display == "none") {
		left_vlist.style.display = "none";
		left_oplist.style.display = "none";
		left_toolbars.style.display = "";
	}
}

/**
 * 当改变窗口大小的时候，改变各个div的大小
 */
function Common_resizeUI() {
	try {
		var logoAdv = document.getElementById("logoAdv");
		var contentLeft = document.getElementById("contentLeft");
		var contentSplitter = document.getElementById("contentSplitter");
		var contentRight = document.getElementById("contentRight");
		var left_vlistTitle = document.getElementById("left_vlistTitle");
		var left_vlist = document.getElementById("left_vlist");
		var left_oplistTitle = document.getElementById("left_oplistTitle");
		var left_oplist = document.getElementById("left_oplist");
		var left_toolbarsTitle = document.getElementById("left_toolbarsTitle");
		var left_toolbars = document.getElementById("left_toolbars");
		
		/*width*/
		var winWidth = document.documentElement.clientWidth;
		if (winWidth < _setting.minMainWidth) winWidth = _setting.minMainWidth;
		winWidth -= 2;
		logoAdv.style.width = winWidth;
		if (contentLeft.style.display == "none") {
			contentRight.style.width = winWidth - contentSplitter.clientWidth;
		} else {
			contentRight.style.width = winWidth - contentSplitter.clientWidth - left_vlistTitle.clientWidth - 2;
		}
		
		/*height*/
		var winHeight = document.documentElement.clientHeight;
		if (winHeight < _setting.minMainHeight) winHeight = _setting.minMainHeight;
		winHeight -= 2;
		contentSplitter.style.height = winHeight - logoAdv.clientHeight - 200;
		contentRight.style.height = winHeight - logoAdv.clientHeight;
		left_vlist.style.height = winHeight - logoAdv.clientHeight - left_vlistTitle.clientHeight - left_oplistTitle.clientHeight - left_toolbarsTitle.clientHeight - 7;
		left_oplist.style.height = winHeight - logoAdv.clientHeight - left_vlistTitle.clientHeight - left_oplistTitle.clientHeight - left_toolbarsTitle.clientHeight - 7;
		left_toolbars.style.height = winHeight - logoAdv.clientHeight - left_vlistTitle.clientHeight - left_oplistTitle.clientHeight - left_toolbarsTitle.clientHeight - 7;
		this.resizeInnerUI();
	} catch (e) {
		_common.alertDebug("系统产生一个异常:Common_resizeUI:$message=" + e.message + ";$name=" + e.name);
	}
}

/**
 * 设置当前显示的界面
 * @param String innerType 内页类型
 */
function Common_setInnerType(innerType) {
	if (document.getElementById(this.innerType + "BtnDiv")) {
		var name = this.innerType.substring(0, 1).toUpperCase() + this.innerType.substring(1);
		var str = "<a href=\"#\" onclick=\"_" + this.innerType + ".goto" + name + "Interface();\"><img src=\"" + _setting.imagesPath + "" + this.innerType + "Btn_no.gif\" width=\"104\" height=\"26\" border=\"0\" id=\"" + this.innerType + "BtnImg\" onMouseOver=\"MM_swapImage('" + this.innerType + "BtnImg','','" + _setting.imagesPath + "" + this.innerType + "Btn_out.gif',1);\" onMouseOut=\"MM_swapImgRestore();\" /></a>";
		document.getElementById(this.innerType + "BtnDiv").innerHTML = str;
	}
	if (document.getElementById(innerType + "BtnDiv")) {
		var str = "<img src=\"" + _setting.imagesPath + "" + innerType + "Btn.gif\" width=\"104\" height=\"26\" border=\"0\" id=\"" + innerType + "BtnImg\" />";
		document.getElementById(innerType + "BtnDiv").innerHTML = str;
	}
	this.innerType = innerType;
	eval("_" + innerType + ".resizeUI();");
}

/**
 * 改变内部div的大小
 */
function Common_resizeInnerUI() {
	if (this.innerType != "") eval("_" + this.innerType + ".resizeUI();");
}


/**
 * 清楚当前的弹出信息/操作div中的内容,并隐藏
 */
function Common_clearPopDiv() {
	try {
		var popDiv = document.getElementById("popDiv__list");
		if (!popDiv) return;
		popDiv.innerHTML = "";
		popDiv.style.display = "none";
	} catch (e) {
		_common.alertDebug("系统产生一个异常:Common_clearPopDiv:$message=" + e.message + ";$name=" + e.name);
	}
	try {
		var popDiv = document.getElementById("popDiv__list_1");
		if (!popDiv) return;
		popDiv.innerHTML = "";
		popDiv.style.display = "none";
	} catch (e) {
		_common.alertDebug("系统产生一个异常:Common_clearPopDiv:$message=" + e.message + ";$name=" + e.name);
	}
}

/**
 * 声音提示
 * @param int type 0:访客进入;1:聊天请求;2:访客输入
 */
function Common_soundPrompt(type) {
	var soundFile = "";
	switch (type) {
		case 0:
			if (this.aSountPrompt.length > 0 && this.aSountPrompt[0] == 1) soundFile = "newinv.wav";
			break;
		case 1:
			if (this.aSountPrompt.length > 1 && this.aSountPrompt[1] == 1) soundFile = "newinv.wav";
			break;
		case 2:
			if (this.aSountPrompt.length > 2 && this.aSountPrompt[2] == 1) soundFile = "newlog.mp3";
			break;
		default:
			//soundFile = "newlog.mp3";
			break;
	}
	if (soundFile != "") {
		soundPrompt.URL = "sounds/" + soundFile;
		soundPrompt.controls.play();
		//soundPrompt.src = "sounds/" + soundFile;
		try {
			if (!document.hasFocus()) {
				//window.focus();
				if (_chat.currentGroup != null) {
					var groupid = _chat.currentGroup.id;
					document.getElementById("chatwin_putin_box_" + groupid).focus();
				}
			}
		} catch(fcEx) {
			_common.alertDebug("系统产生一个异常:Common_soundPrompt:$message=" + fcEx.message + ";$name=" + fcEx.name);
		}
	}
}

/**
 * 界面右下角弹出提示框
 * @param int type 0:访客登录网站，1:访客请求交谈，2:访客拒绝邀请，3:客服登录，4:操作返回信息，5:新的留言
 * @param String msg 弹出框内的内容
 */
function Common_popPrompt(type, msg) {
	//webcl.PopWin(msg, act, 1000, 3000, 1000);
	/*
	switch (type) {
		case 0:
			if (this.aPopPrompt.length == 0 || this.aPopPrompt[0] == 0) break;
			var popIndex = _popUpTimer.getIndex();
			if (popIndex != -1) {
				var popup = new Popup(popIndex, msg);
				popup.init();
				_popUpTimer.arr[popIndex] = popup;
			}
			break;
		case 1:
			if (this.aPopPrompt.length <= 1 || this.aPopPrompt[1] == 0) break;
			var popIndex = _popUpTimer.getIndex();
			if (popIndex != -1) {
				var popup = new Popup(popIndex, msg);
				popup.init();
				_popUpTimer.arr[popIndex] = popup;
			}
			break;
		case 2:
			if (this.aPopPrompt.length <= 2 || this.aPopPrompt[2] == 0) break;
			var popIndex = _popUpTimer.getIndex();
			if (popIndex != -1) {
				var popup = new Popup(popIndex, msg);
				popup.init();
				_popUpTimer.arr[popIndex] = popup;
			}
			break;
		case 3:
			if (this.aPopPrompt.length <= 3 || this.aPopPrompt[3] == 0) break;
		case 4:
			if (this.aPopPrompt.length <= 4 || this.aPopPrompt[4] == 0) break;
			var popIndex = _popUpTimer.getIndex();
			if (popIndex != -1) {
				var popup = new Popup(popIndex, msg);
				popup.init();
				_popUpTimer.arr[popIndex] = popup;
			}
			break;
		case 5:		
			if (this.aPopPrompt.length <= 5 || this.aPopPrompt[5] == 0) break;
			var popIndex = _popUpTimer.getIndex();
			if (popIndex != -1) {
				var popup = new Popup(popIndex, msg);
				popup.init();
				_popUpTimer.arr[popIndex] = popup;
			}
			break;
		default:
			break;
	}
	*/
}

/**
 * 插件弹出提示框
 * @param int type 0:访客登录网站，1:访客请求交谈，2:访客拒绝邀请，3:客服登录，4:操作返回信息，5:新的留言
 * @param String msg 弹出框内的内容
 * @param String act 执行的操作
 */
function Common_ocxPrompt(type, msg, act) {
	switch (type) {
		case 0:
			if (this.aPopPrompt.length < 1 || this.aPopPrompt[0] == 0) break;
			webcl.PopWin(msg, act, 1000, 3000, 1000);
			break;
		case 1:
			if (this.aPopPrompt.length < 2 || this.aPopPrompt[1] == 0) break;
			webcl.PopWin(msg, act, 1000, 3000, 1000);
			break;
		case 2:
			if (this.aPopPrompt.length < 3 || this.aPopPrompt[2] == 0) break;
			webcl.PopWin(msg, act, 1000, 3000, 1000);
			break;
		case 3:
			if (this.aPopPrompt.length < 4 || this.aPopPrompt[3] == 0) break;
			webcl.PopWin(msg, act, 1000, 3000, 1000);
			break;
		case 4:
			if (this.aPopPrompt.length < 5 || this.aPopPrompt[4] == 0) break;
			webcl.PopWin(msg, act, 1000, 3000, 1000);
			break;
		case 5:		
			if (this.aPopPrompt.length < 6 || this.aPopPrompt[5] == 0) break;
			webcl.PopWin(msg, act, 1000, 3000, 1000);
			break;
		default:
			break;
	}
}

/**
 * 关闭右下角弹出框
 * @param int index 弹出框的索引值
 */
function Common_removePopup(index) {
	var popObj = _popUpTimer.arr[index];
	popObj.distory();
	_popUpTimer.arr[index] = null;
}

/**
 * 清除select的options
 * @param String sid HTML select对象的ID
 */
function Common_clearSelect(sid) {
	var objs = document.getElementById(sid);
    while (objs.length > 0) {
        objs.remove(0);
    }
}

/**
 * 往HTML select中添加一个Option
 * @param Object objs HTML select对象
 * @param String t Option的显示值
 * @param String v Option的值
 * @param String sv select的选中值
 */
function Common_addOption(objs, t, v, sv) {
	var objOption = document.createElement("OPTION");
	objOption.text = t;
	objOption.value = v;
	if (v != "" && v == sv) objOption.selected = "selected";
	objs.options.add(objOption);
}

/**
 * 将数组中的数据添加到HTML Select中，每条数据对应一个Option
 * @param Array arr 数据数组
 * @param String sid HTML select对象的ID
 * @param String svalue select的选中值
 */
function Common_buildSelect(arr, sid, svalue) {
	var objs = document.getElementById(sid);
	for (var i = 0; i < arr.length; i++) {
		var obj = arr[i];
		this.addOption(objs, obj.name, obj.id, svalue);
	}
	if (svalue != null && svalue != "") objs.value = svalue;
}

/**
 * 检查Email的合法性，相应正则式/^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$/g;
 * @param String email
 * @returns boolean 合法返回true，非法返回false
 */
function Common_checkEmail(email) {
	if (email == null || email == "") return false;
	var reEmail = /^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$/g;
	return reEmail.test(email);
}

/**
 * 生成日历
 * @param cal 日历对象
 */
 /*
function catcalc(cal) {
	var date = cal.date;
	var time = date.getTime()
	// use the _other_ field
	var field = document.getElementById("f_calcdate");
	if (field == cal.params.inputField) {
		field = document.getElementById("f_date_a");
		time -= Date.WEEK; // substract one week
	} else {
		time += Date.WEEK; // add one week
	}
	var date2 = new Date(time);
	field.value = date2.print("%Y-%m-%d");
}
*/

/**
 * convert \n to &lt;br />, + to &amp;nbsp;
 * @param String str 待转换的字符串
 * @param String 转换后的字符串
 */
function Common_nl2br(str) {
	str = str.replace(/\n/g, "<br />");
	str = str.replace(/\+/g, "&nbsp;");
	return str;
}

/**
 * 计算两个字符串时间之间经过的时间
 * @param String start 开始时间字符串
 * @param String end 结束时间字符串
 * @return 经过的时间字符串，形如"00时00分00"
 * @see #countSecondsByTime
 */
function Common_countSeconds(start, end) {
	var iStart = Date.parse(start.substring(5, 7) + '-' + start.substring(8, 10) + '-' + start.substring(0, 4) + start.substring(10, 19));
	var iEnd = Date.parse(end.substring(5, 7) + '-' + end.substring(8, 10) + '-' + end.substring(0, 4) + end.substring(10, 19));
	
	return this.countSecondsByTime(iStart, iEnd);
}

/**
 * 计算两个Date时间之间经过的时间
 * @param String start 开始时间Date
 * @param String end 结束时间Date
 * @return 经过的时间字符串，形如"00时00分00
 */
function Common_countSecondsByTime(iStart, iEnd) {
	if (iStart >= iEnd) return "00" + _langPackage.common.hour + "00" + _langPackage.common.minute + "00";
	var hours = 0;
	var mins = 0;
	var secs = 0;
	var tmp = (iEnd - iStart) / 1000;
	
	secs = Math.round(tmp % 60);
	tmp = Math.floor(tmp / 60);
	mins = tmp % 60;
	hours = Math.floor(tmp / 60);
	var sH = hours;
	if (hours < 10) sH = "0" + hours;
	var sM = mins;
	if (mins < 10) sM = "0" + mins;
	var sS = secs;
	if (secs < 10) sS = "0" + secs;
	
	return sH + _langPackage.common.hour + sM + _langPackage.common.minute + sS;
}

/**
 * 获取提示设置
 */
function Common_loadPromptSetting() {
	var popPrompt = Cookie_get("HJWEBCL_POPPROMPT");
	var soundPrompt = Cookie_get("HJWEBCL_SOUNDPROMPT");
	if (popPrompt != null) this.popPromptSetting = parseInt(popPrompt);
	if (soundPrompt != null) this.soundPromptSetting = parseInt(soundPrompt);
	this.aPopPrompt = new Array();
	this.aSountPrompt = new Array();
	var tmp = this.popPromptSetting;
	while (tmp > 0) {
		if (tmp % 2 == 0) {
			this.aPopPrompt.push(0);
		} else {
			this.aPopPrompt.push(1);
		}
		if (tmp > 1) {
			tmp = Math.floor(tmp / 2);
		} else {
			tmp = 0;
		}
	}
	var tmp = this.soundPromptSetting;
	while (tmp > 0) {
		if (tmp % 2 == 0) {
			this.aSountPrompt.push(0);
		} else {
			this.aSountPrompt.push(1);
		}
		if (tmp > 1) {
			tmp = Math.floor(tmp / 2);
		} else {
			tmp = 0;
		}
	}
}

/**
 * 断线重新登陆以后重新获取客服列表
 */
function Common_reloadOpertorList() {
	if (_login.alertFlag) return false;
	if (typeof webcl == "undefined" || webcl == null) return;

	var iType = 9002;
	if (webcl.GetTableSize(iType, -1, -1) == 0) {
		setTimeout("_common.reloadOpertorList()", 500);
	} else {		
		_operators.operators = new Array();
		for (var i = 0; i < webcl.GetTableSize(iType, -1, -1); i ++) {
			for (var j = 0; j < webcl.GetTableSize(iType, i, -1); j ++) {
				var opid = webcl.GetTableField(iType, i, j, 0);
				var company = webcl.GetTableField(iType, i, j, 1);
				var account = webcl.GetTableField(iType, i, j, 3);
				var nick = webcl.GetTableField(iType, i, j, 4);
				var email = webcl.GetTableField(iType, i, j, 5);
				var status = webcl.GetTableField(iType, i, j, 6);
				var type = webcl.GetTableField(iType, i, j, 7);
				var hello = webcl.GetTableField(iType, i, j, 13);
				var bye = webcl.GetTableField(iType, i, j, 14);
				var phone = webcl.GetTableField(iType, i, j, 21);
				var telephone = webcl.GetTableField(iType, i, j, 22);
				var position = webcl.GetTableField(iType, i, j, 23);
				var opStatus = _common.getArrayObject(_common.arrOperatorStatus, "id", status);
				_operators.insert(opid, company, webcl.GetTableField(iType, i, j, 2), account, nick, email, opStatus.value, type, webcl.GetTableField(iType, i, j, 8), webcl.GetTableField(iType, i, j, 9), webcl.GetTableField(iType, i, j, 10), webcl.GetTableField(iType, i, j, 11), webcl.GetTableField(iType, i, j, 12), hello, bye, webcl.GetTableField(iType, i, j, 15), webcl.GetTableField(iType, i, j, 16), webcl.GetTableField(iType, i, j, 17), webcl.GetTableField(iType, i, j, 18), webcl.GetTableField(iType, i, j, 19), webcl.GetTableField(iType, i, j, 20), phone, telephone, position, webcl.GetTableField(iType, i, j, 24), webcl.GetTableField(iType, i, j, 25), webcl.GetTableField(iType, i, j, 26));
			}
		}
		_operators.sort();
		_operators.show();
		_login.reloginOk();
	}
}

/**
 * alert debug info
 * @param String str debug info
 */
function Common_alertDebug(str) {
	if (_setting.debug) {
		var div = document.getElementById("debugDiv");
		if (!div) {
			div = document.createElement("div");
			div.id = "debugDiv";
			document.body.insertBefore(div, null);
			div.style.position = "absolute";
			div.style.top = "1px";
			div.style.left = "1px";
			div.style.width = "800px";
			div.style.height = "80px";
			div.style.overflowX = "hidden";
			div.style.overflowY = "auto";
			div.style.backgroundColor = "#FFFFFF";
			div.style.textAlign = "left";
		}
		
		var div1 = document.createElement("div");
		div1.innerHTML = str;
		div.insertBefore(div1, null);
		div.scrollTop = 99999;
	}
}

/**
 * 设置自动隐身Timer
 */
function Common_setAutoHiddenTimer() {
	if (this.autoHiddenTimer) {
		clearTimeout(this.autoHiddenTimer);
	}
	this.autoHiddenTimer = setTimeout("_common.autoHidden()", _setting.autoHiddenTime);
}

/**
 * 自动隐身
 */
function Common_autoHidden() {
	/*
	var div = document.getElementById("myStatusDiv");
	var si = "";
	var statusSelect = "<select id='myStatusSelect' onChange='_login.changeMyStatus();'>";
	for (var i = 0; i < _common.arrOperatorStatus.length; i++) {
		var stObj = _common.arrOperatorStatus[i];
		if (stObj.value == "A") continue;
		var sel = "";
		//if (stObj.id == status) sel = "selected";
		if (stObj.value == "D") {
			sel = "selected";
			si = stObj.id;
		}
		statusSelect += "<option value='" + stObj.id + "#" + stObj.value + "' " + sel + ">" + stObj.label + "</option>";
	}
	statusSelect += "</select>";
	try {
		div.innerHTML = statusSelect;
		_common.send("<M><C>9008;" + si + ";D</C></M>");
	} catch(e) {
		_common.alertDebug(e);
	}
	*/
}

var _common = new Common();
_common.loadPromptSetting();
//-->