/* (C) DBStudio, ghljj.com */


//+----------------------------------------------------------------------------
// 说明:	页面装载
// 变量:	coa			- 缓存
// 方法:	pageLoad	- 页面装载
//			beforeInit	- 附加接口
//			afterInit	- 附加接口
//-----------------------------------------------------------------------------
var coa;
//window.onload = function() { pageLoad(); }

function pageLoad()
{
	beforeInit();

	coa = new cache();
	var admin = o("admin");
	if (!admin) return;
	if (!coa.ready)
		admin.innerHTML += loginRender();
	else {
		RTEInit("/UI/sys/rte/", "", "");
		admin.innerHTML += tabRender() + tocRender() + clpRender() + setRender() + catRender() +
			pswRender() + locRender() + admRender() +
			userChoose();
		tocInit();
		setInit();
		catInit();
		clpInit();
		locInit();
		if (query('x', location.href) == 'x' && o('adm')) tabClick(o('tab_adm'), 'adm');
		//admin.innerHTML += userChoose();
	}

	afterInit();
}

function beforeInit() {}
function afterInit() {}


//+----------------------------------------------------------------------------
// 类名:	cache
// 说明:	用于管理的缓存表单
// 方法:	getValue		- 取缓存的值
//			getCategory		- 取一个分类
//			getAlbum		- 取一个剪辑
//			getTheme		- 取一个话题
//			fillCategory	- 填充分类下拉框
//			fillAlbum		- 填充剪辑列表框
//			fillTheme		- 填充话题下拉框
// 属性:	ready			- 就绪
//			account			- 账号
//			identity		- 登录身份
//-----------------------------------------------------------------------------
function cache()
{
	this.adm = document.forms["admcache"];
	this.ready = (this.adm) ? true : false;
	if (!this.ready) return;
	this.getValue = cache_getValue;
	this.getCategory = cache_getCategory;
	this.getAlbum = cache_getAlbum;
	this.getTheme = cache_getTheme;
	this.fillCategory = cache_fillCategory;
	this.fillAlbum = cache_fillAlbum;
	this.fillTheme = cache_fillTheme;
	this.account = this.getValue("account");
	this.identity = cookie_get(whoami_cap);
}

function cache_getValue(idx)
{
	if (!this.adm) return null;
	var item = this.adm.elements[idx];
	return (item) ? item.value : null;
}

function cache_getCategory(idx)
{
	return (this.adm) ? this.adm.elements["cat_" + idx] : null;
}

function cache_getAlbum(idx)
{
	return (this.adm) ? this.adm.elements["clp_" + idx] : null;
}

function cache_getTheme(idx)
{
	return (this.adm) ? this.adm.elements["theme_" + idx] : null;
}

function cache_fillCategory(obj)
{
	var i = 1;
	while (true)
	{
		var item = this.getCategory(i);
		if (!item) return;

		var kind = item.getAttribute("kind");
		var opt = document.createElement("OPTION");
		obj.options.add(opt);
		opt.innerHTML = ((kind == 1) ? "* " : "") + item.value;
		opt.setAttribute("idx", i);
		opt.value = item.getAttribute("cid");
		if (kind == 2) opt.className = "lo";
		i++;
	}
}

function cache_fillAlbum(obj)
{
	var i = 1;
	while (true)
	{
		var item = this.getAlbum(i);
		if (!item) return;

		var opt = document.createElement("OPTION");
		obj.options.add(opt);
		opt.innerHTML = item.value;
		opt.setAttribute("idx", i);
		opt.value = item.getAttribute("aid");
		i++;
	}
}

function cache_fillTheme(obj)
{
	var i = 1;
	while (true)
	{
		var item = this.getTheme(i);
		if (!item) return;

		var opt = document.createElement("OPTION");
		obj.options.add(opt);
		opt.innerHTML = item.value;
		opt.setAttribute("idx", i);
		opt.value = item.getAttribute("fid");
		i++;
	}
}



//+----------------------------------------------------------------------------
// 说明:	管理标签
//			tabClick	- 单击标签切换管理表单
//			tabRender	- 构造管理标签
//-----------------------------------------------------------------------------
function tabClick(tab, sheet)
{
	disp("psw", false);
	disp("loc", false);
	disp("cat", false);
	disp("set", false);
	disp("clp", false);
	disp("toc", false);
	disp("adm", false);
	disp(sheet);

	o("tab_psw").className = "";
	o("tab_loc").className = "";
	o("tab_cat").className = "";
	o("tab_set").className = "";
	o("tab_clp").className = "";
	o("tab_toc").className = "";
	if (o("tab_adm")) o("tab_adm").className = "";
	tab.className = "cur";

	if (tab.id == "tab_toc" && !document.all)
		RTEUpdate("tdt");
	else {
		RTEHidePad("rte_palette");
		RTEHidePad("rte_table");
		RTEHidePad("rte_link");
		RTEHidePad("rte_image");
	}

	return false;
}

function tabRender()
{
	var t = '<div id="tab">' +
			'<a href="" id="tab_toc" onclick="return tabClick(this,\'toc\')" class="cur">文章</a>' +
			'<a href="" id="tab_clp" onclick="return tabClick(this,\'clp\')">剪辑</a>' +
			'<a href="" id="tab_set" onclick="return tabClick(this,\'set\')">配置</a>' +
			'<a href="" id="tab_loc" onclick="return tabClick(this,\'loc\')">群组</a>' +
			'<a href="" id="tab_cat" onclick="return tabClick(this,\'cat\')">栏目</a>' +
			'<a href="" id="tab_psw" onclick="return tabClick(this,\'psw\')">密码</a>' +
			((coa.getValue("acp") > 0) ? '<a href="" id="tab_adm" onclick="return tabClick(this,\'adm\')">特殊</a>' : '') +
			'<a href="" id="close" onclick="return doCancel()" title="后退">╳</a>' +
			'<a href="" id="logout" onclick="return logout()">退出</a>' +
			'</div>';
	return t;
}

