// js
var ajaxThreadsParams = {
	"showSubject"            : true,  // Show thread subject
	"showCategory"           : true,  // Show forum category
	"showThreadstarter"      : false, // Show threadstarter
	"showReplys"             : false,  // Show number of replys
	"showLatest"             : true,  // Show time for latest reply
	"setWidth_subject"       : 260,   // px
	"setWidth_category"      : 118,   // px
	"setWidth_threadstarter" : 74,    // px
	"setWidth_replys"        : 51,    // px
	"setWidth_latest"        : 82,    // px
	"strLimit_subject"       : 38,    // stringlength
	"strLimit_category"      : 18,    // stringlength
	"strLimit_threadstarter" : 20,    // stringlength
	"interval"               : 5000,  // ms
	"url"                    : "/Forum/xml/threadsLatestMessage.php?limit=5",  // XML-file
	"insertDiv"              : "threadsLatestMessage",                         // Div in where threads will show
	"curObj"                 : "LatestThreadsMessage",                         // Name of current js-object
	"urlPrefix"              : "",                                             // Prefix in forum-url: "/prefix"/Forum/file.html
	"lineHeight"             : 16,
	"bottomBorder"           : true
};

function GetThreads() {
	var obj = this;
	var timer = 0;
	var interval = ajaxThreadsParams.interval;
	var url = ajaxThreadsParams.url;
	var insertDiv = ajaxThreadsParams.insertDiv;
	var curObj = ajaxThreadsParams.curObj;
	var urlPrefix = ajaxThreadsParams.urlPrefix;
	var showSubject = ajaxThreadsParams.showSubject;
	var showCategory = ajaxThreadsParams.showCategory;
	var showThreadstarter = ajaxThreadsParams.showThreadstarter;
	var showReplys = ajaxThreadsParams.showReplys;
	var showLatest = ajaxThreadsParams.showLatest;
	var setWidth_subject = ajaxThreadsParams.setWidth_subject;
	var setWidth_category = ajaxThreadsParams.setWidth_category;
	var setWidth_threadstarter = ajaxThreadsParams.setWidth_threadstarter;
	var setWidth_replys = ajaxThreadsParams.setWidth_replys;
	var setWidth_latest = ajaxThreadsParams.setWidth_latest;
	var strLimit_subject = ajaxThreadsParams.strLimit_subject;
	var strLimit_category = ajaxThreadsParams.strLimit_category;
	var strLimit_threadstarter = ajaxThreadsParams.strLimit_threadstarter;
	var lineHeight = ajaxThreadsParams.lineHeight;
	var bottomBorder = ajaxThreadsParams.bottomBorder;
	
	obj.mk = function() { 
		obj.fetchNewThreads(); 
	}
	
	function startTimer() {
		clearTimeout(timer);
		timer = setTimeout(curObj+".mk()",interval);
	}
	
	function fetchNewThreads() {
		sendRequest(url,writeList);
	}
	
	function limitString(str,limit) {
		var newString = "";
		if (str.length > limit) { 
			var substrLimit = limit - 2;
			newString += str.substring(0,substrLimit);
			newString += "...";
		} else { 
			newString += str;
		}
		return newString;
	}
	
	function writeList(req) {
		var xmlDoc = req.responseXML.documentElement;
		var url = xmlDoc.getElementsByTagName("url");
		var subject = xmlDoc.getElementsByTagName("subject");
		var category = xmlDoc.getElementsByTagName("category");
		var threadstarter = xmlDoc.getElementsByTagName("threadstarter");
		var replys = xmlDoc.getElementsByTagName("replys");
		var latest = xmlDoc.getElementsByTagName("latest");
		var bgcolor = "#FFFFFF";
		var html = '';
		if (subject.length > 0) { 
			for (var i=0;i<subject.length;i++) {
				if (bgcolor=="#FFFFFF") bgcolor = "#F8F8F8";
				else bgcolor = "#FFFFFF";
				
				var row = i%2;
				
				if (showSubject) {
					html += '<div class="subject' + row + '" style="height:'+ lineHeight +'px; margin:0px; border:0px; ';
					html += 'float:left; width:' + setWidth_subject + 'px; font-size:10px; padding-left:3px; overflow:hidden; ';
					html += 'line-height:'+ lineHeight +'px;';
          if(bottomBorder) html += ' border-bottom:dotted 1px #DDDDDD;';
          html += '">';
					html += '<a href="' + urlPrefix + url[i].firstChild.nodeValue + '" ';
					html += 'title="' + subject[i].firstChild.nodeValue + '" style="line-height:'+ lineHeight +'px;">';
					html += limitString(subject[i].firstChild.nodeValue,strLimit_subject);
					html += "</a>";
					html += "</div>";
				}
				
				if (showCategory) {
					html += '<div class="category' + row + '" style="height:'+ lineHeight +'px; margin:0px; border:0px; float:left; ';
					html += 'width:' + setWidth_category + 'px; font-size:10px; overflow:hidden; ';
					html += 'line-height:'+ lineHeight +'px;';
          if(bottomBorder) html += ' border-bottom:dotted 1px #DDDDDD;';
          html += '">';
					html += limitString(category[i].firstChild.nodeValue,strLimit_category);
					html += "</div>";
				}
				
				if (showThreadstarter) {
					html += '<div style="height:'+ lineHeight +'px; margin:0px; border:0px; ';
					html += 'float:left; width:' + setWidth_threadstarter + 'px; ';
					html += 'text-align:center; font-size:10px; overflow:hidden; ';
					html += 'line-height:'+ lineHeight +'px;';
          if(bottomBorder) html += ' border-bottom:dotted 1px #DDDDDD;';
          html += '">';
					html += limitString(threadstarter[i].firstChild.nodeValue,strLimit_threadstarter);
					html += "</div>";
				}
				
				if (showReplys) {
					html += '<div style="height:'+ lineHeight +'px; margin:0px; border:0px; ';
					html += 'overflow:hidden; line-height:'+ lineHeight +'px;';
					if(bottomBorder) html += ' border-bottom:dotted 1px #DDDDDD;';
					html += 'float:left; width:' + setWidth_replys + 'px; font-size:10px; text-align:center;">'; // 33
					html += replys[i].firstChild.nodeValue;
					html += "</div>";
				}
				
				if (showLatest) {
					html += '<div style="height:'+ lineHeight +'px; margin:0px; border:0px; ';
					html += 'overflow:hidden; line-height:'+ lineHeight +'px;';
					if(bottomBorder) html += ' border-bottom:dotted 1px #DDDDDD;';
					html += 'padding-right:3px; float:left; width:' + setWidth_latest + 'px; font-size:10px; text-align:right;">';
					html += latest[i].firstChild.nodeValue;
					html += "</div>";
				}
				
				html += '<br clear="all" />';
			}
		}
		var target = getEl(insertDiv);
		target.innerHTML = html;
		startTimer();
	}
	
	this.fetchNewThreads = fetchNewThreads;
	this.startTimer = startTimer;
	this.limitString = limitString;
}