/**
 * blog 布局控制
 * FileName: document.js
 * Author: Dron
 * Date: 2008-2-28
 * Contact: ucren.com
 * Illustration: 回调函数:
 */
var treeMenuCont, grid, articleP, listGridCont, articleG, listG, article, listTitle, random, listpg, currentColumn, currentArticleId, columnMap = {}, articlePath;
listGridCont = Ucren.get("listGridCont");
articleP = Ucren.get("article-panel");
articleG = Ucren.get("articleGroup");
listG = Ucren.get("listGroup");
article = Ucren.get("article");
listTitle = Ucren.get("listTitle");
articlePath = Ucren.get("articlePath");
currentColumn = 0;

Ucren.onReady(function (){
	var body = document.documentElement;
	random = Ucren.randomWord(8);

	// 定义 layout
	var layout = new Ucren.LayoutSet({ type: "tb", container: main });
	layout.addPanel({ id: "top", height: 45 });
	layout.addBorder(false);
	layout.addPanel({ id: "main" });
	layout.render();

	// 定义 top
	layout.getPanelById("top").setHtml("<div id='top'><div id='logo'></div></div>");

	// 定义 layout2
	var layout2 = new Ucren.LayoutSet({ type: "lr", container: layout.getPanelById("main") });
	layout2.addPanel({ id: "left", width: 160, minWidth: 160 });
	layout2.addBorder(true, "left");
	layout2.addPanel({ id: "main", minWidth: 500 });
	layout2.render();

	// 画出 left 标题和内容层
	var leftCont = layout2.getPanelById("left");
	var cont1 = Ucren.id();
	leftCont.setHtml("<div class='panelCaption'>邮件</div><div id='" + cont1 + "'></div>");
	cont1 = Ucren.get(cont1);
	leftCont.onResize = function (w, h){
		cont1.resizeTo(w, h - 20);
	}

	// 定义 outlook
	var outlook = new Ucren.OutlookBar({
		captions: ["邮件", "日历", "联系人", "作务", "便笺", "文件夹列表", "快捷方式"],
		container: cont1,
		textAlign: "left",
		slippage: false
	});
	outlook.render();
	outlook.getContainer(2).addDom("contracts");
	for(var i = 1; i < 7; i ++){
		if(i == 2)continue;
		outlook.getContainer(i).setHtml("<div style='text-indent: 5px; line-height: 30px; color: #808080;'>尚未开通!</div>");
	};
	cont1.onResize = function (){
		outlook.autoSize();
	}

	// 定义 treemenu
	treeMenuCont = outlook.getContainer(0);
	treeMenuCont.setHtml("加载列表中...");

	Ucren.remoteCallScript("remote/column.asp?m=" + random, true);

	// 画出 main 的标题和内容层
	var mainCont = layout2.getPanelById("main");
	mainCont.addDom("listGroup");
	mainCont.addDom("articleGroup");
	Ucren.get("articleGroup").setDisplay(false);

	// 定义搜索框
	var searcher = new Ucren.ComboBox({
		width: 280,
		value: "",
		editable: true,
		data: new Ucren.DataVess({
			fields: ["text", "value"],
			records: [
				["测试", "test"]
			]
		})
	});
	searcher.applyTo("searcher");

	// 定义“立即查找”按钮
	var searchbtn = new Ucren.Button({
		width: 80,
		caption: "立即查找",
		handler: function (){
			Ucren.alert("稍候支持！");
		}
	});
	searchbtn.applyTo("searchbtn");

	mainCont.onResize = function (w, h){
		listGridCont.resizeTo(w, h - 80);
		articleP.resizeTo(w, h - 30);
	}

	// 定义 grid
	grid = new Ucren.DataGrid({
		container: listGridCont,
		data: new Ucren.DataVess({
			fields: ["id", "title", "cname", "author", "date", "lastModified", "reply"],
			records: []
		}),
		columnModel: gridColumnModel,
		onRowClick: function (n){
			var d = grid.datavess;
			d.go(n);
			currentArticleId = d.read("id");
		},
		onRowDblClick: function (n){
			var d = grid.datavess;
			d.go(n);
			Ucren.showLoading("文章正在加载中，请稍候...");
			Ucren.remoteCallScript("remote/article.asp?m=" + random + "&id=" + d.read("id"), true, function (){
				Ucren.hideLoading();
			});
		}
	});
	grid.render();
	listGridCont.onResize = function (w, h){
		grid.autoSize();
	}

	// 定义分页条
	listpg = new Ucren.PagingBar({
		container: "listPagingBar",
		displayInfo: true,
		pageSize: listPageSize,
		currentPage: 1,
		displayRenderer: function (){
			return "当前第 " + this.currentPage + " 页&#12288;总 " + this.pageCount + " 页&#12288;每页显示 " + this.pageSize + " 条 " + "&#12288;总 " + this.recordCount + " 条";
		}
	});
	listpg.onPageChange = listpgOnPageChange;
	listpg.render();

	// 文章页面的“返回列表”按钮
	var backToListBtn = new Ucren.Button({
		width: 80, caption: "返回列表", handler: function (){
			changeGroupTo("list");
		}
	});
	backToListBtn.applyTo("backToListBtn");

	// 文章页面的“我要评论”按钮
	var replyBtn = new Ucren.Button({
		width: 80, caption: "查看评论", handler: function (){
			Ucren.alert("稍候支持!");
		}
	});
	replyBtn.applyTo("replyBtn");

	// 定义窗体事件
	Ucren.addEvent(window, "resize", function (){
		main.resizeTo(body.clientWidth, body.clientHeight);
	})();

	var hkm = Ucren.HotKeyManager;
	hkm.addHotKey("ctrl+shift+c", function (){
		window.alert(currentArticleId);
	});
	hkm.start();

	$lc = true;
});