function doCancel() {
	var dep = (document.all && coa) ? -2 : -1;
	history.go(dep);
	return false;
}


//+----------------------------------------------------------------------------
// 说明:	文章相关
//			tocInit		- 初始化
//			tocLoad		- 装入文章内容
//			tocPost		- 提交文章
//			tocRender	- 构造文章表单
//-----------------------------------------------------------------------------
function tocInit()
{
	var frm = document.forms["toc"];
	if (!frm) return;

	coa.fillCategory(frm.cid);
	//coa.fillTheme(frm.fid);
	tocLoad(coa.getValue("toc_id") != '');
}

function tocLoad(needload)
{
	var frm = document.forms["toc"];
	frm.title.value = "";
	frm.kind[0].checked = true;
	frm.summary.value = "";
	frm.author.value = coa.getValue("nickname");

	//option_fit(frm.fid, "0");
	//frm.fid[0].checked = true;
	if (coa.getValue('cpid') > 0) option_fit(frm.fid, '0');

	option_fit(frm.cid, "0");
	RTELoad('tdt', '');
	//frm.detail.value = "";
	frm.redir.value = geturi(coa.getValue("account"));

	if (!needload) return;

	frm.tid[1].checked = true;
	frm.kind[0].checked = (coa.getValue("toc_kind") == 0);
	frm.kind[1].checked = (coa.getValue("toc_kind") == 1);
	frm.title.value = coa.getValue("toc_title");
	frm.summary.value = coa.getValue("toc_summary");
	frm.author.value = coa.getValue("toc_author");
	option_fit(frm.cid, coa.getValue("toc_cat"));

	//option_fit(frm.fid, coa.getValue("toc_theme"));
	//var tmp = (coa.getValue("toc_theme") == 2) ? 1 : 0;
	//frm.fid[tmp].checked = true;
	if (coa.getValue('cpid') > 0) option_fit(frm.fid, coa.getValue('toc_cpcid'));

	RTELoad('tdt', coa.getValue('toc_detail'));
	//frm.detail.value = coa.getValue("toc_detail").replace(/<br>/ig, "\r\n");
	frm.redir.value = geturi(coa.getValue("account"), frm.tid[1].value);
}

function tocPost(frm)
{
	frm.detail.value = RTEGetContent("tdt");
	if (ltrim(frm.title.value) == "" || ltrim(frm.detail.value) == "") // || ltrim(frm.summary.value) == "")
	{
		alert("请填写文章标题、正文后再提交。 ");
		return false;
	}
	var re = /[\x01-\x08\x0A-\x1F]/ig;
	var htm = frm.detail.value.replace(re, '');
	if (htm.indexOf('MsoNormal') >= 0) htm = cleanHtml(htm);
	frm.detail.value = htm;
	return readyToPost(frm);
}

function tocRender()
{
	var albumsize = Math.floor(coa.getValue("albumsize") / 1000000);
	var albumused = Math.floor(coa.getValue("albumused") / 1000000);
	var content = coa.getValue("toc_id");
	var cpid = coa.getValue("cpid");
	var cls;
	if (cpid > 0) eval('cls = Cp' + cpid);
	var t = '<div id="toc">' +
			'<form name="toc" method="post" onsubmit="return tocPost(this)">' +
			(cls ? '<div class="hi">赛埔学员在提交文章前请选择课程分类~</div>' : '') +
			'<div>' +
			'<span>我想:</span>' + make_radio("tid", 0, "tocLoad()", "0|撰写文章") + ((content > 0) ? make_radio("tid", 0, "tocLoad(true)", content + "|修改文章") : '') +
			'</div>' +
			'<div>' +
			'<span>分类:</span><select name="cid"><option value="0">----- 不指定 -----</option></select>' +
			make_radio("kind", 0, null, "0|原创", "1|收藏") +
			'</div>' +
			(cls ? '<div><span>赛埔' + cpid + '期:</span><select name="fid">' + option_list(cls) + '</select></div>' : '<input name="fid" type="hidden"/>') +
			//'<div style="display:none"><span>话题:</span><select name="fid"><option value="0">----- 不指定 -----</option></select></div>' +
			//'<div style="display:none"><span>推荐:</span>' + make_radio("fid", 1, null, "1|给老师们看", "2|给学生们看") + '</div>' +
			'<div><span>标题:</span><input name="title" type="text" size="80" maxlength="80"/></div>' +
			'<div>' +
			'<span>作者:</span><input name="author" type="text" size="30" maxlength="20"/>　' +
			//'<a href="" onclick="return indentText(\'tdt\')">首行缩进</a> | <a href="" onclick="return removePara(\'tdt\')">取消换行</a>' +
			'</div>' +
			'<div><span>摘要:</span><textarea name="summary" cols="80" rows="5"></textarea></div>' +
			'<div><span>引用:</span><input name="trackping" type="text" size="80"/></div>' +
			//'<div><span>正文:</span><textarea name="detail" id="tdt" cols="80" rows="30"></textarea></div>' +
			RTERender("tdt", 600, 380) +
			'<div>' +
			'* 如果文章是从 Word 粘贴过来的，请选择“工具 / 清理 Word 标记”，去掉无用代码，缩小文章尺寸<br/>' +
			'* 一般情况下，不要在“编辑 HTML 源码”状态下提交，这样会丢失所有版面设置信息<br/><br/>' +
			'</div>' +
			'<input name="detail" type="hidden"/>' +

			// uri 用来配合 trackping，其 $ID$ 将替换为文章 ID，重要！
			'<input name="uri" type="hidden" value="/' + coa.account + '/$ID$.aspx"/>' +
			buttonRender("EditContent") +
			'</form>' +
			'</div>';
	return t;
}


