var curUpdateSet=0;
var curFilter='all';
var oldUrl;

function setUpdates()
{
	setUpdatesButtons(loading());
	var xmlhttp=newXMLHTTPRequest();
	xmlhttp.onreadystatechange=function()
		{
			if (xmlhttp.readyState==4 && xmlhttp.status==200)
			{
				if(xmlhttp.responseText.substring(0,5)=='ERROR')
					alert("AJAX Error:\n"+xmlhttp.responseText.substring(6));
				else
					gotUpdates(xmlhttp.responseText);
			}
		}
	xmlhttp.open("GET",rootDir+"/theme/"+theme+"/script/ajax.php?action=update_list&start="+curUpdateSet+"&filter="+curFilter,true);
	xmlhttp.send(null);
}

function gotUpdates(data)
{
	var dataArray=data.split("\n");
	var metaData=(dataArray[0]).split(",");
	var numUpdates=metaData[5]*1;
	
	var forid,fortype,date,text;
	var html="<div class='update_list'>";
	var ix=1;
	for(var i=0;i<numUpdates;i++)
	{
		updateData=(dataArray[ix++]).split(" ");
		forid=updateData[0];
		fortype=updateData[1];
		forurl=updateData[2];
		fortitle=dataArray[ix++];
		date=dataArray[ix++];
		text=dataArray[ix++];
		for(var nextLine=dataArray[ix++];nextLine!="";nextLine=dataArray[ix++])
			text+="\n"+nextLine;
		html+="<div class='update_list_item'>\n<div class='update_date'>On "+date+"</div>\n";
		if(fortype=='project')
			html+="<div class='update_for'>for project <strong><a href='"+rootDir+"/project/"+forurl+"'>"+fortitle+"</a></strong></div>\n<div class='update_text'>"+text+"</div>\n</div>\n";
		else if(fortype=='blog')
			html+="<div class='update_for'>for blog post <em>&quot; <a href='"+rootDir+"/blog/"+forurl+"'>"+fortitle+"</a> &quot;</em></div>\n<div class='update_text'>"+text+"</div>\n</div>\n";
		else
			html+="<div class='update_text'>"+text+"</div>\n</div>\n";
		html+="</div>\n";
		if(i<numUpdates-1)
			html+="<hr class='separator'>\n";
	}
	html+="</div>";
	
	setUpdatesHTML(html);
	setUpdatesButtons(pageButtonsHTML(metaData,"href='javascript:nextPage();'","href='javascript:prevPage();'"));
	setUrl(curUpdateSet,curFilter);
	setFilterButtons(curFilter);
}

function prevPage()
{
	curUpdateSet-=numUpdatesPerPage;
	if(curUpdateSet<0)
		curUpdateSet=0;
	setUrl(curUpdateSet,curFilter);
	setUpdates();
}

function nextPage()
{
	curUpdateSet+=numUpdatesPerPage;
	setUrl(curUpdateSet,curFilter);
	setUpdates();
}

function filter(filter)
{
	curUpdateSet=0;
	curFilter=filter;
	setUrl(curUpdateSet,curFilter);
	setUpdates();
}

function setUrl(start,filter)
{
	location.hash=filter+"-"+start;
}

function checkUrl()
{
	var url=location.hash.replace("#","");
	if(url==oldUrl)
		return;
	oldUrl=url;
	var start,filter;
	if(url.length==0)
	{
		start=0;
		filter="all";
	}
	else
	{	
		var urlArray=url.split("-");
		if(urlArray.length==1)
			filter="all";
		else
		{
			filter=urlArray[0];
			start=urlArray[1];
			if(start*1!=start)
				start=0;
			else
				start=start*1;
		}
	}
	if(start!=curUpdateSet || filter!=curFilter)
	{
		curUpdateSet=start;
		curFilter=filter;
		setUpdates();
	}
}

function setUpdatesHTML(text)
{
	document.getElementById("updatesHTML").innerHTML=text;
}

function setUpdatesButtons(text)
{
	document.getElementById("updatesButtons").innerHTML=text;
}

function setFilterButtons(filter)
{
	if(filter=="")
		filter="all";
	var validFilters=new Array("All","Project","Blog","Generic");
	for(var i in validFilters)
		document.getElementById("filter"+validFilters[i]).className=filter==validFilters[i].toLowerCase()?"novisited_accent":"novisited";
}
