﻿var ajaxGuestbookCurPage=0;

document.writeln('<div id="spnAjaxGuestbook" style="width: '+ajaxGuestbookConfig['width']+'px"><img src="'+ajaxGuestbookConfig['scriptroot']+'/ajax-loader.gif" alt="正在讀取留言板內容..." /></div>');

ajaxGuestbookStart();

function ajaxGuestbookStart() {
	AjaxAddJob("留言板",ajaxGuestbookConfig['scriptroot']+'/ajaxGuestbookRead.php?r='+Math.floor(Math.random()*9999),'GET',null,ajaxGuestbookCallback);
}

function ajaxGuestbookRequestCode() {
	AjaxAddJob('留言板驗証碼',ajaxGuestbookConfig['scriptroot']+'/ajaxGuestbookGetVld.php?r='+Math.floor(Math.random()*9999),'GET',null,ajaxGuestbookValidationCallback);
}

function ajaxGuestbookShow(id) {
	AjaxAddJob('留言板項目 '+id,ajaxGuestbookConfig['scriptroot']+'/ajaxGuestbookRead.php?r='+Math.floor(Math.random()*9999),'POST','id='+id,ajaxGuestbookShowCallback);
}

function ajaxGuestbookSwitchPage(page) {
	ajaxGuestbookCurPage=page;
	AjaxAddJob('留言板第 '+(page+1)+' 頁',ajaxGuestbookConfig['scriptroot']+'/ajaxGuestbookRead.php?r='+Math.floor(Math.random()*9999),'POST','page='+page,ajaxGuestbookCallback);
}