//+----------------------------------------------------------------------------
// 说明:	剪辑相关
//			clpInit		- 初始化
//			clpChange	- 选取剪辑已备插入或删除
//			clpInsert	- 插入剪辑
//			clpRemove	- 删除剪辑
//			clpPost		- 提交表单
//			clpRender	- 构造剪辑表单
//-----------------------------------------------------------------------------
function clpInit()
{
	var album = o("album");
	if (album) coa.fillAlbum(album);
}

function clpChange(obj)
{
	var opt = obj.options[obj.selectedIndex];
	var idx = opt.getAttribute("idx");
	if (!idx) return;

	var item = coa.getAlbum(idx);
	document.forms["clp"].aid.value = item.getAttribute("aid");		// 用于删除
	var uri = item.getAttribute("addr");
	var code;
	if (uri.indexOf(".jpg") > 0 || uri.indexOf(".gif") > 0 || uri.indexOf(".png") > 0)
		code = '<img src="' + uri + '">';
	else
		code = "<a href=" + uri + ">单击此处下载" + item.value + "</a>";
	o("pv").innerHTML = code;
}

function clpInsert()
{
	//o("tdt").value += o("pvc").value;
	tabClick(o("tab_toc"), "toc");
	if (document.all) RTEInsertHtml('tdt', o('pv').innerHTML);
}

function clpRemove()
{
	var frm = document.forms["clp"];
	if (frm.aid.value > 0)
	{
		var tmp = frm.aid.value;
		// submit 表现不同：IE会连隐藏字段一起清除；FF则只清除输入内容
		// 所以此处先保存一下 aid 的值
		frm.reset();
		frm.redir.value = location.href;
		frm.aid.value = tmp;
		frm.submit();
	}
	else
		alert("请先选择要删除的剪辑。 ");
}

function clpPost(frm)
{
	if (ltrim(frm.title.value) == "" || ltrim(frm.up.value) == "")
	{
		alert("请选择要上传的文件并填写标题后再提交。 ");
		return false;
	}
	// detect file ext
	var ext = frm.up.value;
	ext = ext.substr(ext.length - 4).toLowerCase();
	if (ext != ".gif" && ext != ".jpg" && ext != ".rar" && ext != ".zip" && ext != ".png")
	{
			alert("只允许上传 .gif .jpg .rar .zip .png 等类型的文件。");
			return false;
	}
	// go on post
	frm.aid.value = 0;
	frm.redir.value = location.href;
	return readyToPost(frm);
}

function clpRender()
{
	var albumsize = Math.floor(coa.getValue("albumsize") / 1000000);
	var albumused = Math.floor(coa.getValue("albumused") / 1000000);
	var t = '<div id="clp" style="display: none">' +
			'<form name="clp" method="post" enctype="multipart/form-data" onsubmit="return clpPost(this)">' +
			'<div><span>上传剪辑:</span>仅接受 jpg gif zip rar 等类型文件，附件文件大小请限制在 1M 以内</div>' +
			'<div><span>　</span>上传和编辑不能同时进行，例如：您可以先传完插图再编辑文章，或写完文章再传插图</div>' +
			'<div><span>标题:</span><input name="title" maxlength="30" size="55"/></div>' +
			'<div><span>文件:</span><input name="up" type="file" size="55" style="font-size:12px"/></div>' +
			'<div><span>空间:</span>已用 ' + albumused + ' M (共 ' + albumsize + ' M)</div>' +
			'<input name="aid" value="0" type="hidden"/>' +
			buttonRender("EditAlbum") +
			'<div style="padding: 20 0; border: 1px solid #000; border-width: 1 0">' +
			'<span>剪辑预览:</span>' +
			'<select id="album" style="width: 350" size="8" onchange="clpChange(this)"></select>' +
			'<button type="button" onclick="clpInsert()">插入</button>　<button type="button" onclick="clpRemove()">删除</button>' +
			'</div>' +
			'</form>' +
			'<div id="pv" style="margin: 8 0"></div>' +
			'</div>';
	return t;
}


//+----------------------------------------------------------------------------
// 说明:	配置相关
//			setInit		- 初始化
//			setRender	- 构造配置表单
//-----------------------------------------------------------------------------
function setInit()
{
	var frm = document.forms["set"];
	if (!frm) return;

	frm.title.value = coa.getValue("title");
	frm.subtitle.value = coa.getValue("subtitle");
	frm.nickname.value = coa.getValue("nickname");
	frm.myforum.value = coa.getValue("myforum");
	frm.logo.value = coa.getValue("logo");
	frm.banner.value = coa.getValue("banner");
	frm.bulletin.value = coa.getValue("bulletin");
	var skn = coa.getValue("skin");
	var css = coa.getValue("style");
	if (skn == "") skn = "cogitation";
	option_fill(frm.skin, skin_list, skn + ((css != "") ? ("," + css) : ""));

	//option_fill(o('vir_grp'), vir_grp, frm.myforum.value);
	//frm.myforum.style.display = (frm.myforum.value > 0 && frm.myforum.value < 5000) ? 'none' : '';

	if (frm.title.value == "" || frm.nickname.value == "") {
		tabClick(o("tab_set"), "set");
		alert("您尚未设置博客名或站长名，请至“管理/配置”填写相关信息。 ");
	}
}

