<!--
/**
 * viewCols.js
 * @fileoverview 显示列管理
 * @author Lynk Li
 * @todo 使用类实现此功能
 */

/**
 * @class ViewCol
 * 显示列对象类
 * @constructor
 * @author Lynk Li
 * @param int index 显示列在监控列表中的列序号
 * @param String name 显示列名称，英文
 * @param String value 显示列名称，中文
 * @param int display 是否显示0-不显示；1-显示
 */
function ViewCol(index, name, value, display, width) {
	/**
	 * 显示列在监控列表中的列序号
	 */
	this.index = index;
	/**
	 * 显示列名称，英文
	 */
	this.name = name;
	/**
	 * 显示列名称，中文
	 */
	this.value = value;
	/**
	 * 显示宽度
	 */
	this.width = width;
	/**
	 * 是否显示0-不显示；1-显示
	 */
	this.display = display;
}

/**
 * 监控列表上方的设置显示列按钮被点击后，设置显示列的界面
 * @param event e 鼠标点击事件
 */
function showViewColsTable(e) {
	_common.clearPopDiv();
	var popDiv = document.getElementById("popDiv__list");
	
	var cols = new Array();
	var cookieCols = Cookie_get("HJWEBCL_VIEWCOLS");
	if (cookieCols == null) cookieCols = _setting.defaultShowCols;
	else if (cookieCols.length != _setting.defaultShowCols.length) {
		cookieCols = _setting.defaultShowCols;
	}
	var arrCols = cookieCols.split("$");
	for (var i = 0; i < arrCols.length; i++) {
		var arrCol = arrCols[i].split("#");
		if (arrCol.length != 5) continue;
		if (_common.versionArr[0] == "3" && !_setting.baseVersionCols.has(arrCol[1])) continue;
		var schecked = "";
		if (arrCol[3] == "1") schecked = "checked";
		var strCol = arrCol[0] + "#" + arrCol[1] + "#" + arrCol[2] + "#";
		var obj0 = {
			arrCol 	 : arrCol,
			schecked : schecked,
			strCol	 : strCol
			};
		var obj1 = null;
		i++;
		if (i < arrCols.length) {
			arrCol = arrCols[i].split("#");
			if (arrCol.length == 5) {
				schecked = "";
				if (arrCol[3] == "1") schecked = "checked";
				strCol = arrCol[0] + "#" + arrCol[1] + "#" + arrCol[2] + "#";
				obj1 = {
					arrCol 	 : arrCol,
					schecked : schecked,
					strCol	 : strCol
					};
			}
		}
		cols.push(new Array(obj0, obj1));
	}
	
	var data = {
		images_path : _setting.imagesPath,
		cols : cols
		};
	var strCols = TrimPath.processDOMTemplate("viewCols_tpl", data);
	popDiv.innerHTML = strCols;
	popDiv.className = "";
	popDiv.style.position = "absolute";
	popDiv.style.top = e.y;
	var left = e.x;
	if (left + 400 > document.documentElement.clientWidth && left - 400 > 0) {
		left -= 400;
	}
	popDiv.style.left = left;
	popDiv.style.display = "";
}

/**
 * 将显示列信息保存到Cookie中
 */
function setViewColsDisplayCookie(type) {
	//var viewCols__checks = document.getElementsByName("viewCols__checks[]");
	var str = "$";
	var cname = "";
	if (type == 0) cname ="viewCols__p_check_";
	else cname ="viewCols__check_";
	for (var i = 0; i < _viewCols.length; i++) {
		var display = 0;		
		var checkObj = document.getElementById(cname + _viewCols[i].name);
		if (checkObj) {
			if (checkObj.checked) display = 1;
		} else {
			if (_viewCols[i].display) display = 1;
		}
		str += _viewCols[i].index + "#" + _viewCols[i].name + "#" + _viewCols[i].value + "#" + display + "#" + _viewCols[i].width + "$";
	}
	/*
	for (var i = 0; i < viewCols__checks.length; i++) {
		var checkid = viewCols__checks[i].id;
		var name = checkid.substring(16);
		var strCol = document.getElementById("viewCols__str_" + name).value;
		str += strCol + (viewCols__checks[i].checked ? 1 : 0) + "$";
	}
	*/
	Cookie_set("HJWEBCL_VIEWCOLS", str, 365*24*60*60);
	setViewColsDisplay();
	flushMonitorTable();
	if (type == 0 && document.getElementById("personal_MonitorDiv")) {
		_personal.showMonitor();
	}
	
	_common.resizeUI();
}

/**
 * 将取显示列设置信息保存到Cookie中，设置显示列，并刷新访客列表
 */
function setViewColsDisplayDefault() {
	Cookie_set("HJWEBCL_VIEWCOLS", _setting.defaultShowCols, 365*24*60*60);
	setViewColsDisplay();
	flushMonitorTable();
	_common.resizeUI();
}

/**
 * 刷新访客列表
 */