function ajaxGuestbookCallback(xml) {
	spn=AjaxUtilGetElement('spnAjaxGuestbook');
	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 url;
			var re=/http[s]?:\/\/[a-z0-9.=~&#_/%\-]*/i;
			var re2=/</i;
			var re3=/>/i;
			var re4=/\n/i;
			var itemCount=xml.getElementsByTagName("entrycount")[0].firstChild.nodeValue;
			var pageCount=Math.ceil(itemCount/5);
			var infoAdded=false;
			
			for (c=0; c<items.length; c++) {
				txt+="<strong>";
				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].getElementsByTagName('author')[0].firstChild.nodeValue.replace(re2,'<').replace(re3,'>');
				if (url) txt+='</a>';
				txt+=' 於 '+items[c].getAttribute("time")+' 的留言：</strong>\n<br/>';
				msg=items[c].getElementsByTagName('content')[0].firstChild.nodeValue.replace(re,'[url]').replace(re4,'<br/>\n').replace(re2,'<').replace(re3,'>');
				if (msg.length>ajaxGuestbookConfig['showlength'] || msg.indexOf('[url]')>-1) msg=msg.substr(0,ajaxGuestbookConfig['showlength'])+'<a href="javascript:ajaxGuestbookShow('+items[c].getAttribute("id")+')">...</a>';
				
				txt+=msg+' <a href="javascript:ajaxGuestbookCompose(\''+items[c].getElementsByTagName('author')[0].firstChild.nodeValue+'\')">回覆</a><br/>\n';
				if (items[c].getAttribute("ua_bn")!='') {
					infoAdded=true;
					txt2=items[c].getAttribute("ua_bn");
					switch (txt2) {
						case 'firefox': txt2='<img src="'+ajaxGuestbookConfig['imgroot']+'/firefox.gif" width="16px"/>'; break;
						case 'ie'/*: case 'ie4': case 'ie5x-6': case 'ieMac'*/: txt2='<img src="'+ajaxGuestbookConfig['imgroot']+'/ie.gif" width="16px"/>'; break;
						case 'op': txt2='<img src="'+ajaxGuestbookConfig['imgroot']+'/opera.gif" width="16px"/>'; break;
						case 'cam': txt2='<img src="'+ajaxGuestbookConfig['imgroot']+'/camino.gif" width="16px"/>'; break;
						case 'chr': txt2='<img src="'+ajaxGuestbookConfig['imgroot']+'/chrome.gif" width="16px"/>'; break;
						case 'saf': txt2='<img src="'+ajaxGuestbookConfig['imgroot']+'/safari.gif" width="16px"/>'; break;
						case 'mozilla': txt2='<img src="'+ajaxGuestbookConfig['imgroot']+'/mozilla.jpg" width="16px"/>'; break;
					}
					txt+=(txt2+' '+items[c].getAttribute("ua_bv")+' ');
				}
				if (items[c].getAttribute("ua_on")!='') {
					infoAdded=true;
					txt2=items[c].getAttribute("ua_on");
					switch (txt2) {
						case 'win': txt2='<img src="'+ajaxGuestbookConfig['imgroot']+'/xp.jpg" width="16px"/>'; break;
						case 'mac': txt2='<img src="'+ajaxGuestbookConfig['imgroot']+'/osx.gif" width="16px"/>'; break;
					}
					txt+=(txt2+' '+items[c].getAttribute("ua_ov"));
				}
				if (infoAdded) txt+='<br/>';
				txt+='<br/>\n';
			}
			txt+='<a href="javascript:ajaxGuestbookCompose(\'\')">新留言</a> ';
			txt+=(ajaxGuestbookCurPage==0?'&lt;&lt; ':'<a href="javascript:ajaxGuestbookSwitchPage(0)">&lt;&lt;</a> ');
			txt+=(ajaxGuestbookCurPage==0?'&lt; ':'<a href="javascript:ajaxGuestbookSwitchPage('+(ajaxGuestbookCurPage-1)+')">&lt;</a> ');

			txt+='<a href="javascript:ajaxGuestbookSwitchPage('+ajaxGuestbookCurPage+')">';
			txt+=(ajaxGuestbookCurPage+1)+"/"+pageCount+'('+itemCount+')';
			txt+='</a> ';
			
			txt+=(ajaxGuestbookCurPage>=(pageCount-1)?'&gt; ':'<a href="javascript:ajaxGuestbookSwitchPage('+(ajaxGuestbookCurPage+1)+')">&gt;</a> ');
			txt+=(ajaxGuestbookCurPage>=(pageCount-1)?'&gt;&gt; ':'<a href="javascript:ajaxGuestbookSwitchPage('+(pageCount-1)+')">&gt;&gt;</a> ');
			
			txt+='<br/>\n小熊 AJAX 留言板 1.2';
			if (ajaxGuestbookConfig['adminlink']!='') txt+=' [<a href="'+ajaxGuestbookConfig['adminlink']+'">管理</a>]';
			
			spn.innerHTML=txt;
		}
	}
}

function ajaxGuestbookCompose(reply) {
	spn=AjaxUtilGetElement('spnAjaxGuestbook');
	nick=AjaxUtilGetCookie('ajaxGuestbookSavedNick');
	email=AjaxUtilGetCookie('ajaxGuestbookSavedEMail');
	url=AjaxUtilGetCookie('ajaxGuestbookSavedUrl');
	
	txt='<strong>填寫留言</strong><br/>\
<form name="frmAjaxGuestbook" method="POST" onSubmit="return ajaxGuestbookSend()">\
名字 (必需)：<br/><input type="TEXT" name="nick" value="'+(nick==null?'':nick)+'" style="width: '+ajaxGuestbookConfig['width']+'px"/><br/>\n\
電郵 (不公開)：<br/><input type="TEXT" name="email" value="'+(email==null?'':email)+'" style="width: '+ajaxGuestbookConfig['width']+'px"/><br/>\n\
網站：<br/><input type="TEXT" name="url" value="'+(url==null?'':url)+'" style="width: '+ajaxGuestbookConfig['width']+'px"/><br/>\n\
內容：<br/>\n<textarea name="comment" style="width: '+ajaxGuestbookConfig['width']+'px" rows="5">'+(reply==''?'':'回應 '+reply+' 的留言：\n')+'</textarea><br/>\n\
驗証碼：<input type="TEXT" name="validation" value="" maxlength="4" size="4" style="width: 40px"/> <span id="spnAjaxGuestbookValidation">請稍候...</span><br/>\n\
<input type="CHECKBOX" name="save" id="spnAjaxGuestbookSave" style="width: 16px" '+(nick==null?'':'checked')+'/><label for="spnAjaxGuestbookSave">在本機儲存名字</label><br/>\n\
<input type="SUBMIT" name="submit" value="送出" style="width: 40px" disabled/> <input type="BUTTON" value="取消" style="width: 40px" onClick="ajaxGuestbookStart()"/><br/>\n\
</td></tr></table>\
';
	spn.innerHTML=txt;
	
	ajaxGuestbookRequestCode();
}