function grpChange(list) {
	if (option_valid(list)) return;
	var frm = document.forms['set'];
	var grp = list.value;
	frm.myforum.value = grp;
	frm.myforum.style.display = (grp > 0 && grp < 5000) ? 'none' : '';
}

function setRender()
{
	var t = '<div id="set" style="display: none">' +
			'<form name="set" method="post" onsubmit="return readyToPost(this)">' +
			'<div><span>博客标题:</span><input name="title" type="text" size="60" maxlength="100"/></div>' +
			'<div><span>副 标 题:</span><input name="subtitle" type="text" size="60" maxlength="100"/></div>' +
			'<div><span>站长姓名:</span><input name="nickname" type="text" size="30" maxlength="50"/></div>' +
			'<div><span>界面风格:</span><select name="skin" onchange="option_valid(this)"></select></div>' +
			//'<div><span>加入群组:</span>' + '<select id="vir_grp" onchange="grpChange(this)"></select>' +
			//'<input name="myforum" id="vir_forum" type="text" size="10"/></div>' +
			'<input name="myforum" type="hidden"/>' +
			'<div><span>网站标志:</span><textarea name="logo" cols="60" rows="3"></textarea></div>' +
			'<div><span>网站横幅:</span><textarea name="banner" cols="60" rows="5"></textarea></div>' +
			'<div><span>版头公告:</span><textarea name="bulletin" cols="60" rows="8"></textarea></div>' +
			buttonRender("EditSkin") +
			'</form>' +
			'</div>';
	return t;
}


//+----------------------------------------------------------------------------
// 说明:	栏目相关
//			catInit		- 初始化
//			catChange	- 选取栏目
//			catAdjust	- 根据栏目类型调整显示标签
//			catRender	- 构造栏目表单
//-----------------------------------------------------------------------------
function catInit()
{
	var frm = document.forms["cat"];
	if (!frm) return;
	coa.fillCategory(frm.cid);
}

function catChange()
{
	var frm = document.forms["cat"];
	frm.title.value = "";
	frm.order.value = "0";
	frm.summary.value = "";

	var opt = frm.cid.options[frm.cid.selectedIndex];
	var idx = opt.getAttribute("idx");
	if (idx == "") return;
	var item = coa.getCategory(opt.getAttribute("idx"));
	if (!item) return;

	frm.title.value = item.value;
	frm.order.value = item.getAttribute("order");
	frm.kind[0].checked = item.getAttribute("kind") == "0";
	frm.kind[1].checked = item.getAttribute("kind") == "1";
	frm.kind[2].checked = item.getAttribute("kind") == "2";
	frm.summary.value = item.getAttribute("summary");
	catAdjust();
}

function catAdjust()
{
	var frm = document.forms["cat"];
	disp("lnkc", !frm.kind[2].checked);
	o("lnk").innerHTML = (frm.kind[1].checked) ? "链接地址:" : "简介:";
	frm.summary.rows = (frm.kind[1].checked) ? 2 : 8;
}

function catRender()
{
	var t = '<div id="cat" style="display: none">' +
			'<form name="cat" method="post" onsubmit="return readyToPost(this)">' +
			'<div><span>选择:</span><select name="cid" onchange="catChange()"><option value="">----- 新建 -----</option></select></div>' +
			'<div><span>类型:</span>' + make_radio("kind", 0, "catAdjust()", "0|文章分类", "1|友情链接", "2|分组标题") + '</div>' +
			'<div><span>标题:</span><input name="title" type="text" size="30" maxlength="100"/>　要删除此条目，请将标题置空后提交</div>' +
			'<div id="lnkc"><span id="lnk">简介:</span><textarea name="summary" cols="60" rows="8"></textarea></div>' +
			'<div><span>排序号:</span><input name="order" type="text" size="8"/>　数字较小的排在前面</div>' +
			buttonRender("EditCategory") +
			'</form>' +
			'</div>';
	return t;
}


//+----------------------------------------------------------------------------
// 说明:	密码相关
//			pswPost		- 提交密码
//			pswRender	- 构造密码表单
//-----------------------------------------------------------------------------
function pswPost(frm)
{
	if (frm.email.value == "" && frm.newpsw.value == "")
	{
		alert("若要修改密码，请输入新密码和确认密码。\n\n若要设置或修改联系信箱，请填写信箱地址。 ");
		return false;
	}

	if (frm.cfmpsw.value != frm.newpsw.value)
	{
		alert("新密码和确认密码不符，请修改后再提交。");
		return false;
	}
	return readyToPost(frm);
}

function pswRender()
{
	var t = '<div id="psw" style="display: none">' +
			'<form name="psw" method="post" onsubmit="return pswPost(this)">' +
			'<div>若想修改登录密码，请在此输入新密码后单击“确定”。</div>' +
			'<div><span>新 密 码:</span><input name="newpsw" type="password" size="22"/></div>' +
			'<div><span>再输一次:</span><input name="cfmpsw" type="password" size="22"/></div>' +
			'<div>' +
				'<br/>若不填写联系信箱，将无法通过电子邮件取回丢失的密码。<br/>要设置或修改联系信箱，请在此填入地址后单击“确定”。' +
				'<br/>出于安全考虑，您设置的联系信箱是隐藏的，请自己记好。' +
			'</div>' +
			'<div><span>联系信箱:</span><input name="email" type="text" size="35" maxlength="50"/></div>' +
			buttonRender("ChangePsw") +
			'</form>' +
			'</div>';
	return t;
}


