// fundamental UI funcions coding by landy zhang
// last update: 2007-12-10

var xmlHttp;

// Initialize text editor

function initeditor()
{
    var editor;
    editor = document.getElementById("editor").contentWindow; 
	editor.document.open();
	editor.document.writeln("<html><head>");
	editor.document.writeln("<link href=\"css/editor.css\" rel=\"stylesheet\" type=\"text/css\" />");
	editor.document.writeln("</head><body class=\"editorstyle\">请在此输入内容。</body></html>");
	editor.document.onclick = "alert()";
	editor.document.close();
	editor.document.designMode ="On";
	editor.document.contentEditable = true;
	editor.document.charset="gb2312";
	editor.focus();
}

function t(s1,s2,s3)
{
		var editor;
	    editor = document.getElementById("editor").contentWindow; 
        editor.document.execCommand(s1,s2,s3);
}

function ViewSource()   // switch to textarea
{
        var content = document.getElementById("editor").contentWindow.document.getElementsByTagName("body")[0].innerHTML;
		var textareaobj=document.getElementById("textareaobj");
		textareaobj.value=content;
		textareaobj.style.display="block"; 
		document.getElementById("editor").style.display="none";
		var switchbutton=document.getElementById("switchbutton");
		switchbutton.innerHTML="<button onclick=\"copy2editor()\">编辑器</button>";

}

function insertLink()
{
	var parm = prompt("链接地址：", "http://")
	t("CreateLink",false,parm);
}

function insertImage()
{
	var parm = prompt("图像地址：", "http://")
	t("InsertImage",false,parm);
}    


function copy2editor()  // switch to editor
{
	var textareaobj=document.getElementById("textareaobj");
	document.getElementById("editor").contentWindow.document.getElementsByTagName("body")[0].innerHTML=textareaobj.value;
	textareaobj.style.display="none";  
	document.getElementById("editor").style.display="block";
	var switchbutton=document.getElementById("switchbutton");
	switchbutton.innerHTML="<button onclick=\"ViewSource()\" >源代码</button>";
}

// ------------------------------------------------------------------------------------------------------------------------------
// Initialize Fundamental UI
function boot()
{
	requestContent("all",1,0,'');
}

// fundamental XMLHTTP request generator

function createXMLHttpRequest()
{
	if (window.ActiveXObject)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	else if (window.XMLHttpRequest)
		{
			xmlHttp=new XMLHttpRequest();
		}
}

// show on-off the menu
function showmenu(idname,w,h,onoff)
{

	var obj1=document.getElementById(idname);
	var obj2=document.getElementById("blogmenusmallshadow");
	var x=(parseInt(window.screen.availWidth)-w)/2 +"px";
	var y=document.documentElement.scrollTop + (parseInt(window.screen.availHeight)-h)/2 + "px";
	obj1.style.left=x;
	obj1.style.top=y;
	obj2.style.left=x;
	obj2.style.top=y;


	if (onoff==true)
	{
		obj1.style.display="block";
		obj2.style.display="block";
	}

	if (onoff==false)
	{
		obj1.style.display="none";
		obj2.style.display="none";
	}

}

function showmenubig(idname,w,h,onoff)
{

	var obj1=document.getElementById(idname);
	var obj2=document.getElementById("blogmenubigshadow");
	var x=(parseInt(window.screen.availWidth)-w)/2 +"px";
	var y=document.documentElement.scrollTop + (parseInt(window.screen.availHeight)-h)/2 + "px";
	obj1.style.left=x;
	obj1.style.top=y;
	obj2.style.left=x;
	obj2.style.top=y;


	if (onoff==true)
	{
		obj1.style.display="block";
		obj2.style.display="block";
	}

	if (onoff==false)
	{
		obj1.style.display="none";
		obj2.style.display="none";
	}

}


// Fundamental request to retrieve logs
function requestContent(type,parameter1,parameter2,parameter3)
{

	if (type=="")
	{
		return false;
	}
	createXMLHttpRequest();
	xmlHttp.onreadystatechange=handleContent;
	var url="blog_feed.asp?requesttype=" + type + "&parameter1=" + parameter1 + "&parameter2=" + parameter2 + "&parameter3=" + parameter3 + "&now=" + new Date().getTime();
	xmlHttp.open("GET", url , true);
	xmlHttp.send(null);

	showmenu('blogmenuloading',282,202,true);

}

