﻿/*<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<script language="JavaScript" src="ajaxBase.js"></script>
	<script language="JavaScript">
		var ajaxReplyConfig=new Array();
		ajaxReplyConfig['imgroot']='.';
		ajaxReplyConfig['scriptroot']='.';
	</script>
</head><body><script language="JavaScript">*/
//var ajaxReplyEntriesID=67;
// var ajaxReplyEntryReplyTo=0;

// document.writeln('<span id="spnAjaxReplyEntries">正在讀取回響內容...</span>');

// ajaxReplyEntriesStart();

function ajaxReplyEntriesStart() {
	AjaxAddJob("所有回響",ajaxReplyConfig['scriptroot']+'/ajaxReplyGet.php?r='+Math.floor(Math.random()*9999),'POST','id='+ajaxReplyEntriesID,ajaxReplyEntriesCallback);
}

function ajaxReplyEntryRequestCode() {
	AjaxAddJob('回響驗証碼',ajaxReplyConfig['scriptroot']+'/ajaxReplyGetVld.php?r='+Math.floor(Math.random()*9999),'GET',null,ajaxReplyValidationCallback);
}

function ajaxReplyEntriesCallback(xml) {
	spn=AjaxUtilGetElement('spnAjaxReplyEntries');
	if (xml==null)
		spn.innerHTML="無法讀取資料";
	else {
		err=xml.getElementsByTagName("error");
		if (err.length) {
			spn.innerHTML=err[0].firstChild.nodeValue;
		} else {
			var items=xml.getElementsByTagName("entry");
			var txt="";
			var txt3="";
			var url;
			var re=/http[s]?:\/\/[a-z0-9.=~&#_/%\-\?]*/i;
			var re2=/</i;
			var re3=/>/i;
			var re4=new RegExp("\\n","g");
			var infoAdded=false;
			var entries=new Array();
			var parents=new Array();
			var entrycount=0;
			var spn2;
			
			spn.innerHTML='';
			
			for (c=0; c<items.length; c++) {
				var div=document.createElement("div");
				div.style.border='thin inset';
				div.style.margin='0 10px 10px';
				div.style.padding='2px 2px 2px 2px';
				
				txt='<span id="spnAjaxReplyEntryTitle'+items[c].getAttribute("id")+'" style="font-weight: bold">';
				infoAdded=false;
				url=items[c].getAttribute("url").replace(re2,'<').replace(re3,'>');
				if (url) txt+='<a href="'+(url.substr(0,7)=='http://'?'':'http://')+url+'" target="_blank">';
				txt+=items[c].getAttribute("author").replace(re2,'<').replace(re3,'>');
				if (url) txt+='</a>';
				txt+=' 發佈於 '+items[c].getAttribute("time")+'</span> ';
				
				if (items[c].getAttribute("ua_bn")!='') {
					infoAdded=true;
					txt2=items[c].getAttribute("ua_bn");
					switch (txt2) {
						case 'firefox': txt2='<img src="'+ajaxReplyConfig['imgroot']+'/firefox.gif" width="16px"/>'; break;
						case 'ie'/*: case 'ie4': case 'ie5x-6': case 'ieMac'*/: txt2='<img src="'+ajaxReplyConfig['imgroot']+'/ie.gif" width="16px"/>'; break;
						case 'op': txt2='<img src="'+ajaxReplyConfig['imgroot']+'/opera.gif" width="16px"/>'; break;
						case 'cam': txt2='<img src="'+ajaxReplyConfig['imgroot']+'/camino.gif" width="16px"/>'; break;
						case 'saf': txt2='<img src="'+ajaxReplyConfig['imgroot']+'/safari.gif" width="16px"/>'; break;
						case 'chr': txt2='<img src="'+ajaxReplyConfig['imgroot']+'/chrome.gif" width="16px"/>'; break;
						case 'mozilla': txt2='<img src="'+ajaxReplyConfig['imgroot']+'/mozilla.jpg" width="16px"/>'; break;
					}
					txt+=(txt2+' '+items[c].getAttribute("ua_bv")+' ');
				}
				if (items[c].getAttribute("ua_on")!='') {
					txt2=items[c].getAttribute("ua_on");
					switch (txt2) {
						case 'win': txt2='<img src="'+ajaxReplyConfig['imgroot']+'/xp.jpg" width="16px"/>'; break;
						case 'mac': txt2='<img src="'+ajaxReplyConfig['imgroot']+'/osx.gif" width="16px"/>'; break;
					}
					txt+=(txt2+' '+items[c].getAttribute("ua_ov"));
				}
				
				var ip=items[c].getAttribute("ip");
				if (ip!='') txt+=' @'+ip;
				
				
				txt+=' [<a href="javascript:ajaxReplyEntryReply('+items[c].getAttribute("id")+')">回覆</a>]\n<br/>';
				msg=items[c].firstChild.nodeValue.replace(re2,'<').replace(re3,'>').replace(re4,'<br/>\n');

				txt+=msg+'<br/>\n';
				
				txt+='</div><br/>\n';
				txt+='<span id="spnAjaxReplyEntry'+items[c].getAttribute("id")+'"></span>';
				div.innerHTML=txt;
				
				if (items[c].getAttribute("parentid")==0) {
					spn.appendChild(div);
				} else {
					AjaxUtilGetElement('spnAjaxReplyEntry'+items[c].getAttribute("parentid")).appendChild(div);
				}
			}
			
			div=document.createElement('span');
			div.innerHTML='<br/><div class="serendipity_commentsTitle">填寫新回響</div>\
<div class="serendipity_entry serendipity_entry_author_Stark-Wong serendipity_entry_author_self">\
<form name="frmAjaxReplyEntry" onSubmit="return ajaxReplyEntrySubmit()">\
<table cellpadding="0" cellspacing="0">\
	<tr><td>暱稱 (必需)：</td><td><input type="text" name="nick"/></td></tr>\
	<tr><td nowrap="nowrap">電郵地址 (不公開)：</td><td><input type="text" name="email"/></td></tr>\
	<tr><td>網址：</td><td><input type="text" name="url"/></td></tr>\
	<tr><td>回覆至：</td><td><span id="spnAjaxReplyEntryTo">頂層</span> [<a href="javascript:ajaxReplyEntryReset()">重設</a>]</td></tr>\
	<tr><td style="vertical-align: top">內容：</td><td><textarea name="content" cols="50" rows="5"></textarea></td></tr>\
	<tr><td>認證碼：</td><td><input type="text" name="code" size="4" maxlength="4"/> <a href="javascript:ajaxReplyEntryRequestCode()"><span id="spnAjaxReplyEntryValidation"></span></a></td></tr>\
	<tr><td colspan="2"><input type="submit" disabled name="submit" value="提交"/></td></tr>\
</table>\
</form>\
小熊 AJAX 回響系統 1.0\
</div>\
';
			spn.appendChild(div);
			ajaxReplyEntryRequestCode();
		}
	}
}

function ajaxReplyEntryReply(id) {
	AjaxUtilGetElement('spnAjaxReplyEntryTo').innerHTML=AjaxUtilGetElement('spnAjaxReplyEntryTitle'+id).innerHTML;
	ajaxReplyEntryReplyTo=id;
}

function ajaxReplyEntryReset() {
	AjaxUtilGetElement('spnAjaxReplyEntryTo').innerHTML='頂層';
	ajaxReplyEntryReplyTo=0;
}

function ajaxReplyValidationCallback(xml) {
	spn=AjaxUtilGetElement('spnAjaxReplyEntryValidation');
	if (xml==null)
		spn.innerHTML="錯誤";
	else {
		err=xml.getElementsByTagName("error");
		if (err.length) {
			spn.innerHTML=err[0].firstChild.nodeValue;
		} else {
			var items=xml.getElementsByTagName("validation");
			
			spn.innerHTML=items[0].firstChild.nodeValue;
			document.forms['frmAjaxReplyEntry']['submit'].disabled=false;
		}
	}
}

function ajaxReplyEntrySubmit() {
	frm=document.forms['frmAjaxReplyEntry'];
	if (frm['nick'].value=='')
		alert('名字不可留空！');
	else if (frm['content'].value=='')
		alert('內容不可留空！');
	else if (frm['code'].value=='')
		alert('請填寫驗証碼！');
	else {
		var post;
		frm['submit'].disabled=true;
		
		post='nick='+frm['nick'].value+'&email='+frm['email'].value+'&url='+frm['url'].value+'&entryid='+ajaxReplyEntriesID+'&replyto='+ajaxReplyEntryReplyTo+'&code='+frm['code'].value+'&content='+frm['content'].value;
		AjaxAddJob("回響新項目",ajaxReplyConfig['scriptroot']+"/ajaxReplyPost.php?r="+Math.floor(Math.random()*9999),"POST",post,ajaxReplyEntryPostCallback);
	}
	return false;
}

function ajaxReplyEntryPostCallback(xml) {
	if (xml==null)
		alert("很抱歉，伺服器出現問題導致傳送失敗。");
	else {
		code=xml.getElementsByTagName("result")[0].firstChild.nodeValue;
		switch (code) {
			case '0': // Success
				alert("您的回響已成功送出！");
				setTimeout('ajaxReplyEntriesStart()',500);
				return;
				break;
			case '1': // Fail: Wrong Code
				alert("驗証碼不正確！");
				break;
			case '2': // Fail: Database
				alert("很抱歉，伺服器出現問題導致傳送失敗。");
				break;
			default:
				alert("Unknown reply: "+code);
		}
	}
}
//</script></body></html>