
var commentRowIndex = null;

function createPreCommentTab()
{
  setReportTabActive( document.getElementById("preCommentsTab"));
	var container = document.getElementById("contentDiv");
	cleanRaportTab();
	
	var now = new Date();
	now = now.getTime();
	
	//trace( showTime( now));
	//trace( showTime( activeTime));
	
	
	var headerStr = "";
	if ( now < (activeTime + 3600000) && now > (activeTime - 40 * 24 * 3600000))
	{
		createEditor( container, sendPreComment, "Lisää kommenttisi pelistä!");
	} else
	{
		headerStr = ". Kommentteja ei pysty enää lähettämään.";
	}

	//create table
	commentRowIndex = 0;
	var table = document.createElement("table");
	table.id = "preCommentTableId";
	table.className = "commentTableClass";
	table.style.marginTop = "15px";

	var params = "rid=getComments";
	params += "&gameid=" + activeGameId;
	params += "&type=p";
	
  xmlHttpRequest( "common/server/comments.php", params, 0);
  //testAlert( xmlHttp.responseText);
  var xml = xmlParser( xmlHttp.responseText);  
  var comments = xml.getElementsByTagName("comment");
  
  for ( var i = 0; i < comments.length; i++)
  {
  	addComment( table, comments[i]);
  }	

  container.appendChild( table);
  
	document.getElementById("reportTabHeaderId").innerHTML = comments.length + " kommenttia" + headerStr;
}

function createCommentTab()
{
  setReportTabActive( document.getElementById("commentsTab"));
	var container = document.getElementById("contentDiv");
	cleanRaportTab();
	
	
	var now = new Date();
	now = now.getTime();	
	
	var headerStr = "";
	if ( (now + 3600000 ) > activeTime && now < (activeTime + 21 * 24 * 3600000))
	{
		createEditor( container, sendComment, "Lisää kommenttisi pelistä!");
	} else
	{
		headerStr = ". Kommentteja ei pysty enää lähettämään.";
	}


	//create table
	commentRowIndex = 0;
	var table = document.createElement("table");
	table.id = "commentTableId";
	table.className = "commentTableClass";
	table.style.marginTop = "15px";
	
	var params = "rid=getComments";
	params += "&gameid=" + activeGameId;
	params += "&type=r";
	
  xmlHttpRequest( "common/server/comments.php", params, 0);
  //testAlert( xmlHttp.responseText);
  var xml = xmlParser( xmlHttp.responseText);  
   
  var comments = xml.getElementsByTagName("comment");
  
  for ( var i = 0; i < comments.length; i++)
  {
  	addComment( table, comments[i]);
  }		
  
  container.appendChild( table);
	document.getElementById("reportTabHeaderId").innerHTML = comments.length + " kommenttia" + headerStr;
}

function createEditor( container, callback, headerStr)
{
	var table = document.createElement("table");
	table.className = "editorContainerTableClass";
	table.id = "editorContainerTableId";
	table.style.marginTop = "10px";
	
	var row = table.insertRow(0);
	var cell = row.insertCell(0);
	cell.innerHTML = headerStr; 
	cell.className = "editorInfoCellClass fDefaultB";


	var cell = row.insertCell(1);
	cell.className = "editorCellClass";
	cell.rowSpan = "3";
	
	var edit = document.createElement("textarea");
	edit.id = "commentTextAreaId";
	edit.className = "commentEditorClass";
	edit.rows = "4";
	edit.tabIndex = "0";
	cell.appendChild( edit);
	
	
	//name cell
	row = table.insertRow(1);
	var cell = row.insertCell(0);
	cell.className = "editorControlCellClass fDefaultB";
	
	if ( userid )
	{
		cell.innerHTML = "Nimi: <font class=\"cGreen\">"+ username +"</font>";
	} else
	{
		cell.innerHTML = "Nimi";
		var edit = document.createElement("input");
		edit.type = "text";
		edit.id = "nameEditId";
		edit.tabIndex = "1";
		edit.style.marginLeft = "10px";
		edit.size= "15";
		cell.appendChild( edit);
	}

	row = table.insertRow(2);
	var cell = row.insertCell(0);
	cell.className = "editorControlCellClass fDefaultB";

	var link = document.createElement("anchor");
	link.style.marginLeft = "10px";
	link.innerHTML = "Lähetä";
	link.onclick = callback;
	link.className = "blBlack";
	cell.appendChild( link);
	
	container.appendChild( table);	
}