// Retrieve and render logs
function handleContent()
{
	
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status == 200)
		{
			var output=xmlHttp.responseText;
			var contentarea=document.getElementById("right");
			showmenu('blogmenuloading',282,202,false);
			contentarea.innerHTML=output;
		}
	}
}

function login()
{

	var user=document.getElementById("user").value;
	var password=document.getElementById("password").value;

	if (user=="" || password=="")
	{
		return false;
	}

	createXMLHttpRequest();
	var remember=document.getElementById("remember").checked;
	var url="user_login.asp?user=" + escape(user) + "&password=" + escape(password) + "&remember=" + remember +"&now=" + new Date().getTime();
	showmenu('blogmenulogin',282,202,false);
	xmlHttp.open("GET",url,true);
	xmlHttp.onreadystatechange=logincallback;
	xmlHttp.send(null);
	showmenu('blogmenulogging',282,202,true);	

}


function logincallback()
{
	if (xmlHttp.readyState==4)
	{
		if (xmlHttp.status==200)
			{
					showmenu('blogmenulogging',282,202,false);
					var message=xmlHttp.responseText;
					if (message=="error")
					{
						showmenu('blogmenuloginerror',282,202,true);
						return false;
					}
					else
					{
						document.getElementById("user").value="";
						document.getElementById("password").value="";
						showmenu('blogmenuloginsuccess',282,202,true);
					}
			}

	}

}

function logout()
{
	createXMLHttpRequest();
	var url="user_logout.asp?now=" + new Date().getTime();

	showmenu('blogmenuexiting',282,202,true);

	xmlHttp.open("GET",url,true);
	xmlHttp.onreadystatechange=logoutcallback;
	xmlHttp.send(null);
}

function logoutcallback()
{
	if (xmlHttp.readyState==4)
	{
		if (xmlHttp.status==200)
			{			
				showmenu('blogmenuexiting',282,202,false);
				var message=xmlHttp.responseText;
				var messageArea=document.getElementById("message");
				if (message=="ok")
				{
					showmenu('blogmenuexit',282,202,true);
				}				
			}
	}

}



// Delete log
function del(id)
{
		showmenu('blogmenuconfirm',282,202,true);
		{

			var deletebutton=document.getElementById("blogdeletebutton");
			deletebutton.innerHTML="<span onclick=\"dodel(" + id + ")\">{确定}</span>";

		}
}


function dodel(id)
{
		showmenu('blogmenuconfirm',282,202,false);	
		createXMLHttpRequest();
		var url="blog_del.asp?id=" + id + "&now=" + new Date().getTime();
		xmlHttp.open("GET",url,true);
		xmlHttp.onreadystatechange=delcallback;
		xmlHttp.send(null);

}


// Delete callback
function delcallback()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status == 200)
		{
			var message=xmlHttp.responseText;
			if(message=="ok")
			{
				showmenu('deletesuccess',282,202,true);				
			}
		}
	}
}


// modify log
function modify(id,pageno)
{
	createXMLHttpRequest();
	xmlHttp.onreadystatechange=modifyshowcallback;
	var url="blog_modify_feed.asp?id="+id+"&now=" + new Date().getTime();
	xmlHttp.open("GET", url , true);
	xmlHttp.send(null);
	showmenubig('blogmenuedit',738,469,true);
	var contentarea = document.getElementById("editor").contentWindow.document.getElementsByTagName("body")[0];
	contentarea.innerHTML="正在加载...";
}


// display content in editor window
function modifyshowcallback()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status == 200)
		{
			var content=xmlHttp.responseText;

			// deal and split result into segment, title, segment and content, driving the droplist, title input and content
			// NOTICE
			// it needs an encode string to split the result. please add filter to this string in input form in future

			var result=content.split(",,,,,Esr^P46,,,,,");
			var title=result[0];
			var segment=result[1];
			var privilege=result[2];
			var article=result[3];
			var id=result[4];

			// id
			var idobj=document.getElementById("article_id");
			idobj.value=id;

			// title
			var titleobj=document.getElementById("title");
			titleobj.value=title;
			
			// segment
			var segmentobj=document.getElementById("segment");
			for(var i=0;i<segmentobj.options.length;i++)
			{
				if(segmentobj.options[i].value == segment){
					segmentobj.options[i].selected = true;
				}
			}

			// privilege
			var privilegeobj=document.getElementById("privilege");
			for(var i=0;i<privilegeobj.options.length;i++)
			{
				if(privilegeobj.options[i].value == privilege){
					privilegeobj.options[i].selected = true;
				}
			}

			// article
			var editor = document.getElementById("editor").contentWindow; 
			editor.document.open();
			editor.document.writeln("<html><head>");
			editor.document.writeln("<link href=\"/blog/css/editor.css\" rel=\"stylesheet\" type=\"text/css\" />");
			editor.document.writeln("</head><body class=\"editorstyle\">");
			editor.document.writeln(article);
			editor.document.writeln("</body></html>");
			editor.document.close();
			editor.document.designMode ="On";
			editor.document.contentEditable = true;
			editor.document.charset="gb2312";
			editor.focus();
		}
	}
}