// 临时添加：所在地区
function locInit() {
	var frm = document.forms["loc"];
	if (!frm) return;

	var l = coa.getValue("location");
	var i = coa.getValue("myidentity");
	if (l == 0 || l > 200 || i == 0) tabClick(o("tab_loc"), "loc");

	option_fit(frm.loc, l);
	frm.identity[0].checked = (i == 2);
	frm.identity[1].checked = (i == 1);
	option_fit(frm.gpl, coa.getValue("mygroup"));
	frm.group.value = coa.getValue("mygroup");
	frm.forum.value = coa.getValue("myforum");
}

function locPost(frm) {
	frm.email.value = '0' + radio_value(frm.identity) + ',' + frm.loc.value + ',' + frm.group.value + ',' + frm.forum.value;
	return readyToPost(frm);
}

function selgrp(obj) {
	var frm = document.forms["loc"];
	frm.group.value = obj.options[obj.selectedIndex].value;
}

function locRender()
{
	var t = '<div id="loc" style="display: none">' +
			'<form name="loc" method="post" onsubmit="return locPost(this)">' +
			'<input name="email" type="hidden">' +
			'<div>请填写以下信息，提交后您的相册空间将升级至 <b>20M</b>。</div>' +
			'<div><span>我是:</span>' + make_radio('identity', 0, null, '2|教师/家长', '1|学生') + '</div>' +
			'<div><span>所在地区:</span><select name="loc">' + option_list(loc_list) + '</select></div>' +
			'<div><span>加入群组1:</span>' + '<input name="group" type="text" size="10"> ' +
			'<select name="gpl" onchange="selgrp(this)" style="width: 117">' + option_list(vir_grp) + '</select></div>' +
			'<div><span>加入群组2:</span>' + '<input name="forum" type="text" size="10"> (填群组账号)</div>' +
			buttonRender("ChangePsw") +
			'</form>' +
			'</div>';
	return t;
}


//+----------------------------------------------------------------------------
// 说明:	管理相关
//			admRender	- 构造管理表单
//-----------------------------------------------------------------------------
function admRender()
{
	var acp = coa.getValue("acp");
	if (acp <= 0) return ('');
	var t = '<div id="adm" style="display:none">';
	if (acp >= 10)
	{
		t += '<p>[专题编辑]</p>' +
			'<ul>' +
			'<li><a target="_blank" href="/' + coa.account + '/edition/0/admin.aspx">制作新专题</a></li>' +
			'<li><a target="_blank" href="/' + coa.account + '/edition.aspx">查看我制作的所有专题</a></li>' +
			'</ul>';
	}
	if (acp == 20)
	{
		t += '<div>[赛埔学员] ------------------</div>' +
			'<form name="cpnew" method="post" onsubmit="return cpPost(this)">' +
			'<div>请输入学员的账号、学号和姓名。要取消学员请在学号处输入 0。</div>' +
			'<div><span>账号:</span><input name="acc" size="10"/> 学号: <input name="sn" size="10"/> 姓名: <input name="nm" size="10"/></div>' +
			'<input name="skin" type="hidden"/>' +
			'<input name="rights" value="100" type="hidden"/>' +
			buttonRender("Admin", query('x', location.href, "x")) +
			'</form>';

		t += '<div>[删除条目] ------------------</div>' +
			'<form name="oem" method="post" onsubmit="return readyToPost(this)">' +
			'<div>请输入待删除的文章 ID（注意：删除评论请用 police.aspx）。</div>' +
			'<div><span>文章ID:</span><input name="skin" size="15"/></div>' +
			buttonRender("Admin", query('x', location.href, "x")) +
			'</form>';

		t += '<form name="adm" method="post" onsubmit="return readyToPost(this)">' +
			'<div>[重置会员] ------------------</div>' +
			'<div>若账号不存在，则添加会员；无需要设置的项目请勿填写。</div>' +
			'<div><span>会员账号:</span><input name="acc" type="text" size="20"/></div>' +
			'<div><span>重置密码:</span><input name="psw" type="text" size="20"/></div>' +
			'<div><span>界面风格:</span><input name="skin" type="text" size="50"/></div>' +
			'<div><span>空间限制:</span><input name="album" type="text" size="10"/> 单位: MB</div>' +
			'<div><span>群组状态:</span>' + make_radio("state", 0, null, "0|保持现状", "1|普通群组", "2|话题") + '</div>' +
			'<div><span>特殊权限:</span>' + make_radio("rights", 0, null, "0|保持现状", "1|普通会员", "200|专题编辑", "240|管理员") + '</div>' +
			buttonRender("Admin", query('x', location.href, "x")) +
			'</form>';
	}
	t += '</div>';
	return t;
}

function cpPost(frm) {
	frm.skin.value = trim(frm.sn.value) + ' ' + trim(frm.nm.value);
	return readyToPost(frm);
}


//+----------------------------------------------------------------------------
// 说明:	登录/注册相关
// 常量:	whoami_cap	- 本地保存登录信息的 cookie 名称
//			logout		- 注销
//			loginPost	- 提交登录
//			loginRender	- 构造登录表单
//-----------------------------------------------------------------------------
function logout()
{
	if (confirm("确定要注销登录吗？\n\n执行此操作同时会取消“自动登录”功能。 "))
	{
		cookie_del(whoami_cap);
		location.href = geturi(coa.account);
	}
	return false;
}

