/***************************************************************************

js/preview_area.js

Handles previewing form submission if form allows it.

***************************************************************************/

function previewArea(id) {
	// Members.
	this.id			= id;
	this.prevArea	= eval(this.id + "Create")(this.id + "PreviewArea");
	this.prevButton	= document.getElementById("preview_" + id);

	// Methods.
	this.preview = preViewToAKill;

	// Add preview area to form (goes between form and buttons area).
	document.getElementById(id + "Form").insertBefore(this.prevArea, eval(id + "Form").btnsArea);
	this.prevArea.style.display = "none";

	// Set flag in form.
	eval(this.id + "Form").hasPreview = true;
}

// Switches between form and preview areas.

function preViewToAKill() {
	var preview = this.prevButton.value == "Preview";
	if(preview) {
		var values = eval(this.id + "PrevVals")();
		for(i = 0; i < values.length; i++) document.getElementById(this.id + "Preview" + i).innerHTML = values[i];
	}
	document.getElementById(this.id + "FormArea").style.display = preview ? "none" : "block";
	this.prevArea.style.display	= preview ? "block" : "none";
	this.prevButton.value		= preview ? "Edit" : "Preview";
}

// Converts specific characters to HTML entities for display.

function htmlspecialchars(str) {
	var chars	= new Array("&", "<", ">", "\"", "'");
	var ascii	= new Array("&amp;", "&lt;", "&gt;", "&quot;", "&#39;");
	for(i in chars) {
		var iChar = new RegExp(chars[i], "g");
		str = str.replace(iChar, ascii[i]);
	}
	return str;
}
