
var scripId = '';			//字条编号
var dbId;					//被双击字条的ID
var iLayerMaxNum = 100;	//z-index基数

var scripContainerLeft = 230;
var scripContainerTop = 104;
var scripWidth = 199;
var scripHeight = 116;
var scripX;					//纸条左上角 X 坐标
var scripY;					//纸条左上角 Y 坐标

var scrips;					//所有字条的对象列表
var focusScrip;				//首页焦点显示的字条
var sameFlag = 0;			//0——焦点显示的字条不属于首页，1——焦点显示的字条属于首页
var scripContainerId = "scripContainer";//字条绘制区的ID

var pageIndex = 1;
var pageSize = 35;
var pageIndexes = null;
var scripCount = 0;
var pageCount = 0;
var appPrefix = '/hi';
var focusNum = 0;

var w = 0;
var h = 0;

var ajax = null;
var loading = null;

var focusFlag = 0;

function isFirefox()
{
	var navig=navigator;
	var ua = navig.userAgent.toLowerCase();
	if(ua.indexOf('firefox')>0) return true;
	return false;
}

function showZoomTip(){
	return;
	var tip = getCookie("channel");
	if(tip != "no"){
		var pos = getZoomTipPos();
		var scripTips = document.getElementById("scripTips");
		scripTips.style.left = pos[0] + "px";
		scripTips.style.top = pos[1] + "px";
		scripTips.style.display = "block";
	}
}
function getZoomTipPos(){
	var scripContainer = document.getElementById("scripContainer");
	var scrips = scripContainer.childNodes;
	var pos = [658, 24];
	if(scrips.length >= 4){
		var left = scrips[17].style.left;
		var top = scrips[17].style.top;
		pos[0] = parseInt(left.replace("px", "")) + 230 + 128;
		pos[1] = parseInt(top.replace("px", "")) + 104 - 80;
	}
	return pos;
}
function hideZoomTip(){	
	var scripTips = document.getElementById("scripTips");
	scripTips.style.display = "none";
}
function disableZoomTip(){
	hideZoomTip();
	// var time = new Date(); 
	// time.setTime(time.getTime() + 365 * 24 * 3600 * 1000); //过期时间为24小时. 
	// setCookie("channel", "no", time.toGMTString(), null, "lovewall.qq.com", null);
}
function init(){	
	setBodyWidth();	
	
	loading = document.getElementById("loading");
	//loading.style.visibility = "visible";
	
	// setSendScripLink(isLogin);
	// setHeader(isLogin, userName);
	
	ajax = new Ajax();
	ajax.invoke(
		"/_ajax/scriplist.php",
		"GET",
		true,
		handle
	);
	
	var scripContainer = document.getElementById(scripContainerId);
	// w = scripContainer.clientWidth;
	// h = scripContainer.clientHeight;
	w = 900;
	h = 600;
}

var scrip_id_max = 0;
var scrip_id_current = -1;
var scrip_editor = false;
var scrip_editor_title = false;
var scrip_editor_content = false;
var my_display = new Array();
var f13580_user_id = 0;
function f13580_start_editor(id)
{
	scrip_id_current = id;
	if(!scrip_editor) {
		scrip_editor = document.getElementById("u13580_editor");
		scrip_editor_title = document.getElementById("u13580_editor_title");
		scrip_editor_content = document.getElementById("u13580_editor_content");
		scrip_editor.style.left = (screen.width/2-300)+'px';
	}
	if(!scrip_editor) return;
	iLayerMaxNum++; scrip_editor.style.zIndex = iLayerMaxNum++;
	scrip_editor.style.top = (f_scrollTop()+(f_clientHeight()-300)/2)+"px";
	if(isFirefox()) {
		// alert("firefox:"+scrip_editor.style.top);
		scrip_editor.style.top = (f_scrollTop()+100)+"px";
		// alert("firefox:"+scrip_editor.style.top);
	}
	if(id>=0) {
		// set value
		i = d13580_scripts_ids[id];
		scrip_editor_title.value = d13580_scripts[i].scrip_title;
		scrip_editor_content.value = d13580_scripts[i].scrip_content;
	}
	else {
		// set default
		scrip_editor_title.value = '新标签';
		scrip_editor_content.value = '';
	}
	scrip_editor.style.display = 'block';
}
function f13580_hideeditor()
{
	if(!scrip_editor) return;
	scrip_editor.style.display = 'none';
}
function get_next_id()
{
	var dup = true;
	while(dup) {
		scrip_id_max++; dup = false;
		for(i=0;i<d13580_scripts.length;i++) {
			if(d13580_scripts[i].iRealScripNo == scrip_id_max) { dup = true;  break; }
		}
	}
	return scrip_id_max;
}