function loginPost(frm)
{
	if (frm.sta.value == "" || frm.stp.value == "")
	{
		alert("请填写账号和密码后再登录。 ");
		return false;
	}
	frm.redir.value = geturi(frm.sta.value);
	return readyToPost(frm);
}

function testEmail(s) {
	var re= /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	return re.test(s);
}

function regPost(frm)
{
	if (!testEmail(frm.email.value))
	{
		alert("请填写格式正确的电子信箱以便接收注册信息。 ");
		return false;
	}
	window.open("about:blank", "reg", "width=440,height=300");
	return true;
}

function loginRender()
{
	// sta, stp, ste 勿改名
	var t = '<div id="login">' +
			'<form method="post" onsubmit="return loginPost(this)">' +
			'<div>请输入您的账号和密码登录管理。</div>' +
			'<div><span>账号:</span><input name="sta" type="text" size="25"/></div>' +
			'<div><span>密码:</span><input name="stp" type="password" size="25"/></div>' +
			'<div><span>　</span><input name="ste" id="ste" type="checkbox" value="30" class="chk"/><label for="ste">记住我 (30天内自动登录)</label></div>' +
			buttonRender("Login") +
			'</form><br/>' +
			'<form method="post" onsubmit="return regPost(this)" target="reg">' +
			'<div class="hi">还没有在网络安家吗？只需填写一个电子信箱，即时开通您的博客！<br/>如果忘记了密码，也可以通过注册时填写的电子信箱取回。</div>' +
			'<div><span>电子信箱:</span><input name="email" type="text" size="30" maxlength="50"/></div>' +
			buttonRender("Register") +
			'</form>' +
			'</div>';
	return t;
}


//+----------------------------------------------------------------------------
// 说明:	留言相关
// 对象:	#notebar	- 留言表单的容器
// 常量:	myinfo_cap	- 本地保存作者信息的 cookie 名称
//			noteInit	- 初始化留言表单
//			noteSave	- 记录作者信息
//			notePost	- 提交留言
//			noteRender	- 构造留言表单
//-----------------------------------------------------------------------------
function noteInit()
{
	o("notebar").innerHTML = noteRender();

	var frm = document.forms["note"];
	if (!frm) return;

	var toc = o("notebar").getAttribute("toc");
	frm.title.value = (toc && frm.tid.value > 0) ? ('评：' + toc) : '';
	frm.author.value = '';
	frm.address.value = 'http://';

	var myinfo = cookie_get(myinfo_cap)
	frm.rec.checked = (myinfo != null)
	if (myinfo != null)
	{
		var mylist = myinfo.split("\n");
		frm.author.value = mylist[0];
		frm.address.value = mylist[1];
	}
}

function noteSave()
{
	var frm = document.forms["note"];
	if (!frm) return;

	if (frm.rec.checked)
	{
		if (frm.author.value == "" || frm.address.value == "")
		{
			alert("您要先填写您的大名和网址之后我才能记住您啊。");
			frm.rec.checked = false;
			return;
		}
		cookie_live(myinfo_cap, frm.author.value + "\n" + frm.address.value, 60);
	}
	else
	{
		cookie_del(myinfo_cap);
	}
}

function notePost(frm)
{
	if (frm.title.value == "" || frm.summary.value == "" || frm.author.value == "")
	{
		alert("请填写标题、您的大名和留言内容后再提交。 ");
		return false;
	}
	//if (frm.summary.value.length > 300)
	//{
	//	alert('不建议您发表长篇累牍的评论，您可以写成文章并引用本文。 ');
	//	return false;
	//}
	//if (frm.summary.value.indexOf('http://') >= 0 || frm.summary.value.indexOf('https://') >= 0)
	//{
	//	alert('评论中包含有连接将被视为广告贴，不允许发布。 ');
	//	return false;
	//}
	frm.redir.value = location.href;
	return readyToPost(frm);
}

function noteRender()
{
	var tid = o("notebar").getAttribute("tid");
	var t = '<div class="cap">' + ((tid > 0) ? '发表评论' : '给我留言') + '</div>' +
			'<div id="note">' +
			'<form name="note" method="post" onsubmit="return notePost(this)">' +
			'<div><span>标题:</span><input class="nti" name="title" type="text" size="50" maxlength="100"/></div>' +
			'<div>' +
			'<span>大名:</span><input name="author" type="text" size="20"/>　' +
			'<input id="rec" name="rec" type="checkbox" class="chk" onclick="noteSave()"/><label for="rec">记住我的名字和网址</label>' +
			'</div>' +
			'<div><span>网址:</span><input class="nti" name="address" type="text" size="50" maxlength="100"/></div>' +
			'<div><span>内容:</span><textarea name="summary" cols="50" rows="6"></textarea>' +
			'<input name="tid" type="hidden" value="' + tid + '"/>' +
			buttonRender("EditComment") +
			'</form>' +
			'</div>';
	return t;
}


//+----------------------------------------------------------------------------
// 说明:	隐藏表单，用于删除条目
// 对象:	#rembar		- 删除表单的容器
//			remInit		- 初始化
//			remCollpase	- 切换“删除”链接的显示状态
//			remContent	- 提交删除
//			remRender	- 构造删除表单
//-----------------------------------------------------------------------------
function remInit()
{
	o("rembar").innerHTML = remRender();
}

function remCollapse(id, state)
{
	var obj = o("rem" + id);
	if (!obj) return;
	display(obj, state);
}

function remContent(id, pid)
{
	var frm = document.forms["rem"];
	if (!frm) return false;

	frm.tid.value = (pid != null)? -id : id;
	if (confirm("确定要删除此条目 (#" + id + ") 吗？ "))
	{
		frm.redir.value = location.href;
		frm.submit();
	}
	//return false;
}

