
// @requires django/forms.js

var EntityForm = Form.extend({
	fields: {
		type: Field({ 
			choices: [
				['landman', 'Landman'],
				['land_services_company', "Land Services Company"],
				['oil_and_gas_company', "Oil & Gas Company"],
				['brokerage_firm', "Brokerage Firm"]
			]
		}),
		name: Field()
	}
});

var EntityFormSet = FormSet.extend({
	form_class: EntityForm,
	
	/* Get a jQuery set of all elements associated with a given form
	 * $elem is an element somewhere within the form (e.g. link or input)
	 */
	_get_form_jQuery: function($elem) {
		var $row = jQuery($elem).parents("tr").eq(0);
		$row = $row.add($row.prev('.spacer'));
		$row = $row.add($row.next('.errors'));
		return $row;
	},
	register_listeners: function() {
		jQuery("a.type__landman_add").click(_bind(this, this._append_trigger));
		jQuery("a.delete_button").click(_bind(this, this._delete_trigger));
	},
	register_row_listeners: function($row) {
		//jQuery("input[name='" + this.prefix + "-DELETE']").
		//	change(_bind(this, this._delete_trigger));
		$row.find("a.delete_button").click(_bind(this, this._delete_trigger));
	}
});

var PracticeForm = Form.extend({
	fields: {
		label: Field(),
		notes: Field()
	}
});

var PracticeFormSet = FormSet.extend({
	form_class: PracticeForm,
	_get_form_jQuery: function($elem) {
		var $row = jQuery($elem).parents("tr").eq(0);
		$row = $row.add($row.prev('.errors'));
		return $row;
	},
	register_listeners: function() {
		jQuery("a.practices_add").click(_bind(this, this._append_trigger));
		jQuery("a.delete_button").click(_bind(this, this._delete_trigger));
	},
	register_row_listeners: function($row) {
		$row.find("a.delete_button").click(_bind(this, this._delete_trigger));
	}
});


var DocumentForm = Form.extend({
	fields: {
		label: Field(),
		notes: Field()
	}
});

var DocumentFormSet = FormSet.extend({
	form_class: DocumentForm,
	_get_form_jQuery: function($elem) {
		var $row = jQuery($elem).parents("li").eq(0);
		return $row;
	},
	register_listeners: function() {
		jQuery("a.documents_add").click(_bind(this, this._append_trigger));
		jQuery("a.delete_button").click(_bind(this, this._delete_trigger));
	},
	register_row_listeners: function($row) {
		$row.find("a.delete_button").click(_bind(this, this._delete_trigger));
	}
});


// function register_type_actions(formset, type) {
// 	var $table = jQuery(".type__" + type);
// 	//console.debug($table);
// 	var $checkbox = jQuery(".type__" + type + "_checkbox");
// 	$checkbox.click(function(e) {
// 		$table.show();
// 	});
// 	var dont_hide = false;
// 	jQuery("input[name$='-name']", $table).each(function(e) {
// 		if (jQuery(this).val() != "")
// 			dont_hide = true;
// 	});
// 	if (!dont_hide)
// 		$table.hide();

function setup_review_formsets() {
	entities_formset = new EntityFormSet(
		"review-entities", "table#entities_list", "lrc/review/entity_form.html");
	entities_formset.prepare();
	entities_formset.register_listeners();
	//entities_formset.register_row_listeners();
	
	practices_formset = new PracticeFormSet(
		"review-practices", "table#practices_list", "lrc/review/practice_form.html");
	practices_formset.prepare();
	practices_formset.register_listeners();
	//practices_formset.register_row_listeners()
	
	documents_formset = new DocumentFormSet(
		"review-documents", "ul#documents_list", "lrc/review/document_form.html");
	documents_formset.prepare();
	documents_formset.register_listeners();
	//documents_formset.register_row_listeners();
}

jQuery(setup_review_formsets);