function flushMonitorTable() {
	_monitor.times = [];
	var monitor_monitor = document.getElementById("monitor_monitor");
	monitor_monitor.innerHTML = "";
	var filter = _mmgrid.filter;
	window._mmgrid = new Grid("monitor_monitor", "mmg_titleDiv", "mmg_titleTb", "mmg_dataDiv", "mmg_dataTb", "mmg_titleInner", "mmg_scrollerDiv", "popDiv__list", "_mmgrid", "monitor_monitor_grid_tpl");
	var title = [];
	for (var i = 0; i < _viewCols.length; i++) {
		if (!_viewCols[i].display) continue;
		var obj = {
			id : _viewCols[i].name,
			name  : _viewCols[i].value,
			width : _viewCols[i].width,
			align : "center",
			display : (_viewCols[i].display ? "" : "none")
		};
		title.push(obj);
	}
	/*
	var filter = {
		status : [
			{name:_langPackage.monitor.visitorStatus[0], filter:0},
			{name:_langPackage.monitor.visitorStatus[1], filter:0},
			{name:_langPackage.monitor.visitorStatus[2], filter:0},
			{name:_langPackage.monitor.visitorStatus[3], filter:0},
			{name:_langPackage.monitor.visitorStatus[4], filter:0}
		],
		snid : [
			{name:_langPackage.monitor.filter.snid[0], filter:0},
			{name:_langPackage.monitor.filter.snid[1], filter:0}
		]
	};
	*/
	_mmgrid.title = title;
	_mmgrid.filter = filter;
	_mmgrid.show();
	
	showCacheVisitors();
	_monitor.intervalColor();
	//ts_makeSortable(monitor_monitor_table);
}

/**
 * 显示列表中的访客
 */
function showCacheVisitors() {
	for (var fieldIndex = 0; fieldIndex < _common.lists.l9070.length; fieldIndex++) {
		var snid = _common.lists.l9070[fieldIndex][0];
		var pageid = _common.lists.l9070[fieldIndex][1];
		var visitorStatus = _common.lists.l9070[fieldIndex][2];
		var requestTarget = _common.lists.l9070[fieldIndex][3];
		var servicingOpertor = _common.lists.l9070[fieldIndex][4];
		var visitorIp = _common.lists.l9070[fieldIndex][5];
		var livingArea = _common.lists.l9070[fieldIndex][6];
		var page = _urlCoder.decode(_common.lists.l9070[fieldIndex][7], "UTF-8");
		var explorer = _common.lists.l9070[fieldIndex][8];
		var referrer = _urlCoder.decode(_common.lists.l9070[fieldIndex][9], "UTF-8");
		var searchEngineId = _common.lists.l9070[fieldIndex][10];
		var keyword = _common.lists.l9070[fieldIndex][11];
		if (keyword.length > 0) {
			var type = parseInt(keyword.substring(0, 1));
			keyword = keyword.substring(1);
			if (type == 1) {
				try {
					keyword = _urlCoder.decode(keyword, "GB2312");
				} catch (egb) {
					_common.alertDebug(egb);
				}
			} else {
				try {
					keyword = _urlCoder.decode(keyword, "UTF-8");
				} catch (eutf) {
					_common.alertDebug(eutf);
				}
			}
		}
		var playerVersion = _common.lists.l9070[fieldIndex][12];
		var visitTimes = _common.lists.l9070[fieldIndex][13];
		var lastVisitTime = _common.lists.l9070[fieldIndex][14];
		var pageTitle = _common.lists.l9070[fieldIndex][15];
		try {
			pageTitle = _urlCoder.decode(pageTitle, "UTF-8");
		} catch (eutf) {
			try {
				pageTitle = _urlCoder.decode(pageTitle, "GB2312");
			} catch (egb) {
				_common.alertDebug(egb);
			}
		}
		var xPixels = _common.lists.l9070[fieldIndex][16];
		var yPixels = _common.lists.l9070[fieldIndex][17];
		var enterTime = _common.lists.l9070[fieldIndex][18];
		var requestTime = _common.lists.l9070[fieldIndex][19];
		var startTalkTime = _common.lists.l9070[fieldIndex][20];
		var leftTime = _common.lists.l9070[fieldIndex][21];
		var pageIndex = _common.lists.l9070[fieldIndex][22];
		var chatGroupId = _common.lists.l9070[fieldIndex][23];
		
		_monitor.showVisitorPage(snid, pageid, visitorStatus, requestTarget, servicingOpertor, visitorIp, livingArea, page, explorer, referrer, searchEngineId, keyword, playerVersion, visitTimes, lastVisitTime, pageTitle, xPixels, yPixels, enterTime, requestTime, startTalkTime, leftTime, fieldIndex, pageIndex, chatGroupId, false);
	}
}

/**
 * 从Cookie读取访客列信息，如果没有获取到那么使用{@link Setting#defaultShowCols}，然后设置显示列
 */
function setViewColsDisplay() {
	var cookieCols = Cookie_get("HJWEBCL_VIEWCOLS");
	if (cookieCols == null) cookieCols = _setting.defaultShowCols;
	else if (cookieCols.length != _setting.defaultShowCols.length) {
		cookieCols = _setting.defaultShowCols;
	}
	_viewCols = new Array();
	var arrCols = cookieCols.split("$");
	for (var i = 0; i < arrCols.length; i++) {
		var arrCol = arrCols[i].split("#");
		if (arrCol.length != 5) continue;
		var display = false;
		if (arrCol[3] == "1") {
			display = true;
			if (_common.versionArr[0] == "3" && !_setting.baseVersionCols.has(arrCol[1])) display = false;
		}
		var col = new ViewCol(parseInt(arrCol[0]), arrCol[1], arrCol[2], display, arrCol[4]);
		_viewCols.push(col);		
	}
}

var _viewCols = new Array();
//-->