function remEscape(id) {
	var frm = document.forms["rem"];
	if (frm) {
		frm.post.value = 'RemoveForum';
		frm.tid.value = -id;
		frm.redir.value = location.href;
		frm.submit();
	}
}

function remRender()
{
	var t = '<form name="rem" style="display:none" method="post">' +
			'<input name="tid" type="hidden"/>' +
			'<input name="post" value="RemoveContent" type="hidden"/><input name="redir" type="hidden"/>' +
			'</form>';
	return t;
}


//+----------------------------------------------------------------------------
// 说明:	表单渲染/提交
//			buttonRender	- 构造按钮和表单标志
//			readyToPost		- 提交前的准备
//-----------------------------------------------------------------------------
function buttonRender(post, uri)
{
	var t = '<div><span>　</span><button type="submit">确定</button>' +
			((post != 'EditComment') ? '　<button type="button" onclick="doCancel()">取消</button>' : '') +
			'<input name="redir" type="hidden" ' + (uri ? 'value="' + uri + '"' : '') + '/>' +
			'<input name="post" value="' + post + '" type="hidden"/></div>';
	return t;
}

function readyToPost(frm)
{
	if (coa && coa.identity != null && coa.identity != cookie_get(whoami_cap))
	{
		alert("您好像已经退出或改用其他账号登录了。\n\n要继续管理，请先退出，然后重新登录账号 " + coa.account + "。 \n\nps.这么多账号管得过来吗 X_X|||");
		return false;
	}
	if (frm.redir.value == "") frm.redir.value = (document.referrer) ? document.referrer : geturi(coa.account);
	prepareFormToPost(frm);
	//if (frm.btnok) frm.btnok.disabled = true;
	return true;
}


//+----------------------------------------------------------------------------
// 说明:	辅助函数
//			geturi			- 合成地址
//			checkforum		- 检测是否加入了群组
//			track			- 复制引用地址
//			indentText		- 为 textarea 的每段内容前加两个全角空格模拟缩进
//			removePara		- 取消换行
//-----------------------------------------------------------------------------
function geturi(account, content)
{
	return "/" + account + ((content) ? ("/" + content) : "") + ".aspx"; 
}

function checkforum(obj)
{
	if (obj.href.indexOf("/0/") > 0)
	{
		alert("您当前还没有加入任何群组。要加入群组，请至“管理 -> 配置 -> 加入群组”处填写群组号。 ");
		return false;
	}
}

function track(obj)
{
	var msg = "本文的引用地址是：\n\n" + obj.href + " \n\n";
	var tmp = document.createElement("TEXTAREA");
	tmp.value = obj.href;
	if (tmp.createTextRange)
	{
		var copied = tmp.createTextRange();
		copied.execCommand('Copy');
		msg += "此地址已经复制到剪贴板。";
	}
	else
		msg += "请查看此链接的属性，复制引用地址。";
	alert(msg);
	return false;
}

function indentText(txt)
{
	var obj = o(txt);
	// 注：FF 的 textarea 换行符仅为 \n
	var reg = (obj.value.indexOf("\r\n") >= 0) ? /\r\n/g : /\n/g;
	if (obj) obj.value = "　　" + obj.value.replace(reg, "\r\n　　")
	return false;
}

function removePara(txt)
{
	var obj = o(txt);
	var reg = (obj.value.indexOf("\r\n") >= 0) ? /\r\n/g : /\n/g;
	if (obj) obj.value = obj.value.replace(reg, "")
	return false;
}


//+----------------------------------------------------------------------------
// 说明:	搜索、跳转
//			qsInit		- 同步搜索表单
//			qsGo		- 快速查看
//			qsOpen		- 打开指定账号，sta 为录入框
//-----------------------------------------------------------------------------
function qsInit()
{
	var frm = document.forms["search"];
	if (!frm) return;
	if (frm.text.value == "0" || frm.text.value == "1" || frm.text.value == "2" || frm.text.value == "3")
	{
		option_fit(o("qs"), frm.text.value);
		frm.text.value = "";
	}
}

function qsGo(id)
{
	if (id != "") location.href = "/search/" + id + ".aspx";
}

function qsOpen(frm) {
	with (frm) {
		if (sta.value == "") {
			alert("请先输入要打开的博客编号。 ");
			sta.focus();
			return false;
		}
		var uri = '/' + sta.value;
		uri += (tp[0].checked) ? '.aspx' : '/forum.aspx';
		action = uri;
		//action = geturi(sta.value);
		return true;
	}
}



//+----------------------------------------------------------------------------
// 说明:	分页
//			fmpInit		- 分页初始化
//			fmpGo		- 翻页
//			fmpRender	- 构造分页链接
//-----------------------------------------------------------------------------
function fmpInit()
{
	// 注意：此处修改了 rem 表单的 post!!!
	var rem = document.forms["rem"];
	if (rem) rem.post.value = "RemoveForum";

	var pagebar = o("pagebar");
	pagebar.innerHTML += fmpRender();

	var orders = document.getElementsByName("order");
	var order = pagebar.getAttribute("order");
	orders[order].checked = true;
}

function fmpGo(pg)
{
	var pagebar = o("pagebar");

	var page = (pg != 0) ? parseInt(pagebar.getAttribute("page")) + pg : 1;
	if (page < 1) page = 1;

	var forum = pagebar.getAttribute("forum");
	var order = radio_value(document.getElementsByName("order"));

	var u = "/" + forum + "/forum/" + order + "/" + page + ".aspx";
	location.href = u;
	return false;
}