function ajaxGuestbookSend() {
	frm=document.forms['frmAjaxGuestbook'];
	if (frm['nick'].value=='')
		alert('名字不可留空！');
	else if (frm['comment'].value=='')
		alert('內容不可留空！');
	else if (frm['validation'].value=='')
		alert('請填寫驗証碼！');
	else {
		var post;
		frm['submit'].disabled=true;
		
		if (frm['save'].checked) {
			AjaxUtilSetPersistentCookie('ajaxGuestbookSavedNick',frm['nick'].value);
			AjaxUtilSetPersistentCookie('ajaxGuestbookSavedEMail',frm['email'].value);
			AjaxUtilSetPersistentCookie('ajaxGuestbookSavedUrl',frm['url'].value);
		}
		
		post='nick='+frm['nick'].value+'&email='+frm['email'].value+'&url='+frm['url'].value+'&code='+frm['validation'].value+'&comment='+frm['comment'].value;
		AjaxAddJob("留言板新項目",ajaxGuestbookConfig['scriptroot']+"/ajaxGuestbookPost.php?r="+Math.floor(Math.random()*9999),"POST",post,ajaxGuestbookPostCallback);
	}
	return false;
}

function ajaxGuestbookValidationCallback(xml) {
	spn=AjaxUtilGetElement('spnAjaxGuestbookValidation');
	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='<a href="javascript:ajaxGuestbookRequestCode()">'+items[0].firstChild.nodeValue+'</a>';
			document.forms['frmAjaxGuestbook']['submit'].disabled=false;
		}
	}
}

function ajaxGuestbookPostCallback(xml) {
	spn=AjaxUtilGetElement('spnAjaxGuestbookValidation');
	if (xml==null)
		alert("很抱歉，伺服器出現問題導致傳送失敗。");
	else {
		code=xml.getElementsByTagName("result")[0].firstChild.nodeValue;
		switch (code) {
			case '0': // Success
				alert("您的留言已成功送出！");
				setTimeout('ajaxGuestbookStart()',500);
				return;
				break;
			case '1': // Fail: Wrong Code
				alert("驗証碼不正確！");
				break;
			case '2': // Fail: Database
				alert("很抱歉，伺服器出現問題導致傳送失敗。");
				break;
			default:
				alert("Unknown reply: "+code);
		}
	}
	document.forms['frmAjaxGuestbook']['submit'].disabled=false;
}

function ajaxGuestbookShowCallback(xml) {
	if (xml==null)
		alert("無法讀取資料");
	else {
		err=xml.getElementsByTagName("error");
		if (err.length) {
			alert(err[0].firstChild.nodeValue);
		} else {
			var items=xml.getElementsByTagName("entry");
			var txt="";
			
			txt=items[0].getElementsByTagName('author')[0].firstChild.nodeValue+' 於 '+items[0].getAttribute("time")+' 的留言：\n';
			txt+=items[0].getElementsByTagName('content')[0].firstChild.nodeValue;
			
			alert(txt);
		}
	}
}