function f13580_savetag()
{
	var scripContainer = document.getElementById(scripContainerId);
	var scripBuilder = new ScripBuilder3Simple();
	if(scrip_id_current < 0) {
		// create new
		scrip_id_current = get_next_id();
		i = d13580_scripts.length;
		d13580_scripts_ids[scrip_id_current] = i;
		 a = new Object();
		 a['iRealScripNo'] = scrip_id_current;
		 a['scrip_title'] = scrip_editor_title.value;
		 a['scrip_content'] = scrip_editor_content.value;
		 a['pos_x'] = 100;
		 a['pos_y'] = 100;
		 a['pos_z'] = iLayerMaxNum+1; iLayerMaxNum++;
		 d13580_scripts[i] = a;
		i = d13580_scripts_ids[scrip_id_current];
		p = new Position(); p.x = 0; p.y=0; p.z=0;
		scrip = scripBuilder.assemble(d13580_scripts[i], p);
		//if(i==0) scrip = scripBuilder2.assemble(scrips[i], positions[i]);
		scripContainer.appendChild(scrip);
	}
	else {
		// change existing
		i = d13580_scripts_ids[scrip_id_current];
		d13580_scripts[i].scrip_title = scrip_editor_title.value;
		d13580_scripts[i].scrip_content = scrip_editor_content.value;
		// delMessage(scrip_id_current);
		var div_content = document.getElementById(scripIdPrefix + d13580_scripts[i].iRealScripNo + "_content");
		if(div_content) {
			div_content.innerHTML = f13580_parseContent(d13580_scripts[i].scrip_content);
		}
		i = d13580_scripts_ids[scrip_id_current];
		div_content = document.getElementById(scripIdPrefix + d13580_scripts[i].iRealScripNo + "_title");
		if(div_content) {
			div_content.innerHTML = f13580_parseTitle(d13580_scripts[i].scrip_title);
		}
	}
	f13580_hideeditor();
	f13580_save_desktop();
}

function do_nothing( txt ) { 
	var dbg_info = document.getElementById('debug_info');
	if(dbg_info) {
		dbg_info.innerHTML = txt;
	}
	if( txt == 'invalid user id' || txt == 'not login') {
		alert('警告：你已经在其他窗口退出登录或者以别的帐号登录了，当前修改的内容无法保存。如果未作任何修改，你可以忽略此警告。');
	}
}

function f13580_save_desktop() {
	var cont = new Array();
	var idx=0;
	for(i=0;i<d13580_scripts.length;i++) {
		if(d13580_scripts[i]!=null) cont[idx++] = d13580_scripts[i];
	}
	var text = cont.toJSONString();
	// var text2 = my_display.toJSONString();
	// POST
	var obj = new AjaxConnection('/_ajax/scrip_save.php', 'POST', do_nothing);
	var opts = new Array('scrips='+encodeURIComponent(text), 'uid='+f13580_user_id);
	// var opts = new Array('scrips='+encodeURIComponent(text)+'&display='+encodeURIComponent(text2));
	obj.setOptions(opts);
	obj.connect();
}

function f13580_save_keyword() {
	var text = d13580_scripts.toJSONString();
	var type = 0;
	var url = document.location.href;
	if(url.indexOf('baidu')>0) type = 4;
	else if(url.indexOf('google')>0) type = 5;
	// POST
	var obj = new AjaxConnection('/_ajax/keyword_save.php', 'POST', do_nothing);
	var opts = new Array('type='+type,'key='+encodeURIComponent(document.getElementById('kw').value));
	obj.setOptions(opts);
	obj.connect();
	return true;
}

