HEADING_BGCOLOR = "#6394BD"
SUBHEADING_BGCOLOR = "#AFC6DB"
TEXT_BGCOLOR="#FFFFFF"
SEVERITIES = [ "Enhancement", "Minor", "Normal", "Major", "Grave", "Critical" ]
STATUSES = [ "Open", "Fixed", "Completed", "Invalid", "Unreplicatable" ]

def entitify(text)
	text = text.dup
	text.gsub!(/&/, "&amp;")
	text.gsub!(/</, "&lt;")
	text.gsub!(/>/, "&gt;")
	return text
end

def html_box(width = nil, &content)
	print "<table cellspacing=\"1\" cellpadding=\"4\" border=\"0\" bgcolor=\"#{HEADING_BGCOLOR}\""
	print " width=\"#{width}\"" if width
	print ">\n";

	yield

	print "</table><br/>"
end

def heading(left_title, right_title = nil, cols = 1)
	# Display the title bar
	if left_title || right_title then
		print "<tr><td bgcolor=\"#{HEADING_BGCOLOR}\""
		print " align=\"right\"" if !left_title && right_title
		print " colspan=\"#{cols}\"" if cols != 1
		print ">"

		if left_title and right_title then
			print "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr>\n"
			print "<td><font class=\"text1\">#{left_title}</font></td>\n"
			print "<td align=\"right\"><font class=\"text1\">#{right_title}</font></td>"
			print "</tr></table>\n"
		elsif left_title then
			print "<font class=\"text1\">" + left_title + "</font>"
		else
			print "<font class=\"text1\">" + right_title + "</font>"
		end
		print "</td></tr>\n"
	end
end

def control_area(cols = 1, &content)
	# print out the content
	print "<tr><td bgcolor=\"#{SUBHEADING_BGCOLOR}\""
	print " colspan=\"#{cols}\"" if cols != 1
	print ">"

	yield

	print "</td></tr>\n"
end

def text_area(&content)
	# print out the content
	print "<tr><td bgcolor=\"#{TEXT_BGCOLOR}\">"

	yield

	print "</td></tr>\n"
end

def display_datum(sqlcxn, display_issue, constraints)
	sql = "select issue, extract(epoch from submission_date), submitter, source, summary, descrip, idnum, changed from datum #{constraints}"
	datums= sqlcxn.exec(sql)
	datums.result.each { |datum|
		html_box(550) {
			heading(Time.at(datum[1].to_i).to_s,
				entitify(datum[2]) + " from " + entitify(datum[3]), 2)
			if display_issue and datum[0] != "" then
				control_area(2) {
					sql = "select summary from issues where idnum=#{datum[0]}"
					issue = sqlcxn.exec(sql)
					if issue.num_tuples == 1 then
						print "Assigned to <a href=\"issue.rhtml?idnum=#{datum[0]}\">issue ##{datum[0]}</a>: #{entitify(issue[0][0])}<br/>\n"
					else
						print "Assigned to issue ##{datum[0]}: (Error encountered)<br/>"
					end
				}
			end
			if datum[7] != "" then
				control_area(2) {
					print "<i>#{entitify(datum[7])}</i>"
				}
			end
			print "<tr>"
			print "<td rowspan=\"2\" width=\"20\" bgcolor=\"#{TEXT_BGCOLOR}\" valign=\"top\"><a href=\"datum.rhtml?idnum=#{datum[6]}\"><img src=\"datum.gif\" border=\"0\"/></a></td>"
			print "<td bgcolor=\"#{TEXT_BGCOLOR}\" valign=\"top\">#{datum[4]}</td>"
			print "</tr>"
			if datum[5] != "" then
				text_area {
					print "<pre><tt>#{entitify(datum[5])}</tt></pre>"
				}
			end
		}
	}

	return datums.num_tuples
end