// 将初始化栏目数据和从数据库中查询的栏目数据合并，然后渲染树
function renderTreeMenu(data){
	var s, r, rs;
	s = treeMenuData.submenus;
	for(var i = 0; i < s.length; i ++){
		if(s[i].name == "收件箱"){
			r = s[i];
			break;
		}
	}
	if(r){
		r.opened = true;
		r.submenus = data;
	};
	for(var i = 0; i < data.length; i ++) columnMap["a" + data[i].id] = data[i].name;

	treeMenuCont.setHtml("");
	var treemenu = new Ucren.TreeView({
		data: treeMenuData,
		container: treeMenuCont,
		onItemClick: function (c){
			if (typeof(c.id) == "undefined") return Ucren.alert("对不起，此栏目尚未开放！现在只开放<span style='color: red;'>收件箱</span>栏目", "尚未开放");
			c.name && changeListTitle(c.name);
			Ucren.showLoading("正在下载列表中，请稍候...");
			Ucren.remoteCallScript("remote/articlelist.asp?m=" + random + "&cid=" + (currentColumn = c.id), true, function (){
				Ucren.hideLoading();
			});
		}
	});
	treemenu.render();
}

// 下载文章列表
function renderArticleList(arr, cp, count){
	if(!arr) return ;
	listpg.currentPage = cp;
	listpg.recordCount = count;
	listpg.ready();

	var newArr = [];
	for(var i = 0; i < arr.length; i ++){
		var r = arr[i];
		// ["title", "cname", "author", "date", "lastModified", "reply"]
		newArr[i] = [ r.id, r.title, r.column, r.author, r.publish, r.lastModified, r.reply ];
	}
	grid.datavess.load(newArr);
	grid.reload();
	changeGroupTo("list");
}

// 查看文章
function renderArticle(data){
	var title, column, author, publish, content, lastModified, reply, html;
	title = data.title;
	column = data.column;
	author = data.author;
	publish = data.publish;
	content = data.content;
	lastModified = data.lastModified;
	reply = data.reply;
	html = articleTemplate.replace({
		title: title,
		info: "发件人: " + author + " &#160; 发表于: " + publish,
		content: content
	});
	article.setHtml(html);
	articlePath.setHtml("当前位置：收件箱 &gt;&gt; " + columnMap["a" + column] + " &gt;&gt; " + title);
	changeGroupTo("article");
}

// 切换页面
function changeGroupTo(name){
	switch (name){
		case "article":
			listG.setDisplay(false);
			articleG.setDisplay(true);
			break;
		case "list":
			listG.setDisplay(true);
			articleG.setDisplay(false);
			break;
	}
}

// 切换
function changeListTitle(name){
	listTitle.setHtml(name);
}

function listpgOnPageChange(n){
	Ucren.showLoading("正在下载列表中，请稍候...");
	Ucren.remoteCallScript("remote/articlelist.asp?m=" + random + "&cid=" + currentColumn + "&page=" + n, true, function (){
		Ucren.hideLoading();
	});
}