function sendPreComment()
{
	testAlert("preComment");	
  if ( !checkComment( document.getElementById("commentTextAreaId").value))
  {
  	return;
  }
	
	
  var container = document.getElementById("contentDiv");
  var params = "rid=addComment";
  params += "&gameid=" + activeGameId;
  params += "&type=p";
  params += "&comment=" + document.getElementById("commentTextAreaId").value;
  
  if ( userid )
  {
  	params += "&userid=" + userid;
  	params += "&sid=" + sessionid;
  } else
  {
	  params += "&name=" + document.getElementById("nameEditId").value;
  }
  
  testAlert( params);
  xmlHttpRequest( "common/server/comments.php", params, 0);
  testAlert( xmlHttp.responseText);
  var xml = xmlParser( xmlHttp.responseText);  
  
  var comments = xml.getElementsByTagName("comment");
  
  if ( comments.length > 0)
  {
  	addComment( document.getElementById("preCommentTableId"), comments[0]);
  } else
  {
  	var fail = xml.getElementsByTagName("fail");
  	if ( fail.length > 0)
  	{
  		showError( fail[0].attributes.getNamedItem("reason").nodeValue);
  	} else
  	{
  		showError("nk");
  	}  	
  }
}

function sendComment()
{
	testAlert("sendComment");
  if ( !checkComment( document.getElementById("commentTextAreaId").value))
  {
  	return;
  }
	
  var container = document.getElementById("contentDiv");
  var params = "rid=addComment";
  params += "&gameid=" + activeGameId;
  params += "&type=r";
  params += "&comment=" + document.getElementById("commentTextAreaId").value;

  if ( userid )
  {
  	params += "&userid=" + userid;
  	params += "&sid=" + sessionid;
  } else
  {
  params += "&name=" + document.getElementById("nameEditId").value;
  }
  
  testAlert( params);
  xmlHttpRequest( "common/server/comments.php", params, 0);
  testAlert( xmlHttp.responseText);
  var xml = xmlParser( xmlHttp.responseText);  
  
  var comments = xml.getElementsByTagName("comment");
  
  if ( comments.length > 0)
  {
  	addComment( document.getElementById("commentTableId"), comments[0]);
  } else
  {
   	var fail = xml.getElementsByTagName("fail");
  	if ( fail.length > 0)
  	{
  		showError( fail[0].attributes.getNamedItem("reason").nodeValue);
  	} else
  	{
  		showError("nk");
  	}  	 		
  }  
}

function showError( reason)
{
	if ( reason == "nk")
	{
		alert("Kommentin lisääminen ei onnistunut!");
		return;
	}
	
	if ( reason == "wt" )
	{
		alert("Et voi kommentoida tätä kohdetta juuri nyt. Aika ennakkokommenteille on 3 viikkoa ennen peliä ja kommenteille 3 viikkoa pelin jälkeen.");
		return;
	}
	
	if ( reason == "ts")
	{
		alert("Et voi kommentoida samaa kohdetta uudestaan 3 minuutin aikana");
		return;
	}

	if ( reason == "se")
	{
		alert("Virheellinen käyttäjätunnus tai sessio.");
		return;
	}

	if ( reason == "nr")
	{
		alert("Käyttämäsi nimimerkki on varattu.");
		return;
	}
}

function addComment( table, comment)
{
	//header row
	var row = table.insertRow( 0);
	var cell = row.insertCell(0);
	cell.className = "commentHeaderClass fDefaultB";
	
	var node = comment.attributes.getNamedItem("name");
	
	var name;
	if ( node )
	{
		name = node.nodeValue;
	} else
	{
		var uid = comment.attributes.getNamedItem("userid").nodeValue;
		name = getUserName( uid);
	}
		
	var time = new Date( parseInt( comment.attributes.getNamedItem("time").nodeValue) * 1000);
	
	cell.innerHTML = name + ", " + makeDate( time, true);
	
	//comment row
	row = table.insertRow( 1);
	cell = row.insertCell(0);
	cell.className = "commentCellClass fDefault";
	
	
	var result = comment.attributes.getNamedItem("comment").nodeValue.replace(/\n/gi, "<br>");	
	cell.innerHTML = result;
}

function checkComment( comment)
{
	var patt = /[<>]/;

	if ( comment.search(patt) >= 0)
	{
		alert("Kommentissa kiellettyjä merkkejä (< tai >).");
		return false;
	}
	
	if ( comment.length > 3000)
	{
		alert("*Kommentin maksimipituus on 3000 merkkiä.");
		return false;
	}

	return true;
}
