var xmlHttp;
var ms=0;

// 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>请在此输入。</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);	
		reflow();

}

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;
	reflow();
	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()
{
	showmenubig('blogmenuedit',738,469,true);
	initeditor(); // for firefox reason, editor can be initialized only when it appears
	showmenubig('blogmenuedit',738,469,false);
	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 x,y;

	if (document.documentElement.clientWidth==0)
	{
		x=(parseInt(document.body.clientWidth)-w)/2 +"px";
	}
	else
	{
		x=(parseInt(document.documentElement.clientWidth)-w)/2 +"px";
	}

	if (document.documentElement.clientHeight==0)
	{
		y=(parseInt(document.body.clientHeight)-w)/2 +"px";
	}
	else
	{
		y=(parseInt(document.documentElement.clientHeight)-h)/2 +"px";
	}

	obj1.style.left=x;
	obj1.style.top=y;

	if (onoff==true)
	{
		obj1.style.display="block";
	}

	if (onoff==false)
	{
		obj1.style.display="none";
	}

}

// show login form
function showmenulogin(onoff)
{

	var obj=document.getElementById("blogmenulogin");
	var x;

	if (document.documentElement.clientWidth==0)
	{
		x=(parseInt(document.body.clientWidth)-328)/2 +"px";
	}
	else
	{
		x=(parseInt(document.documentElement.clientWidth)-328)/2 +"px";
	}

	var y="230px";
	obj.style.left=x;
	obj.style.top=y;

	//alert(x+","+y);
	if (onoff==true)
	{
		obj.style.display="block";
	}

	if (onoff==false)
	{
		obj.style.display="none";
	}

}



function showmenubig(idname,w,h,onoff)
{
	var obj1=document.getElementById(idname);
	var x,y;

	if (document.documentElement.clientWidth==0)
	{
		x=(parseInt(document.body.clientWidth)-w)/2 +"px";
	}
	else
	{
		x=(parseInt(document.documentElement.clientWidth)-w)/2 +"px";
	}
	y="230px";

	var y=document.body.scrollTop + document.documentElement.scrollTop + (parseInt(window.screen.availHeight)-h)/2 -50  + "px";
	obj1.style.left=x;
	obj1.style.top=y;


	if (onoff==true)
	{
		obj1.style.display="block";
	}

	if (onoff==false)
	{
		obj1.style.display="none";
	}
}



// Fundamental function 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();
	//alert('Console:' + url);
	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("main");
			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 + ")\">{yes}</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="loading...";
}


// 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.getElementsByTagName("body")[0].innerHTML=article; 
			reflow();
			//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>");
			//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();
		//alert(url);
		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;
			//alert(message);
			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);
		scroll(0,0);
		{

			var deletebutton=document.getElementById("blogcommentdeletebutton");
			deletebutton.innerHTML="<span onclick=\"commentdodel(" + id + "," + pageno +")\">{yes}</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;
			//alert(message);

			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 and empty the editor first

function addContent()
{
		var editor = document.getElementById("editor").contentWindow; 
		editor.document.getElementsByTagName("body")[0].innerHTML=""; 
		var titleobj=document.getElementById("title");
		titleobj.value="";
		var idobj=document.getElementById("article_id");
		idobj.value="";
		reflow();
		editor.focus();
		showmenubig('blogmenuedit',738,469,true);
}

// 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;

		if (title==""||content=="")
		{
			return false;
		}

		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);
					scroll(0,0);
				}
				else
				{
					alert("存储日志时出现错误，这可能由于网络速度过低。请重试。");
				}
		}
	}
}


// switch title of blog.asp

function changetitle(obj,switcher)
{
	if (switcher==true)
	{
		obj.src="images/title1.gif";
	}
	else
	{
		obj.src="images/title.gif";
	}

}


// drag and drop

var x,y 
var drag_=false 
var D=new Function('obj','return document.getElementById(obj);') 
var IE=new Function('','if(navigator.appName.indexOf("Explorer")>=0)return 1;if(navigator.appName.indexOf("Netscape")>=0)return 2') 
function Move_obj(obj){//1 
                     D(obj).onmousedown=function(e){drag_=true//4 
                              with(this){style.position="absolute";temp1=offsetLeft;temp2=offsetTop;//5 
                              if(IE()==1){x=event.clientX;y=event.clientY//6 
                                  document.onmousemove=function(e){//7 
                                        if(drag_==false)return false 
                                     with(this){style.left=temp1+event.clientX-x+"px";style.top=temp2+event.clientY-y+"px"} 
                                     }//7 
                              }//6 
                              if(IE()==2){x=e.pageX;y=e.pageY;//8 
                                  document.onmousemove=function(e){//9 
                                        if(drag_==false)return false 
                                     with(this){style.left=temp1+e.pageX-x+"px";style.top=temp2+e.pageY-y+"px"} 
                                     }//9 
                              }//8 
                        }//5 
           document.onmouseup=new Function("drag_=false") 
                     }//4 
}//1 


function reflow()
{
	document.body.style.zoom = 1.1;
	document.body.style.zoom = '';		
}


function doquickpaging(segment)
{
    var targetpage=document.getElementById("quickpager").value;
	if (targetpage=="")  return false;
	if (isNaN(targetpage)==true) return false;  // input is not a numner
	requestContent("all",targetpage,segment,'');
}


function doquickpaging1(segment)
{
    var targetpage=document.getElementById("quickpager1").value;
	if (targetpage=="")  return false;
	if (isNaN(targetpage)==true) return false;  // input is not a numner
	requestContent("all",targetpage,segment,'');
}
