/**
 * Royalfish Form class.
 *
 */
	function RFForm(in_name, in_form, in_isMainForm) {
		this.name = in_name;
		this.form = document.getElementById(in_form);
		this.form._super = this;
		this.isMainForm = in_isMainForm;
		this.sections = new Array();
		this.conditionalaction = new Array();
	}
	
	RFForm.prototype.addSection = function(in_section) {
		in_section.form = this;
		this.sections.push(in_section);
	}
	
	RFForm.prototype.startForm = function() {
		this.form.onsubmit = function() { return this._super.submitForm(); };
		for(var i = 0; i < this.sections.length; i++) {
			this.sections[i].registerEvents();
		}
		this.resetStates();
	}
	
	RFForm.prototype.resetStates = function() {
		for(var i = 0; i < this.sections.length; i++) {
			if(this.sections[i].getVisible()) {
				this.sections[i].resetStates();
			}
		}
	}
	
	RFForm.prototype.addConditionalAction = function(in_action) {
		this.conditionalaction.push(in_action);
	}
	
	RFForm.prototype.processConditionalActions = function(in_source_field) {
		for(var i = 0; i < this.conditionalaction.length; i++) {
			this.conditionalaction[i].process(in_source_field);
		}
		this.resetStates();
	}
	
	RFForm.prototype.isCompleted = function() {
		all_completed = true;
		for(var i = 0; i < this.sections.length; i++) {
			if(this.sections[i].isCompleted() == false) {
				if(all_completed == true) {
					this.sections[i].scrollIntoView(true);
				}
				all_completed = false;
			}
		}
		return all_completed;
	}
	
	RFForm.prototype.submitForm = function() {
		if(this.isCompleted()) {
			return true;
		}
		else {
			return false;
		}
	}
	
	RFForm.prototype.reset = function() {
		for(var i = 0; i < this.sections.length; i++) {
			for(var j = 0; j < this.sections[i].fields.length; j++) {
				this.sections[i].fields[j].setError(false);
			}
		}
		this.form.reset();
	}