// Send comment to server using POST
function sendComment(id,pageno)
{
		var comment= document.getElementById("commenttext").value;
		if (comment=="")
		{
			return false;
		}
		comment=escape(comment);
		createXMLHttpRequest();
		var url="comment=" + comment + "&id=" + id + "&pageno=" + pageno + "&now=" + new Date().getTime();
		xmlHttp.open("POST","comment_add.asp",true);
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		xmlHttp.onreadystatechange=commentaddcallback;
		xmlHttp.send(url);
}

// Comment add callback
function commentaddcallback()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status == 200)
		{
			var message=xmlHttp.responseText;
			if(message!="error")
			{
				var result=message.split(",");
				var pageno=result[1];
				var id=result[2];
				var segment=result[3];
				requestContent("all",pageno,segment,id);
			}
		}
	}
}

// Comment delete
function commentDel(id,pageno)
{
		showmenu('blogmenucommentconfirm',282,202,true);
		{

			var deletebutton=document.getElementById("blogcommentdeletebutton");
			deletebutton.innerHTML="<span onclick=\"commentdodel(" + id + "," + pageno +")\">{确定}</span>";

		}
}


function commentdodel(id,pageno)
{
		createXMLHttpRequest();
		showmenu('blogmenucommentconfirm',282,202,false);
		var url="comment_del.asp?id=" + id + "&pageno=" + pageno + "&now=" + new Date().getTime();
		xmlHttp.open("GET",url,true);
		xmlHttp.onreadystatechange=commentdelcallback;
		xmlHttp.send(null);
}

//Comment delete callback
function commentdelcallback()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status == 200)
		{
			var message=xmlHttp.responseText;

			if(message!="error")
			{
				var result=message.split(",");
				var pageno=result[1];
				var id=result[2];
				var segment=result[3];
				requestContent("all",pageno,segment,id);
			}
		}
	}
}

// Live Search
function dosearch()
{
		var keyword= document.getElementById("keyword").value;
		keyword=keyword.replace(/(^\s*)|(\s*$)/g,"");
		if (keyword=="")
		{
			return false;
		}
		requestContent('search',1,escape(keyword),'');
}


// Add log

function addContent()
{
	showmenubig('blogmenuedit',738,469,true);
	initeditor();  
	// clear the input form
	var article_id=document.getElementById("article_id");
	var title=document.getElementById("title");
	article_id.value="";
	title.value="";
}

// Add log to DB
function sendDocument()
{
		var content = document.getElementById("editor").contentWindow.document.getElementsByTagName("body")[0].innerHTML;
		var title= document.getElementById("title").value;
		var segment= document.getElementById("segment").value;
		var privilege= document.getElementById("privilege").value;
		var article_id= document.getElementById("article_id").value;

		content=escape(content);
		title=escape(title);
		createXMLHttpRequest();
		var url="content=" + content + "&title=" + title + "&segment=" + segment + "&privilege=" + privilege + "&article_id=" + article_id + "&now=" + new Date().getTime();
		xmlHttp.open("POST","blog_add2db.asp",true);
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		xmlHttp.onreadystatechange=sendDocumentCallBack;
		xmlHttp.send(url);
}

// Add log call back
function sendDocumentCallBack()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status == 200)
		{
				var message=xmlHttp.responseText;
				if (message=="ok")
				{
					showmenubig('blogmenuedit',738,469,false);
					showmenu('addsuccess',282,202,true);
				}
				else
				{
					alert("存储日志时出现错误，这可能由于网络速度过低。请重试。");
				}
		}
	}
}
