/*<script>*/ //just want js hilight
function sortCur() {
	var im = $('sortImg');
	var order = nav.getOption('order');
	im.src = 'img/'+order+'.gif';
	im.alt = order == 'asc' ? 'น้อยไปมาก' : 'มากไปน้อย';
}
function sortNext() {
	var im = $('sortImg');
	var order = nav.getOption('order') == 'asc' ? 'desc' : 'asc';
	im.src = 'img/'+order+'.gif';
	im.alt = order == 'asc' ? 'น้อยไปมาก' : 'มากไปน้อย';
}

function updateForum(output) {
	var content='';
	if(output.responseText.length==0) {
		content="<tr><td>error</td></tr>";
	}
	else {
		var columns = [	['#','id',4], ['หัวข้อ','title',46], ['โดย','display',12], ['เมื่อ','datetime',10], 
						['โหวต','votes',7], ['ตอบ','reps',6], ['ล่าสุด','lastupdate',15] ];
		var t = new Template('<tr class="#{mod}"><td class="first">#{tid}</td><td><a href="t#{tid}.htm">#{title}</a> #{extra}</td>'
		+'<td>#{name}</td><td><small>#{datetime}</small></td><td>#{votes}</td><td>#{reps}</td>'
		+'<td class="last"><small>#{lastupdate}</small><br /><a href="t#{tid}.htm\#rep=last">'
		+'<img src="/pictures/link_grau.gif" alt="โพสล่าสุด" style="vertical-align:middle" /></a>โดย #{lastupdatename}</td></tr>');
		var data= new XMLData(output.responseXML,'topic');
		var n=data.length;
		if(data.length == 0) {
			content += '<tr><td class="msg" align="center">ยังไม่มีกระทู้ในหมวดนี้</td></tr>'
		} else {
			var last;
			if(last = (data.readAttribute(0,'pin')=='pin'))
				content += '<tr><td class="splitter" colspan="'+columns.length+'">'
					+'<img src="img/pin.gif" alt="pin" /> ประกาศ</td></tr>';
			for(var i=0;i<n;i++) {
				var auid = parseInt(data.getData(i,'uid')), aname = data.getData(i,'name').escapeHTML(),
					luid = parseInt(data.getData(i,'lastupdateuid')),
					lname = data.getData(i,'lastupdatename').escapeHTML();
				var pin = data.readAttribute(i,'pin') == 'pin', stock = data.readAttribute(i,'stock') == 'stock',
					ban = data.readAttribute(i,'ban') == 'ban';
				if(last && !pin) {
					content += '<tr><td class="splitter" colspan="'+columns.length+'">'
						+'<img src="img/topic.gif" alt="topic" /> กระทู้</td></tr>'
				}
				last = pin;
				content+=t.evaluate({
					mod: 'r'+(i%2)+(i==data.length-1?' rlast':''),
					tid: data.getData(i,'tid'),
					title: data.getData(i,'title').escapeHTML(),
					extra: (stock ? '<img src="img/stock.gif" alt="stock" /> ' : '') 
						+ (ban ? '<img src="img/ban.gif" alt="ban" /> ' : ''),
					name: (auid == 0 ? aname : userLink.evaluate({uid: auid, name: aname})),
					datetime: data.getData(i,'datetime'),
					lastupdate: data.getData(i,'lastupdate'),
					reps: data.getData(i,'reps'),
					votes: data.getData(i,'votes'),
					lastupdatename: (luid == 0 ? lname : userLink.evaluate({uid: luid, name: lname}))
				});
			}
			
			var ln = columns.length-1;
			content='<tr class="rhead">'
			+ columns.collect(
					function(x,i) {
						var columnName=x[0], field=x[1], width=x[2], 
							next = nav.getOption('order') == 'asc' ? 'desc' : 'asc';
						return '<td width="'+width+'%"'
							+(i==0?' class="first"':(i==ln?' class="last"':''))+'><a href="'
							+ (nav.getOption('by')==field 
							? nav.getSEOString({order: next, by: field})
								+'" onclick="location.href=\''+ nav.getQueryString({order: next, by: field},'#')
								+'\'; return false;" onmouseover="sortNext()" onmouseout="sortCur()">'
							: nav.getSEOString({order: 'asc', by: field})+'" onclick="location.href=\''
								+ nav.getQueryString({order: 'asc', by: field},'#') +'\'; return false;">')
							+columnName
							+ ( nav.getOption('by')==field 
								? '<img id="sortImg" '+ (nav.getOption('order')=='asc' 
									? 'alt="น้อยไปมาก" src="img/asc.gif" '
									: 'alt="มากไปน้อย" src="img/desc.gif" ')
								  +'/>'
								:'' )
							+'</a></td>';
					}
				).join('')
			+content;
		}
		
	}
	
	$('forum').update(content);
}
function updatePageLink(output) {
	//update page link
	var data=new XMLData(output.responseXML,'forum');
	var content=data.getData(0,'pagelink');
	$$('.pagebar').invoke('update',content=='-'?'':content);
	
	//update permalink
	/*$('permalink').value = location.href.split('?')[0].split('#')[0]
		+ '?id='+nav.getOption('id');
		+ nav.getQueryString(false,'#');*/
}
function updateStepLink() {
	//update step link
	
	var content='<div class="page_link"><span>แสดงผล</span> ';
	var curStep=nav.getOption('step'),steps=[10,25,50];
	var t = new Template('<a href="#{seoString}" onclick="location.href=\'#{queryString}\'; return false;">#{step}</a>');
	for(var i=0;i<steps.length;i++) {
		if(steps[i]==curStep)
			content+='<span class="current">'+curStep+'</span>';
		else
			content+=t.evaluate({seoString: nav.getSEOString({step: steps[i], page: 1}),
				queryString: nav.getQueryString({step: steps[i], page: 1},'#'), step: steps[i]});
	}
	content+='</div>'
	
	$$('.stepbar').invoke('update',content);
}
function updateTagList(output) {
	var data = new XMLData(output.responseXML,'forum');
	var tagList = data.readAttribute(0,'tag').split(',');
	var tags = $('tagBar').select('span.tag');
	tags.invoke('removeClassName','selected');
	tagList.each(function(tag) {
		$('tagBar').select('span.tag[title="'+tag+'"]')[0].addClassName('selected');
	});
}
function updateContent() {
	new Ajax.Request("forum.xml.php", {
			onCreate: function() {
				$('forum').update('<tr><td align="center">กำลังโหลดข้อมูล <img src="/pictures/loading_16x16.gif"/></td></tr>');
			},
			onComplete: function(output) {
				updateForum(output);
				updatePageLink(output);
				updateStepLink();
				updateTagList(output);
			},
			parameters: $('viewOption').serialize(),
			method: 'get'
		}
	);
}
function initPoster() {
	var poster = new Poster('postBox','post.php',function(output) {
				if(output.responseText.length==0) {
					poster.setStatus('เกิดข้อผิดพลาด! กรุณาลองอีกครั้ง');
				}
				else {
					updateContent();
					poster.resetForm();
					//poster.setStatus(output.responseText);
					poster.toggleForm();
				}
			});
}
var nav;
function init() {
	//return;
	initPoster();
	nav = new Nav('viewOption',{step: 10, page: 1, order: 'desc', by: 'lastupdate', tag: ''}, updateContent);
	nav.setOption();
	init = initPoster = null; //destroy the functions
}