function fmpRender()
{
	var rec = o('pagebar').getAttribute('total');
	var pg = o('pagebar').getAttribute('page');
	var pgs = Math.ceil(rec / 100);
	var t = '<span title="共' + rec + '篇文章">[第 ' + pg + ' 页 / 共 ' + pgs + ' 页] </span>' +
			'<a href="" onclick="return fmpGo(0)">首页</a> ' +
			'<a href="" onclick="return fmpGo(-1)">上页</a> ' +
			'<a href="" onclick="return fmpGo(1)">下页</a> ' +
			'<a href="" onclick="return fmpGo(' + (pgs - pg) + ')">末页</a>' +
			make_radio("order", 0, "fmpGo(0)", "0|时间", "1|点击", "2|评论");
	return t;
}


function seekInit(page, list) {
	if (list == 'XpSearch') {
		option_fill(o('loc'), loc_list, page);
		//o('s1').checked = page == 1001;
		o('s2').checked = page == 1002;
		o('s3').checked = page == 1003;
	}
	else
		option_fill(o('loc'), loc_list, 0);
}

function seekRegion(lst) {
	var l = lst.options[lst.selectedIndex].value;
	location.href = "/s/" + l + ".aspx";
}

function seekText() {
	var t = o('text').value;
	if (t == '') { alert('请输入搜索内容。 '); return; }
	var p = 1001;
	if (o("s2").checked) p = 1002;
	if (o("s3").checked) p = 1003;
	var uri = "/s/" + p + ".aspx?text=" + escape(t);
	location.href = uri;
}



//-----------------------------------------------------------------------------
function phonetic(s) {
	var htm = '';
	var img = '<img src="http://cb.kingsoft.com/ui/i/yinbiao/CH.png"/>';
	var tmp = '<img src="http://cb.kingsoft.com/ui/i/v01/FH.gif"/>';
	for (var i = 0; i < s.length; i++) {
		var ch = s.substr(i, 1);
		switch (ch) {
			case ' ': htm += ' '; break;
			case "'": htm += img.replace('CH', '5'); break;
			case '-': htm += img.replace('CH', 'zhongganxian'); break;
			case '_': htm += img.replace('CH', 'xiahuaxian'); break;
			case '.': htm += img.replace('CH', 'dian'); break;
			case '\\': htm += img.replace('CH', 'xiexian'); break;
			case '/': htm += img.replace('CH', 'fanxiexian'); break;
			case '?': htm += img.replace('CH', 'wenhao'); break;
			default: htm += img.replace('CH', ch); break;
		}
	}
	htm = tmp.replace('FH', 'fangkh-z') + htm + tmp.replace('FH', 'fangkh-y');
	return htm;
}

function speaker(s) {
	var swf = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="17" height="17">' +
		'<param name="movie" value="http://cb.kingsoft.com/resource/a/en/CAT/WORD.swf">' +
		'<param name="wmode" value="transparent">' +
		'<param name="quality" value="high">' +
		'<embed src="http://cb.kingsoft.com/resource/a/en/CAT/WORD.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="17" height="17"></embed>' +
		'</object>';
	return swf.replace(/CAT/g, s.substr(0, 1)).replace(/WORD/g, s);
}

function expEnword() {
	if (cookie_get('u_enw') != '1') {
		disp('enw', false);
		return;
	}
	var div = o('enw');
	var w = div.getAttribute('word');
	var p = div.getAttribute('phonetic');
	var r = div.getAttribute('remark');
	//div.innerHTML = '<span onclick="shutIt()" title="若您感到不适，点这里关掉我吧~">×</span>&nbsp; 陪你背单词: ' + w + '&nbsp;' + phonetic(p) + ' ' + speaker(w) + '　' + r;
	div.innerHTML = '陪你背单词: ' + w + '&nbsp;' + phonetic(p) + ' ' + speaker(w) + '　' + r;
	div.title = '若您感到不适，请至管理页面关掉我吧~';
}

function shutIt() {
	if (!confirm("确实是要关掉我吗？关掉后可再也见不到我啦，要不您再考虑考虑？ ")) return;
	//cookie_live('noenw', '1', 90);
	cookie_del('u_enw');
	disp('enw', false);
}

function userState(name, state) {
	if (state)
		cookie_live(name, '1', 90);
	else
		cookie_del(name);
}

function userChoose() {
	var t =
		'<div style="margin: 20 0 0 0">' +
		'<div><b>--== 新功能体验(选择或取消选择即可，不需要再单击“确定”按钮) ==--</b></div>' +
		make_checkbox('u_enw', cookie_get('u_enw'), '陪你背单词: 浏览文章时随机显示四级词库中的一个单词', 'userState(this.id, this.checked)') +
		'</div>';
	return t;
}


//-------------------------------------
function hiOne(li) { li.className = 'lo'; }
function loOne(li) { li.className = ''; }
function expAuto(chk) {
	if (chk) cookie_live('expauto', ((chk.checked) ? '1' : '0'), 30);
	var flag = cookie_get('expauto');
	if (flag == '1' || chk) {
		if (!chk) o('expall').checked = true;
		var divs = o('list').getElementsByTagName('DIV');
		for (var i = 0; i < divs.length; i++) collapse(divs[i]);
	}
}
function cfmDel(id) {
	if (!confirm('确定要删除此条评论或留言吗(ID.' + id + ')？ ')) return;
	var form = document.forms['rem'];
	form.redir.value = location.href;
	form.tid.value = -id;
	form.submit();
}
