/**
 * This class manages the form holder element
 * on the page (a div tag with id form_holder).
 */
function FormHolder(fshHolder, formName, loaderText) {
	this.fshHolder = fshHolder;
	this.loaderText = loaderText;
	this.setFormName(formName);
	this.gotoPage();
}

FormHolder.prototype.setFormName = function(formName) {
	this.formName = formName;
}

FormHolder.prototype.getFormName = function() {
	return this.formName;
}

/** Go to the given page in the QPages order. */
FormHolder.prototype.gotoPage = function(page) {
	if (typeof(page) == 'undefined') {
		page = -2;
	}
	showForm(this.formName, page);
}

/** Go to the next page in the QPages order. */
FormHolder.prototype.gotoNextPage = function(target) {
	if (target && target.blur) {
		target.blur();
	} else {
		this.blurAll();
	}
	showForm(this.formName, 0);
}

/** Go to the previous page in the QPages order. */
FormHolder.prototype.gotoPrevPage = function(target) {
	if (target && target.blur) {
		target.blur();
	} else {
		this.blurAll();
	}
	showForm(this.formName, -1);
}


/**
 * Try to make sure that no field has the focus. This can be used to
 * trigger the onBlur event on the currently focused field.
 */
FormHolder.prototype.blurAll = function() {
	var inputs = document.getElementById('form_holder').getElementsByTagName('input');
	for (var i=0; i<inputs.length; i++) {
		inputs[i].blur();
	}
	inputs = document.getElementById('form_holder').getElementsByTagName('textarea');
	for (var i=0; i<inputs.length; i++) {
		inputs[i].blur();
	}
}

FormHolder.prototype.showHTML = function(html) {
	this.fshHolder.showText(''); // Fix: Pages without controls shouldn't have FSH text.
	document.getElementById('form_holder').innerHTML = html;
}