function f13580_parseTitle(txt) {
	var res = txt;
	res = res.replace(/<script/gi, "<nscript");
	res = res.replace(/<\/script>/gi, "</nscript>");
	res = res.replace(/<div/gi, "<p");
	res = res.replace(/<\/div>/gi, "</p>");
	res += '<br />';
	return res;
}
function f13580_parseContent(txt) {
	var res = '';
	var pattern = "\r\n";
	if(txt.indexOf(pattern)<0) pattern = "\n";
	if(txt.indexOf(pattern)<0) pattern = "\r";
	var t_arr = txt.split(pattern); var pos = 0; var url = '';
	for(i=0;i<t_arr.length;i++) {
		// check image code
		var pre_text = ''; var br = '<br />';
		if(t_arr[i].charAt(0)=='|') {
			br = '&nbsp;';
			t_arr[i] = t_arr[i].substr(1);
		}
		pos = t_arr[i].search(/\<img/i);
		if(pos>=0) {
			pos2 = t_arr[i].indexOf('>',pos);
			if(pos2<pos) {
				// remove < tag
				t_arr[i] = t_arr[i].substr(0,pos) + t_arr[i].substr(pos+1);
			}
			else {
				pre_text += t_arr[i].substr(0,pos2)+' border=0>';
				pos2++;
				t_arr[i] = t_arr[i].substr(pos2);
			}
		}
		pos = t_arr[i].search(/http\:\/\//i);
		if(pos==-1) {
			pos = t_arr[i].search(/https\:\/\//i);
		}
		if(pos==-1) {
			pos = t_arr[i].search(/ftp\:\/\//i);
		}
		if(pos==-1) {
			pos = t_arr[i].search(/about\:/i);
		}
		if(pos==-1) {
			res += pre_text + t_arr[i]+br;
		}
		else if(pos==0) {
			url = t_arr[i].replace(/\s+/g, '');
			if(pre_text=='') res += '<a href="'+url+'" target="_blank">'+url+'</a>'+br;
			else res += '<a href="'+url+'" target="_blank">'+pre_text+'</a>'+br;
		}
		else {
			ch = t_arr[i].charAt(pos-1);
			if(ch=='|' || ch==' ') t = t_arr[i].substr(0,pos-1);
			else t = t_arr[i].substr(0,pos);
			url = t_arr[i].substr(pos).replace(/\s+/g, '');
			t = t.replace(/^\s+/, '');
			t = t.replace(/\s+$/, '');
			t = pre_text + t;
			if(t=='') t = url;
			res += '<a href="'+url+'" target="_blank">'+t+'</a>'+br;
		}
	}
	res = res.replace(/<script/gi, "<nscript");
	res = res.replace(/<\/script>/gi, "</nscript>");
	res = res.replace(/<div/gi, "<p");
	res = res.replace(/<\/div>/gi, "</p>");
	return res;
}

function f13580_refresh_display()
{
	// if(my_display.bg_image && my_display.bg_image.search(/^http\:\/\//i)) {
	if(my_display.bg_image != '') {
		// alert('set bg to '+my_display.bg_image);
		var body_container = document.getElementById('body_element');
		if(body_container) {
			// alert('setting...');
			body_container.style.background = 'url('+my_display.bg_image+') fixed';
		}
	}
	if(my_display.homepage.length > 10) {
	// if(my_display.homepage && my_display.homepage.search(/^http\:\/\//i)) {
		// alert('set homepage to '+my_display.homepage);
		var embed_iframe = document.getElementById('embed_iframe');
		if(embed_iframe) {
			// alert('setting...');
			embed_iframe.style.left = my_display.user_text_left + "px";
			embed_iframe.style.top = my_display.user_text_top + "px";
			embed_iframe.style.width = my_display.user_text_width + "px";
			embed_iframe.style.height = my_display.user_text_height + "px";
			embed_iframe.src = my_display.homepage;
		}
	}
}

var d13580_scripts = false;
var d13580_scripts_ids = false;

function handle(response){
	//loading.style.visibility = 'false';
	//window.setTimeout("loading.style.visibility = 'hidden';",2000);
	
	var jsonContent = eval("(" + response + ")");

	f13580_user_id = jsonContent['user_id'];

	my_display = jsonContent.my_display;
	f13580_refresh_display();

	if(jsonContent.authed == 1) {
		var toolbar = document.getElementById("u13580_tb");
		// var url = document.location.href;
		var url = this_page_name;
		var suffix = '';
		if(url == 'index.htm') suffix += ' | <a href="/index-setting.php">个性设置</a> ';
		if(my_display.message_num>0) suffix += ' | <a href="http://bbs.13580.com/pm.php" target="_blank">站内信(<font color="red">'+my_display.message_num+'</font>)</a> ';
		else suffix += ' | <a href="http://bbs.13580.com" target="_blank">论坛</a> ';
		suffix += ' | <a href="http://www.13580.com">格子世界</a> | <a href="http://www.13580.com/logout.php?forward='+encodeURIComponent(url)+'">退出</a>';
		var text = ''+jsonContent.user_name+'，欢迎回来。<a href="#" id="c13580_addtag" onclick="f13580_start_editor(-1); return false;">添加标签</a> '+suffix;
		toolbar.innerHTML = text;
		// var add_tag_link = document.getElementById("c13580_addtag");
		// add_tag_link.click(function(){  });
	}
	
	/*
	try
	{
	my_display = jsonContent.my_display;
	f13580_refresh_display();
	}
	catch (e)
	{
	}
	*/

	scrips = jsonContent.scrips;
	d13580_scripts = new Array();
	d13580_scripts_ids = new Array();
	iLayerMaxNum = 0;
	for(i=0;i<scrips.length;i++)
	{
		if(scrips[i].pos_x<-50) scrips[i].pos_x = 10;
		if(scrips[i].pos_y<-50) scrips[i].pos_y = 10;
		d13580_scripts[i] = scrips[i];
		// remove duplicated iRealScripNo
		var ino = d13580_scripts[i].iRealScripNo; var dup=true;
		while(dup) {
			dup = false;
			for(j=0;j<i;j++) { if(ino==d13580_scripts[j].iRealScripNo) dup = true; }
			if(dup) ino++;
		}
		d13580_scripts[i].iRealScripNo = ino;
		if(scrip_id_max<d13580_scripts[i].iRealScripNo) scrip_id_max = d13580_scripts[i].iRealScripNo;
		if(iLayerMaxNum<d13580_scripts[i].pos_z) iLayerMaxNum = d13580_scripts[i].pos_z;
		d13580_scripts_ids[''+d13580_scripts[i].iRealScripNo] = i;
	}
	pageIndexes = jsonContent.indexes;
	scripCount = jsonContent.scripCount;
	pageCount = jsonContent.pageCount;
	focusScrip = jsonContent.focusScrip;
	
	var scripSize = scrips.length;
	//var positions = getRamdomPosition_2(0, 0, w, h, scripWidth, scripHeight, scripSize);
	//var positions = getRamdomPosition_3(0, 0, w, h, scripWidth, scripHeight, scripSize);
	//var positions = getRamdomPosition_1(scripSize);
	//var positions = getRamdomPosition_4(0, 0, w, h, scripWidth, scripHeight, 5, 7);
	var positions = getRamdomPosition_5(0, 0, w, h, scripWidth, scripHeight, 7, 5);
	
	buildPageIndex("pageControlA");
	buildPageIndex("pageControlB");
	
	var scripContainer = document.getElementById(scripContainerId);
	scripContainer.innerHTML = "";
			
	var scripBuilder = new ScripBuilder3Simple();
	//var scripBuilder2 = new ScripBuilder2();
	for(var i=0; i<scrips.length; i++){
	//for(var i=0; i<2; i++){
		//positions[i].z = i;
		if(focusScrip != undefined && focusScrip != "no" && focusScrip.iRealScripNo == scrips[i].iRealScripNo){
			sameFlag = 1;
			continue;
		}
		scrip = scripBuilder.assemble(scrips[i], positions[i]);
		//if(i==0) scrip = scripBuilder2.assemble(scrips[i], positions[i]);
		if(scrip) scripContainer.appendChild(scrip);
	}
	
	//构建焦点显示的字条
	if(focusScrip != undefined){
		if(focusScrip == "2"){
			alert("对不起，您搜索的字条已删除！");
		}else
		if(focusScrip == "0" || focusScrip == "-1"){
			alert("对不起，您搜索的字条不存在！");
		}else{
			var scrip = null;
			if(focusScrip.recvUserNum != "" && focusScrip.recvUserNum == userNum && focusScrip.recvUserNum != focusScrip.senderNum){
				scrip = buildFocusRecvScrip(focusScrip);
			}else{
				scrip = buildFocusScrip(focusScrip);
			}
			if(scrip != null){
				scripContainer.appendChild(scrip);
				focusFlag = 1;
			}
		}
	}else{	
		//显示
		showZoomTip();
	}
}

function buildFocusRecvScrip(focusScrip){
	hideZoomTip();
	
	var scripBuilder;
	var scripWidth = 319;
	var scripDivHeight = 248;
	if(focusScrip.version == ""){
		scripBuilder = new ScripBuilder2();
		scripDivWidth = 240;
		scripDivHeight = 227;	
	}else{
		scripBuilder = new ScripBuilder3Full();	
		scripDivWidth = 380;
		scripDivHeight = 420;	
	}
	var topWindow = getTopWindow();
	var doc = topWindow.document;
	showScripCover(doc,iLayerMaxNum-1);
	
	var windowWidth = doc.body.clientWidth ;
	var windowHeight = topWindow.screen.availHeight ;
	var commentDivWidth = scripDivWidth + 270;
	//var commentDivWidth = 600;
	var commentDivHeight = 500;
	
	var position = new Position();
	position.x = 0;
	position.y = 0;
	position.z = iLayerMaxNum;
	//position.x = (windowWidth-scripDivWidth)/2 - 230;
	//position.y = (windowWidth-scripDivWidth)/2 - 300;
	//position.z = iLayerMaxNum;
	var fullScrip = scripBuilder.assemble(focusScrip, position);
	fullScrip.style.position = "relative";
	
	var scripHolder = document.createElement("ul");
	scripHolder.style.cssText = "float:left;";
	scripHolder.appendChild(fullScrip);
	
	var h2 = document.createElement("h2");
	h2.style.cssText = "DISPLAY: block; height:30px; line-height:30px; background:url(images/bg_scrip_reply_top.gif) left top no-repeat; font-size:14px; color:#fff; text-align:center;";
	//h2.style.cssText = "DISPLAY: block; height:30px;";
	h2.innerHTML = "回复发送者";
	
	//Event.observe(scripDiv, "mousedown", handleDown, scrip.iRealScripNo);
	
	var closeA = document.createElement("a");
	closeA.setAttribute("id", "replyScripCloseBtn");
	closeA.setAttribute("href", "#");
	closeA.style.cssText = "width:11px; height:11px; overflow:hidden; background:url(images/icon_scrip_close_large.gif) left top no-repeat; border:1px solid #fff; float:right; margin:-21px 10px 0 0;";
	Event.observe(closeA, "click", closeAnswer, focusScrip.iRealScripNo);
	
	var commentDiv = document.createElement("div");
	commentDiv.setAttribute("id", "replyDiv");
	commentDiv.style.cssText = "position:absolute;background-color:#fff;left:"+((windowWidth-commentDivWidth)/2-230)+"px; top:"+((windowHeight-commentDivHeight)/2-104)+"px; width:"+commentDivWidth+"px; z-index:"+iLayerMaxNum+";";
	commentDiv.appendChild(h2);
	commentDiv.appendChild(closeA);
	commentDiv.appendChild(scripHolder);
	iLayerMaxNum = iLayerMaxNum + 1;

	var answerDiv = document.createElement("div");
	answerDiv.setAttribute("id", "scripOption");
	answerDiv.style.position = "relative";
	var str = 	"<FORM onsubmit='return judgeReply(this);' action='../service' method=post>";
	str = str + "<INPUT type=hidden value=subdis name=serviceid>";
	str = str + "<INPUT type=hidden value=true name=redirect>";
	str = str + "<INPUT type=hidden value="+focusScrip.iRealScripNo+" name=scrip>";
	str = str + "<H3><SPAN>"+focusScrip.senderNum+"</SPAN>正在急切的等待着您的回应,立刻和他/她分享你此刻的心情</H3>";
	//str = str + "<P>给 <EM class=t_bold>"+focusScrip.senderNum+"</EM> 的回复：</P>";
	str = str + "<H4>有话对他/她说:</H4>";
	str = str + "<center><TEXTAREA id=c name=c></TEXTAREA></center>";
	str = str + "<INPUT class=btn type=submit value=马上发送>";
	str = str + "</FORM>";
	answerDiv.innerHTML = str;
	commentDiv.appendChild(answerDiv);
	
	return commentDiv;
}

function judgeReply(form){
	var v = form.c.value.toString(); 
	if(v.length == 0){
		alert("请输入评论内容");
		document.getElementById("c").focus();
		return false;
	}else
	if(v.length > 100){
		alert("评论字数请勿超过100字!");
		document.getElementById("c").focus();
		return false;
	}else{
		return true;
	}
}

function closeAnswer(id){
	var replyDiv = document.getElementById("replyDiv");
	var left = replyDiv.style.left;
	var top = replyDiv.style.top;
	var zIndex = replyDiv.style.zIndex;
	var scrip = document.getElementById(scripIdPrefix + id);
	scrip.parentNode.removeChild(scrip);
	scrip.style.left = left;
	scrip.style.top = top;
	scrip.style.zIndex = zIndex;
	replyDiv.parentNode.removeChild(replyDiv);
	var scripContainer = document.getElementById(scripContainerId);
	scripContainer.appendChild(scrip);
	//hideScripCover();
	changeScripFace(id)
}

function buildFocusScrip(focusScrip){
	hideZoomTip();
	
	var scripBuilder;
	var scripWidth = 319;
	var scripDivHeight = 248;
	if(focusScrip.version == ""){
		scripBuilder = new ScripBuilder2();
		scripDivWidth = 240;
		scripDivHeight = 227;	
	}else{
		scripBuilder = new ScripBuilder3Full();	
		scripDivWidth = 320;
		scripDivHeight = 420;	
	}					
	var topWindow = getTopWindow();
	var doc = topWindow.document;
	showScripCover(doc,iLayerMaxNum-1);
	
	var windowWidth = doc.body.clientWidth ;
	var windowHeight = topWindow.screen.availHeight ;
	
	var position = new Position();
	position.x = (windowWidth-scripDivWidth)/2 - 230;
	position.y = (windowWidth-scripDivWidth)/2 - 300;
	position.z = iLayerMaxNum;
	var fullScrip = scripBuilder.assemble(focusScrip, position);
	return fullScrip;
}

function buildPageIndex(pageContrlId){
	return;
	var pageControlA = document.getElementById(pageContrlId);
	pageControlA.innerHTML = "";
	var previousA = document.createElement("a");
	previousA.setAttribute("href","javascript:previousPage();");
	previousA.innerHTML = "&lt;&lt;";
	pageControlA.appendChild(previousA);
	for(var i = 0; i < pageIndexes.length; i++){
		var a = "";
		if(pageIndex == pageIndexes[i]){
			var a = document.createElement("span");
			var spanText = document.createTextNode(pageIndexes[i]);
			a.appendChild(spanText);
		}else{
			a = document.createElement("a");
			a.setAttribute("href","javascript:setPage("+pageIndexes[i]+");");
			a.innerHTML = pageIndexes[i];
		}
		pageControlA.appendChild(a);
	}
	var nextA = document.createElement("a");
	nextA.setAttribute("href","javascript:nextPage();");
	nextA.innerHTML = "&gt;&gt;";
	pageControlA.appendChild(nextA);
}

function getRamdomPosition_4(left, top, w, h, sw, sh, row, col){
	var positions = new Array(row*col);
	var key = 5;
	var _h = (h-80)/col;
	var _w = (w-sw)/(row-1);
	var rx = w - sw;
	var ry = h - sh;
	var ox = left + rx/2;
	var oy = top + ry/2;
	for(var i = 0; i < col; i++){
		for(var j = 0; j < row; j++){
			var index = i*row+j;
			positions[index] = new Position();
			positions[index].x = sw / 2 + _w * j - sw / 2;
			positions[index].y = 2 + _h / 2 + _h * i - sh / 2 + key * (Math.random() - 0.5);
			positions[index].z = Math.floor(Math.random()*10+0.5); 
		}
	}
	return positions;
}

function getRamdomPosition_5(left, top, w, h, sw, sh, row, col){
	var positions = new Array(row*col);
	var key = 6;
	var _h = (h-50)/col;
	var _w = (w-sw)/(row-1);
	var rx = w - sw;
	var ry = h - sh;
	var ox = left + rx/2;
	var oy = top + ry/2;
	var z  = {0:0,1:1,2:2,3:0,4:2,5:1,6:0}; 
	var _x = (5 * sw - w) / 4;	
	for(var i = 0; i < col; i++){
		for(var j = 0; j < row; j++){
			var index = i*row+j;
			positions[index] = new Position();
			if(i%2 == 0){
				if(j%2 == 0){
					positions[index].x = sw / 2 + _w * j - sw / 2;
				}else{
					positions[index].x = sw / 2 + _w * j - sw / 2 + (j - 3)*0.5*_x;
				}
			}else{
				positions[index].x = sw / 2 + _w * j - sw / 2;
			}
			positions[index].y = 5 + _h / 2 + _h * i - sh / 2 + key * (Math.random() - 0.5);
			if(i%2 == 0){
				positions[index].z = j%2;
			}else{
				positions[index].z = z[j];
			}
		}
	}
	return positions;
}

/******************************************* 纸条事件handler ******************************************/
function judgeAction(id){
	var scrip = document.getElementById(scripIdPrefix+id);
	var scripParent = scrip.parentNode;
	if(scripParent.getAttribute("id") != "scripContainer"){		
		return true;
	}
	return false;
}

//鼠标按下时的处理函数
var downFlag = 0;
function handleDown(id){
	if(judgeAction(id)) return;
	
	var evt = Event.event;
	scripId = scripIdPrefix + id;
	if(document.all){
		document.getElementById(scripId).setCapture();
		scripX = evt.screenX - document.getElementById(scripId).style.pixelLeft;
		scripY = evt.screenY - document.getElementById(scripId).style.pixelTop;

	}
	else if(window.captureEvents){
		window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
		scripX = evt.clientX - parseInt(document.getElementById(scripId).style.left);
		scripY = evt.clientY - parseInt(document.getElementById(scripId).style.top);
	}
	//if(scripId != scripIdPrefix+dbId){
		document.getElementById(scripId).style.zIndex = iLayerMaxNum+1;  
		iLayerMaxNum++;
	//}
}

//鼠标移动时的处理函数
function handleMove(){	
	var evt = Event.event;
	var t_h =0, t_w = 0;
	if(scripId!=''){
		if(document.all){
			document.getElementById(scripId).style.left = evt.screenX - scripX;
			document.getElementById(scripId).style.top = evt.screenY - scripY;
			// t_w = evt.screenX - scripX + 220;
			// t_h = evt.screenY - scripY + 200;
		}
		else if(window.captureEvents){
			var s = document.getElementById(scripId);
			s.style.left = evt.clientX - scripX + "px";
      		s.style.top  = evt.clientY - scripY + "px";
			// t_w = evt.clientX - scripX + 220;
			// t_h = evt.clientY - scripY + 200;
		}
		var t_wrapper = document.getElementById('wrapper');
		// if(t_w>t_wrapper.style.width) t_wrapper.style.width = t_w+"px";
		// if(t_h>t_wrapper.style.height) t_wrapper.style.height = t_h+"px";
	}
}

//鼠标松开时的处理函数
function handleUp(){	
	var evt = Event.event;
	if(scripId!=''){
		var tid = -1;
		tid = scripId.substr(scripIdPrefix.length);
		if(tid>=0) {
			var tag = document.getElementById(scripId);
			i = d13580_scripts_ids[tid];
			d13580_scripts[i].pos_x = parseInt(tag.style.left);
			d13580_scripts[i].pos_y = parseInt(tag.style.top);
			d13580_scripts[i].pos_z = parseInt(tag.style.zIndex);
			f13580_save_desktop();
		}
		if(document.all){
			document.getElementById(scripId).releaseCapture();
			scripId='';
		}
		else if(window.captureEvents){
			window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
			scripId='';
		}
	 }
}

//鼠标双击纸条时的处理函数
function dbrun(id){
	/*
	if(judgeAction(id)) return;
	hideChannelTips("scripFromSms");
	hideChannelTips("scripFromCell");
	
	dbId = id;
	changeScripFace(dbId);
	*/
}

//鼠标点击关闭按钮时的处理函数
function delMessage(id){
	if(judgeAction(id)) return;
	if(!window.confirm('你确定要删除该标签吗？删除后将无法再找回其中的内容！')) return;
	
	var Messageid = scripIdPrefix + id;
	document.getElementById(Messageid).style.display = 'none';
	for(i=0;i<d13580_scripts.length;i++) {
		if(d13580_scripts[i].iRealScripNo == id) {
			d13580_scripts[i] = null; 
			f13580_save_desktop();
			break;
		}
	}
	// hideScripCover();
}

//鼠标点击评论按钮时的处理函数
function showCommit(id){
	window.open("../note.jsp?scrip="+id);
}
//鼠标点击评论按钮时的处理函数
function showCommit_bak(id){
	var scrip = document.getElementById(scripIdPrefix+id);
	var scripParent = scrip.parentNode;
	
	if(scripParent.getAttribute("id") != "scripContainer"){
		return;
	}
	
	var windowWidth = document.body.clientWidth ;
	var windowHeight = window.screen.availHeight ;
	var commentDivWidth = 620;
	var commentDivHeight = 420;
	
	var scripZindex = scrip.style.zIndex;	
	
	scripParent.removeChild(scrip);
	
	var commentDiv = document.createElement("div");
	commentDiv.style.cssText = "position:absolute;background-color:#fff;left:"+((windowWidth-commentDivWidth)/2-230)+"px; top:"+((windowHeight-commentDivHeight)/2-104)+"px; width:"+commentDivWidth+"px; height:"+commentDivHeight+"px; z-index:"+scripZindex+";";
	
	scripParent.appendChild(commentDiv);
	commentDiv.appendChild(scrip);
	
	scrip.style.left = "0px";
	scrip.style.top = "0px";
	
	var commentFrame = document.createElement("iframe");
	commentFrame.setAttribute("src", "../remarks.jsp?scrip="+id+"&p=1");
	commentFrame.style.cssText = "position:absolute; left:320px; top:0px; width:300px; height:"+commentDivHeight+"px;";
	
	commentDiv.appendChild(commentFrame);
}

function showScripCover(doc,zIndex){
	var coverDiv = doc.createElement("div");
	coverDiv.setAttribute("id", "coverDiv");
	var windowWidth = doc.body.scrollWidth ;
	var windowHeight = doc.body.scrollHeight ;
	coverDiv.style.cssText = "position:absolute;background-color:#000;filter:alpha(Opacity=35);opacity: 0.05; left:"+(-230)+"px; top:"+(-104)+"px; width:"+windowWidth+"px; height:"+windowHeight+"px; z-index:"+zIndex+";";	
	coverDiv.innerHTML = "<iframe id='coverFrame' src='javascript:false' scrolling='no' frameborder='0' style='z-index:-1;position:absolute;background-color:#000;filter:alpha(Opacity=35);opacity: 0.05; top:0px; left:0px;width:"+windowWidth+";height:"+windowHeight+";'></iframe>";
	doc.getElementById("scripContainer").appendChild(coverDiv);
	
	setScripCover();	
	Event.observe(window, "resize", setScripCover);
}
function setScripCover(){	
	var windowWidth = document.body.scrollWidth ;
	var windowHeight = document.body.scrollHeight ;
	var cover = document.getElementById("coverDiv");
	if(!cover) return;
	cover.style.width = windowWidth;
	cover.style.height = windowHeight;
	var coverFrame = document.getElementById("coverFrame");
	coverFrame.style.width = windowWidth+"px";
	coverFrame.style.height = windowHeight+"px";
}
function hideScripCover(){
	var doc = document;	
	var coverDiv = doc.getElementById("coverDiv");
	if(coverDiv){
		coverDiv.parentNode.removeChild(coverDiv);
	}
}

Event.observe(document, "mousemove", handleMove);
Event.observe(document, "mouseup", handleUp);

/*************************************************************************************/

function previousPage(){
	var index = pageIndex  - 1;
	if(index >= 1)
		setPage(index);
	else
		alert("已经是第一页了!");
}
function nextPage()
{
	var index = pageIndex + 1;
	if(index <= pageCount)
		setPage(index);
	else
		alert("已经是最后一页了！");
	
}
function firstPage()
{
	setPage(1);
}
function lastPage()
{
	setPage(pageCount);
}
function setPage(index)
{
	pageIndex = index;	
	ajax.invoke(
		appPrefix+"/ScripListServlet?pageSize="+pageSize+"&pageIndex="+pageIndex+"&timemark="+Math.random(),
		"GET",
		true,
		handle
	);
}

/*************************************************************************************/
function getCenterPos(scripObj){
	var pos = [658, 24];
	
	var scripLeft = scripObj.style.left.replace("px","");
	var scripTop = scripObj.style.top.replace("px","");
	var scripWidth = scripObj.getAttribute("clientWidth");
	var scripHeight = scripObj.getAttribute("clientHeight");
	var clientWidth = document.documentElement.clientWidth != 0 ? Math.min(document.documentElement.clientWidth, document.body.clientWidth) : document.body.clientWidth;
	var clientHeight = document.documentElement.clientHeight != 0 ? Math.min(document.documentElement.clientHeight, document.body.clientHeight) : document.body.clientHeight;
	var scrollLeft =  document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft;
	var scrollTop =  document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
	
	pos[0] = Math.max((scrollLeft - 240), Math.min(scripLeft, (scrollLeft + clientWidth - scripWidth - 240)));
	pos[1] = Math.max((scrollTop - 114), Math.min(scripTop, (scrollTop + clientHeight - scripHeight - 114)));
	
	return pos;
}
function changeScripFace(id){
	if(focusFlag == 1){
		showZoomTip();
		focusFlag = 0;
	}else{
		hideZoomTip();
	}
	
	var scripContainer = document.getElementById(scripContainerId);
	var simpleScrip = document.getElementById(scripIdPrefix + id);
	var scripType = simpleScrip.getAttribute("scripType");

	var position = new Position();
	position.x = simpleScrip.style.left.replace("px","");
	position.y = simpleScrip.style.top.replace("px","");
	
	position.z = iLayerMaxNum;
	iLayerMaxNum = iLayerMaxNum + 1;
	for(var i = 0; i < scrips.length; i++){
		if(scrips[i].iRealScripNo == id){
			var scripBuilder;
			if(scripType != "v3simple"){
				scripBuilder = new ScripBuilder3Simple();
				hideScripCover();
			}else if(scrips[i].version == ""){
				scripBuilder = new ScripBuilder2();						
				var topWindow = getTopWindow();
				var doc = topWindow.document;
				showScripCover(doc,iLayerMaxNum-2);
			}else{
				scripBuilder = new ScripBuilder3Full();						
				var topWindow = getTopWindow();
				var doc = topWindow.document;
				showScripCover(doc,iLayerMaxNum-2);
			}
			var fullScrip = scripBuilder.assemble(scrips[i], position);
			scripContainer.removeChild(simpleScrip);
			scripContainer.appendChild(fullScrip);
			var pos = getCenterPos(fullScrip);
			fullScrip.style.left = pos[0]+"px";
			fullScrip.style.top = pos[1]+"px";
			return;
		}
	}
	if(focusScrip != null){
		var scripBuilder;
		if(scripType != "v3simple"){
			scripBuilder = new ScripBuilder3Simple();
			hideScripCover();
		}else if(focusScrip.version == ""){
			scripBuilder = new ScripBuilder2();						
			var topWindow = getTopWindow();
			var doc = topWindow.document;
			showScripCover(doc,iLayerMaxNum-2);
		}else{
			scripBuilder = new ScripBuilder3Full();						
			var topWindow = getTopWindow();
			var doc = topWindow.document;
			showScripCover(doc,iLayerMaxNum-2);
		}
		var fullScrip = scripBuilder.assemble(focusScrip, position);
		scripContainer.removeChild(simpleScrip);
		scripContainer.appendChild(fullScrip);
		return;
	}
}

//登陆后：设置用户昵称
function setUserNickAfterLogin(qqNick){
	var loginLi = document.getElementById("loginLi");
	loginLi.innerHTML = "欢迎您 "+qqNick+"<a href='javascript:logout();'>[请退出]</a>";
}
//注销后：设置登陆链接
function setUserNickAfterLogout(){
	var loginLi = document.getElementById("loginLi");
	loginLi.innerHTML = "欢迎您 <a href='javascript:showLogonFrame();'>[请登陆]</a>";
}
//登陆后：设置“贴字条”的URL
function setSendScripLinkAfterLogin(){
	var pasteBtn = document.getElementById("pasteBtn");
	pasteBtn.setAttribute("href", appPrefix+"/step1.jsp");
}
//注销后：设置“贴字条”的URL
function setSendScripLinkAfterLogout(){
	var pasteBtn = document.getElementById("pasteBtn");
	pasteBtn.setAttribute("href", "javascript:showLogonFrame('/step1.jsp');");
}

function setSendScripLink(isLogin){
	var pasteBtn = document.getElementById("pasteBtn");
	if(pasteBtn && isLogin && isLogin == "true"){		
		pasteBtn.setAttribute("href", appPrefix+"/step1.jsp");
	}else{
		pasteBtn.setAttribute("href", "javascript:showLogonFrame('/step1.jsp');");
	}
}

//登陆成功后的动作：1.隐藏登陆框和蒙板
function loginOK(qqNumber,qqNick){
	closeLoginFrame();
	//setUserNickAfterLogin(qqNick);
	//setSendScripLinkAfterLogin();
	setSendScripLink("true");
}

//登陆成功后的动作：1.隐藏登陆框和蒙板
function logoutOK(){
	//setUserNickAfterLogout();
	//setSendScripLinkAfterLogout();
	setSendScripLink("false");
}

function showChannelTips(id)
{
	var e = arguments[1] || window.event;
	if (!e){
		return false;
	}
	var div = document.getElementById(id);
	if(div){
		var wTipDiv = div.scrollWidth;
		var hTipDiv = div.scrollHeight;
		
		var left = e.x+230;
		var top = e.y+100+30;
		left = document.body.scrollLeft+document.body.clientWidth > left+wTipDiv ? left : left-wTipDiv;
		top = document.body.scrollTop+document.body.clientHeight > top+hTipDiv ? top : top-hTipDiv-35;
		
		div.style.left = left+"px";
		div.style.top = top+"px";
		div.style.position = "absolute";
		div.style.display  = "inline";
		return true;
	}
}

function hideChannelTips(id)
{
	var target = document.getElementById(id);
	if(target){
		target.style.display = "none";
	}
	return true;
}
function searchScrip(focusNum){
	var focusScrip = document.getElementById(scripIdPrefix + focusNum);
	if(focusScrip != undefined && focusScrip){
		var topWindow = getTopWindow();
		var doc = topWindow.document;
		//showScripCover(doc,iLayerMaxNum);
		changeScripFace(focusNum);
		//document.getElementById(scripIdPrefix + focusNum).style.zIndex = iLayerMaxNum + 1;
		//iLayerMaxNum = iLayerMaxNum + 1;
		return;
	}
	ajax.invoke(
		appPrefix+"/ScripSearchServlet?focusNum="+focusNum+"&timemark="+Math.random(),
		"GET",
		true,
		handleSearch
	);
}
function handleSearch(response){
	return;
	var jsonContent = eval("(" + response + ")");
	focusScrip = jsonContent.focusScrip;
	var scripContainer = document.getElementById(scripContainerId);
	//构建焦点显示的字条
	if(focusScrip != undefined){
		if(focusScrip == "2"){
			alert("对不起，您搜索的字条已删除！");
		}else
		if(focusScrip == "0" || focusScrip == "-1"){
			alert("对不起，您搜索的字条不存在！");
		}else{
			var scrip = null;
			if(focusScrip.recvUserNum != "" && focusScrip.recvUserNum == userNum && focusScrip.recvUserNum != focusScrip.senderNum){
				scrip = buildFocusRecvScrip(focusScrip);
			}else{
				scrip = buildFocusScrip(focusScrip);
			}
			if(scrip != null){
				scripContainer.appendChild(scrip);
			}
		}
	}
}