// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

/**
 * Quick 'n' dirty show / hide function.
 */
function s(el) { 
	new Effect[Element.visible(el) ? 'BlindUp' : 'BlindDown'](el, {duration: .25}); 
}

/**
 * Preload loading images
 */
Event.observe(window, 'load', function() {
	if(base_url) {
		window._preload = [
			new_el('img', {src: base_url + 'images/busy.gif'}),
			new_el('img', {src: base_url + 'images/busy-bg.gif'})
		]
	}
});

/**
 * Give birth to a new element.
 */
function new_el(type, attrs, html) {
	var el = document.createElement(type);
	if(attrs) attr(el, attrs);
	if(html) el.innerHTML = html;
	return el;
}

/**
 * Set attributes via an object.
 */
function attr(el, a) {
	for(var i in a) el.setAttribute(i, a[i]);
}

/**
 * Removes all of the child elements from an element.
 */
function clean_el(el) {
	if(el.childNodes) {
		while(el.childNodes.length) {
			rem_el(el.childNodes[0]);
		}
	}
}

/**
 * Removes an element from it's parent.
 */
function rem_el(el) {
	if(el.parentNode) {
		el.parentNode.removeChild(el);
	}
}

/**
 * Sets the value of a select element.
 */
function set_select(el, val) {
	for(var i = 0; i < $(el).options.length; i++) {
		if($(el).options[i].value == val) {
			$(el).selectedIndex = i;
			return;
		}
	}
}

/** 
 * Kind of a hack to get the outerHTML cross-browser.
 */
function outerHTML(el) {
	var temp = document.createElement('div');
	temp.appendChild(el.cloneNode(true));
	return temp.innerHTML;
}

var popup_opts = $H(
	{className: 'alphacube', width: 500, height: 400, destroyOnClose: false, recenterAuto: false, resizable: true, closable: true, maximizable: true, draggable: true,
	showEffect: Element.show, hideEffect: Element.hide});

function init_request_form_program(c) {

	['c_name', 'c_start_date', 'c_end_date', 'c_mandate_classification_nonmandated', 'c_mandate_classification_soft_mandate', 'c_mandate_classification_hard_mandate', 'c_fed_state_init',
		'c_contract_ceiling', 'c_per_diem_rate_1', 'c_per_diem_rate_2', 
		'c_previous_contract_ceiling', 'c_previous_per_diem_rate_1', 'c_previous_per_diem_rate_2', 
		'c_target_population', 'c_geographic_area', 'c_synopsis_of_program', 'c_need_for_services',
		'c_fee_for_service_or_program_support_fee_for_service', 'c_fee_for_service_or_program_support_program_support',
		'c_class_new', 'c_class_new_cost_center', 'c_class_new_gl_account_no', 'c_class_direct_negotiation', 'c_class_other', 'c_class_other_desc',
		'c_class_amendment', 'c_sap_shell_no', 'c_class_sole_source', 'c_class_renewal', 'c_class_renewal_prev_rfp_rfq_no', 'c_class_renewal_prev_rfp_rfq_date',
		'c_vendor_contact', 'c_vendor_phone', 'c_vendor_contact_email', 'c_vendor_sap_bics'].each(function(e) {
		$(e).onchange = function() {
			$(e).parentNode.addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/update_field', {
				onComplete: function(xhr) {
					$(e).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(e).parentNode)
			});
		}
	});
			
	var v_ids = ['vendor_name', 'vendor_address1', 'vendor_address2', 'vendor_city_state_zip', 'vendor_fed_id'];
	var pop_vendor = function() {
		Dialog.info(null, popup_opts.merge({url: base_url + 'vendors/pop_list/'+ (c.vendor_id ? c.vendor_id : ''), title: "Select / Edit Vendor"}));
		Dialog._callback = function(id) {
			c.vendor_id = id;
			Dialog.closeInfo();
			v_ids.each(function(id) { $(id).addClassName('busy'); })
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/set_vendor?vendor_id='+ id, {
				onComplete: function(xhr) {
					v_ids.each(function(id) { $(id).removeClassName('busy'); });
				}
			});
		}
	}
	v_ids.each(function(vid) {
		Event.observe(vid, 'click', pop_vendor);
	});
	
	var dl_ids = ['dept_liaison_name', 'dept_liaison_phone', 'dept_liaison_email'];
	var pop_dept_liaison = function() {
		if(!c.department_id) {
			alert('Please select a department before selecting a department liaison.');
			return;
		}
		Dialog.info(null, popup_opts.merge({url: base_url + 'users/pop_list/'+ (c.dept_liaison_id ? c.dept_liaison_id : null) +'?department_id='+ c.department_id, title: "Select / Edit Dept Liaison"}));
		Dialog._callback = function(id) {
			c.dept_liaison_id = id;
			Dialog.closeInfo();
			dl_ids.each(function(id) { $(id).addClassName('busy'); })
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/set_dept_liaison?user_id='+ id, {
				onComplete: function(xhr) {
					dl_ids.each(function(id) { $(id).removeClassName('busy'); });
				}
			});
		}
	}
	dl_ids.each(function(vid) {
		Event.observe(vid, 'click', pop_dept_liaison);
	});
	
	var bptl_ids = ['bpt_liaison_name', 'bpt_liaison_phone', 'bpt_liaison_email'];
	var pop_bpt_liaison = function() {
		Dialog.info(null, popup_opts.merge({url: base_url + 'users/pop_list/'+ (c.bpt_liaison_id ? c.bpt_liaison_id : null) +'?bpt=1', title: "Select / Edit BPT Liaison"}));
		Dialog._callback = function(id) {
			c.bpt_liaison_id = id;
			Dialog.closeInfo();
			bptl_ids.each(function(id) { $(id).addClassName('busy'); })
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/set_bpt_liaison?user_id='+ id, {
				onComplete: function(xhr) {
					bptl_ids.each(function(id) { $(id).removeClassName('busy'); });
				}
			});
		}
	}
	bptl_ids.each(function(vid) {
		Event.observe(vid, 'click', pop_bpt_liaison);
	});
	
	/* var vc_ids = ['vendor_contact_name', 'vendor_contact_phone', 'vendor_contact_email'];
	var pop_vendor_contact = function() {
		if(!c.vendor_id) {
			alert('Please select a vendor before selecting a vendor contact.');
			return;
		}
		Dialog.info(null, popup_opts.merge({url: base_url + 'users/pop_list/'+ (c.vendor_contact_id ? c.vendor_contact_id : null) +'?vendor_id='+ c.vendor_id, title: "Select / Edit Vendor Contact"}));
		Dialog._callback = function(id) {
			c.vendor_contact_id = id;
			Dialog.closeInfo();
			vc_ids.each(function(id) { $(id).addClassName('busy'); })
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/set_vendor_contact?user_id='+ id, {
				onComplete: function(xhr) {
					vc_ids.each(function(id) { $(id).removeClassName('busy'); });
				}
			});
		}
	}
	vc_ids.each(function(vid) {
		Event.observe(vid, 'click', pop_vendor_contact);
	}); */
	
	var pop_department = function() {
		Dialog.info(null, popup_opts.merge({url: base_url + 'departments/pop_list/'+ (c.department_id ? c.department_id : null), title: "Select Department"}));
		Dialog._callback = function(id) {
			c.department_id = id;
			Dialog.closeInfo();
			$('department_name').addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/set_department?department_id='+ id, {
				onComplete: function(xhr) {
					$('department_name').removeClassName('busy');
				}
			});
		}
	}
	Event.observe($('department_name'), 'click', pop_department);
	
	var pop_division = function() {
		if(!c.department_id) {
			alert('Please select a department before selecting a division.');
			return;
		}
		Dialog.info(null, popup_opts.merge({url: base_url + 'departments/pop_divisions/'+ (c.department_id ? c.department_id : null), title: "Select Division"}));
		Dialog._callback = function(id) {
			c.division_id = id;
			Dialog.closeInfo();
			$('division_name').addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/set_division?division_id='+ id, {
				onComplete: function(xhr) {
					$('division_name').removeClassName('busy');
				}
			});
		}
	}
	Event.observe($('division_name'), 'click', pop_division);
	
	/* Event.observe($('c_class_new'), 'change', function() {
		$('c_class_renewal').checked = !$('c_class_new').checked;
		$('c_class_renewal').onchange();
	});
	
	Event.observe($('c_class_renewal'), 'change', function() {
		$('c_class_new').checked = !$('c_class_renewal').checked;
		$('c_class_new').onchange();
	}); */
}

function init_service_fee_row(sf) {
	var sf_ids = ['sf_description_'+ sf.id, 'sf_price_per_unit_'+ sf.id, 'sf_num_units_'+ sf.id]
	sf_ids.each(function(e) {
		$(e).onchange = function() {
			$(e).parentNode.addClassName('busy');
			new Ajax.Request(base_url +'contract/'+ sf.contract_id +'/request/edit_service_fee/'+ sf.id, {
				onComplete: function(xhr) {
					$(e).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(e).parentNode)
			});
		}
	});
}

function init_select_table(t) {
	$A($(t).getElementsByClassName('select')).each(function(r) {
		Event.observe(r, 'click', function() {
			top.Dialog._callback(r.getAttribute('id'));
		});
	});
}

function init_prototips(tips) {
	$H(tips).each(function(t) { new Tip(t[0], t[1]); });
}

function set_measurement_freq(cid, val) {
	window.location = base_url +'contract/'+ cid +'/request/set_measurement_freq?value='+ val;
}

function init_request_form_performance(c) {
	['c_objectives_additional_comments', 'c_measures_email'].each(function(id) {
	var ac = $(id);
	ac.onchange = function() {
		ac.parentNode.addClassName('busy');
		new Ajax.Request(base_url +'contract/'+ c.id +'/request/update_field', {
			onComplete: function(xhr) {
				ac.parentNode.removeClassName('busy');
			},
			parameters: Form.serialize(ac.parentNode)
		});
	}});
	
	var cm = $('copy_measures');
	cm.onclick = function() {
		Dialog.info(null, popup_opts.merge({url: base_url + 'contracts/pop_list', title: 'Select Contract to Copy Measures'}));
		Dialog._callback = function(id) {
			if(confirm('Are you sure you want to import performance measures from a previous contract? This will overwrite any work that\'s been done on the performance measures for this contract.')) {
				Dialog.closeInfo();
				window.location = base_url + 'contract/'+ c.id +'/request/copy_measures/'+ id;
			}
		}
	}
	
	var on = $('objective_new_cell');
	on.onclick = function() {
		on.addClassName('busy');
		new Ajax.Request(base_url +'contract/'+ c.id +'/request/new_objective', {
			onComplete: function() {
				on.removeClassName('busy');
			}
		});
	}
}

function init_measurement(m) {
	var ids = ['m_is_averaged_' + m.id, 'm_description_'+ m.id, 'm_notes_'+ m.id, 'm_annual_projection_'+ m.id].concat(m.freq == 'quarterly' ? 
		['m_q1_'+ m.id, 'm_q2_'+ m.id, 'm_q3_'+ m.id, 'm_q4_'+ m.id] : 
		['m_m1_'+ m.id, 'm_m2_'+ m.id, 'm_m3_'+ m.id, 'm_m4_'+ m.id, 'm_m5_'+ m.id, 'm_m6_'+ m.id, 'm_m7_'+ m.id, 'm_m8_'+ m.id, 'm_m9_'+ m.id, 'm_m10_'+ m.id, 'm_m11_'+ m.id, 'm_m12_'+ m.id]);
	ids.each(function(id) {
		$(id).onchange = function() {
			$(id).parentNode.addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ m.contract_id +'/request/edit_measurement/'+ m.id , {
				onComplete: function(xhr) {
					$(id).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(id).parentNode)
			});
		}
	});
}

function init_objective(o) {
	var d = $('o_description_'+ o.id);
	d.onchange = function() {
		d.parentNode.addClassName('busy');
		new Ajax.Request(base_url +'contract/'+ o.contract_id +'/request/edit_objective/'+ o.id, {
			onComplete: function(xhr) {
				d.parentNode.removeClassName('busy');
			},
			parameters: Form.serialize(d.parentNode)
		});
	}
	
	var n = $('measurement_new_cell_'+ o.id);
	n.onclick = function() {
		n.addClassName('busy');
		new Ajax.Request(base_url +'contract/'+ o.contract_id + '/request/new_measurement', {
			onComplete: function(xhr) {
				n.removeClassName('busy');
			},
			parameters: {objective_id: o.id}
		});
	}
}

function init_request_form_data(c) {
	['c_revenue_true', 'c_revenue_false', 'c_contracting_auth_res', 'c_contracting_auth_res_of', 'c_previous_contracting_auth_res', 'c_previous_contracting_auth_res_of', 'c_date_resolution_adopted', 'c_law_file_no',
		'c_percent_federal', 'c_percent_state', 'c_percent_local', 'c_percent_other',
		'c_exempt_from_law', 'c_sap_shell_no', 'c_material_group_no'].each(function(e) {
		$(e).onchange = function() {
			$(e).parentNode.addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/update_field', {
				onComplete: function(xhr) {
					$(e).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(e).parentNode)
			});
		}
	});
	
	['c_system_sap_bics_emedny_sap', 'c_system_sap_bics_emedny_bics', 'c_system_sap_bics_emedny_emedny'].each(function(id) {
		Event.observe(id, 'change', function() {
			$(id).parentNode.addClassName('busy');
			new Ajax.Request(base_url + 'contract/' + c.id + '/request/update_system', {
				onComplete: function(xhr) {
					$(id).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(id).parentNode)
			});
		});
	});
	
	var en = $('expenditure_new');
	en.onclick = function() {
		en.addClassName('busy');
		new Ajax.Request(base_url +'contract/'+ c.id +'/request/new_expenditure', {
			onComplete: function() {
				en.removeClassName('busy');
			}
		});
	}
}

function init_request_form_data_scpo(c) {
	var en = $('scpo_new');
	en.onclick = function() {
		en.addClassName('busy');
		new Ajax.Request(base_url +'contract/'+ c.id +'/request/new_scpo', {
			onComplete: function() {
				en.removeClassName('busy');
			}
		});
	}
}

function init_expenditure(e) {
	var ids = ['e_item_'+ e.id, 'e_short_text_'+ e.id, 'e_plant_'+ e.id, 'e_sloc_'+ e.id, 'e_gl_account_no_'+ e.id, 'e_cost_center_'+ e.id, 'e_bus_area_'+ e.id, 'e_fund_'+ e.id,
		'e_int_order_no_'+ e.id, 'e_grant_no_'+ e.id, 'e_amount_'+ e.id, 'e_amend_1_'+ e.id, 'e_amend_2_'+ e.id, 'e_amend_3_'+ e.id];
	ids.each(function(id) {
		$(id).onchange = function() {
			$(id).parentNode.addClassName('busy');
			new Ajax.Request(base_url +'contract/'+ e.contract_id +'/request/edit_expenditure/'+ e.id, {
				onComplete: function() {
					$(id).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(id).parentNode)
			});
		}
	});
	
	var ed = $('expenditure_delete_'+ e.id);
	ed.onclick = function() {
		if(confirm('Are you sure you want to delete this expenditure? This is irreversible.')) {
			ed.parentNode.addClassName('busy');
			new Ajax.Request(base_url +'contract/'+ e.contract_id +'/request/delete_expenditure/'+ e.id, {
				onComplete: function() {
					ed.parentNode.removeClassName('busy');
				}
			});
		}
	}
	
	var pl = $('e_plant_' + e.id);
	var bu = $('e_bus_area_' + e.id);
	Event.observe(pl, 'change', function() {
		if(!bu.value) {
			bu.value = pl.value;
			bu.onchange();
		}
	});
}

function init_request_form_sole_source(c) {
	var ids = ['c_sole_source_description_of_service', 'c_sole_source_explain_purchase', 'c_sole_source_only_vendor', 
		'c_sole_source_steps_taken', 'c_sole_source_negotiation_process',
		'c_sole_source_estimated_expenditure'];
	ids.each(function(id) {
		$(id).onchange = function() {
			$(id).parentNode.addClassName('busy');
			new Ajax.Request(base_url +'contract/'+ c.id +'/request/update_field', {
				onComplete: function() {
					$(id).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(id).parentNode)
			});
		}
	});
}

function init_request_form_solicitation(c) {

	['c_rfp_rfq_no', 'c_synopsis_of_program', 'c_rfp_rfq_date', 'c_class_new', 'c_fund', 'c_percent_federal', 'c_mandate_classification_nonmandated',
		'c_class_direct_negotiation', 'c_business_area', 'c_percent_state', 'c_mandate_classification_soft_mandate', 'c_class_other', 'c_class_other_desc', 'c_cost_center',
		'c_percent_local', 'c_mandate_classification_hard_mandate', 'c_class_renewal', 'c_class_renewal_prev_rfp_rfq_no', 'c_percent_other', 'c_fed_state_init',
		'c_class_renewal_prev_rfp_rfq_date', 'c_start_date', 'c_cost_estimate', 'c_cost_estimate_source', 'c_end_date',
		'c_proposed_committee_chair', 'c_recommended_firm', 'c_not_local_firm_justification'].each(function(e) {
		$(e).onchange = function() {
			$(e).parentNode.addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/update_field', {
				onComplete: function(xhr) {
					$(e).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(e).parentNode)
			});
		}
	});

	var dl_ids = ['dept_liaison_name', 'dept_liaison_phone', 'dept_liaison_email'];
	var pop_dept_liaison = function() {
		if(!c.department_id) {
			alert('Please select a department before selecting a department liaison.');
			return;
		}
		Dialog.info(null, popup_opts.merge({url: base_url + 'users/pop_list/'+ (c.dept_liaison_id ? c.dept_liaison_id : null) +'?department_id='+ c.department_id, title: "Select / Edit Dept Liaison"}));
		Dialog._callback = function(id) {
			c.dept_liaison_id = id;
			Dialog.closeInfo();
			dl_ids.each(function(id) { $(id).addClassName('busy'); })
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/set_dept_liaison?user_id='+ id, {
				onComplete: function(xhr) {
					dl_ids.each(function(id) { $(id).removeClassName('busy'); });
				}
			});
		}
	}
	dl_ids.each(function(vid) {
		Event.observe(vid, 'click', pop_dept_liaison);
	});
	
	var pop_department = function() {
		Dialog.info(null, popup_opts.merge({url: base_url + 'departments/pop_list/'+ (c.department_id ? c.department_id : null), title: "Select Department"}));
		Dialog._callback = function(id) {
			c.department_id = id;
			Dialog.closeInfo();
			$('department_name').addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ c.id +'/request/set_department?department_id='+ id, {
				onComplete: function(xhr) {
					$('department_name').removeClassName('busy');
				}
			});
		}
	}
	Event.observe($('department_name'), 'click', pop_department);
	
	var svn = $('suggested_vendor_new');
	svn.onclick = function() {
		svn.addClassName('busy');
		new Ajax.Request(base_url + 'contract/'+ c.id +'/request/new_suggested_vendor', {
			onComplete: function() {
				svn.removeClassName('busy');
			}
		});
	}

	var cmn = $('committee_member_new');
	cmn.onclick = function() {
		cmn.addClassName('busy');
		new Ajax.Request(base_url + 'contract/'+ c.id +'/request/new_committee_member', {
			onComplete: function() {
				cmn.removeClassName('busy');
			}
		});
	}
	
	var rfn = $('responding_firm_new');
	rfn.onclick = function() {
		rfn.addClassName('busy');
		new Ajax.Request(base_url + 'contract/'+ c.id +'/request/new_responding_firm', {
			onComplete: function() {
				rfn.removeClassName('busy');
			}
		});
	}
	
	Event.observe($('c_class_new'), 'change', function() {
		$('c_class_renewal').checked = !$('c_class_new').checked;
		$('c_class_renewal').onchange();
	});
	
	Event.observe($('c_class_renewal'), 'change', function() {
		$('c_class_new').checked = !$('c_class_renewal').checked;
		$('c_class_new').onchange();
	});
}

function init_suggested_vendor(sv) {
	var ids = ['sv_name_'+ sv.id, 'sv_email_'+ sv.id];
	ids.each(function(id) {
		$(id).onchange = function() {
			$(id).parentNode.addClassName('busy');
			new Ajax.Request(base_url +'contract/'+ sv.contract_id +'/request/edit_suggested_vendor/'+ sv.id, {
				onComplete: function() {
					$(id).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(id).parentNode)
			});
		}
	});
	
	var svd = $('suggested_vendor_delete_'+ sv.id);
	var svr = $('suggested_vendor_'+ sv.id);
	svd.onclick = function() {
		if(confirm('Are you sure you want to delete this item? This action is irreversible.')) {
			svr.addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ sv.contract_id +'/request/delete_suggested_vendor/'+ sv.id, {
				onComplete: function() {
					svr.removeClassName('busy');
				}
			});
		}
	}
}

function init_committee_member(cm) {
	var ids = ['cm_name_'+ cm.id];
	ids.each(function(id) {
		$(id).onchange = function() {
			$(id).parentNode.addClassName('busy');
			new Ajax.Request(base_url +'contract/'+ cm.contract_id +'/request/edit_committee_member/'+ cm.id, {
				onComplete: function() {
					$(id).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(id).parentNode)
			});
		}
	});
	
	var cmd = $('committee_member_delete_'+ cm.id);
	var cmr = $('committee_member_'+ cm.id);
	cmd.onclick = function() {
		if(confirm('Are you sure you want to delete this item? This action is irreversible.')) {
			cmr.addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ cm.contract_id +'/request/delete_committee_member/'+ cm.id, {
				onComplete: function() {
					cmr.removeClassName('busy');
				}
			});
		}
	}
}

function init_scpo(sc) {
	var ids = ['sc_no_'+ sc.id, 'sc_created_at_'+ sc.id];
	ids.each(function(id) {
		$(id).onchange = function() {
			$(id).parentNode.addClassName('busy');
			new Ajax.Request(base_url +'contract/'+ sc.contract_id +'/request/edit_scpo/'+ sc.id, {
				onComplete: function() {
					$(id).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(id).parentNode)
			});
		}
	});
	
	var csd = $('scpo_delete_'+ sc.id);
	var csr = $('scpo_'+ sc.id);
	csd.onclick = function() {
		if(confirm('Are you sure you want to delete this item? This action is irreversible.')) {
			csr.addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ sc.contract_id +'/request/delete_scpo/'+ sc.id, {
				onComplete: function() {
					csr.removeClassName('busy');
				}
			});
		}
	}
}

function init_responding_firm(rf) {
	var ids = ['rf_name_'+ rf.id];
	ids.each(function(id) {
		$(id).onchange = function() {
			$(id).parentNode.addClassName('busy');
			new Ajax.Request(base_url +'contract/'+ rf.contract_id +'/request/edit_responding_firm/'+ rf.id, {
				onComplete: function() {
					$(id).parentNode.removeClassName('busy');
				},
				parameters: Form.serialize($(id).parentNode)
			});
		}
	});
	
	var rfd = $('responding_firm_delete_'+ rf.id);
	var rfr = $('responding_firm_'+ rf.id);
	rfd.onclick = function() {
		if(confirm('Are you sure you want to delete this item? This action is irreversible.')) {
			rfr.addClassName('busy');
			new Ajax.Request(base_url + 'contract/'+ rf.contract_id +'/request/delete_responding_firm/'+ rf.id, {
				onComplete: function() {
					rfr.removeClassName('busy');
				}
			});
		}
	}
}

function route_select_user(r) {
	Dialog.info(null, popup_opts.merge({url: base_url + 'users/pop_list/', title: 'Select User'}));
	Dialog._callback = function(id) {
		Dialog.closeInfo();
		$('user_id').addClassName('busy');
		new Ajax.Request(base_url +'contract/' + r.contract_id + '/users/json/'+ id, {
			onSuccess: function(xhr) {
				json = xhr.responseText.evalJSON();
				$('route_user_name').innerHTML = json.first_name +' '+ json.last_name +' - '+ json.organization_name
			},
			onComplete: function() {
				$('user_id').removeClassName('busy');
			}
		});
		$('route_user_id').value = id;
	}
}

function message_form_org_onclick(org_id) {
	var val = $F('org_'+ org_id);
	$$('.org_'+ org_id).each(function(e) {
		e.checked = val;
	});
}

function message_form_user_onclick(org_id) {
	val = true;
	$$('.org_'+ org_id).each(function(e) {
		val = (val && e.checked);
	});
	$('org_'+ org_id).checked = val;
}

function message_form_private_onclick() {
	val = $F('message_private');
	$$('.vendor').each(function(e){
		e.disabled = val;
		if(val) e.checked = false;
	});
}

/**
 * Pops up justifications for the fields / edit form.
 */
function view_justification(link, id) {

}

/**
 * Used by the checklist. Send the updated field value back to the server.
 */
function checklist_update_field(ref_id, field, value, success) {
	$(field).addClassName('busy');
	new Ajax.Request(base_url + 'referral/' + ref_id + '/checklist/update', {
		parameters: {
			field: field,
			value: value
		},
		onComplete: function(xhr) {
			$(field).removeClassName('busy');
		},
		onSuccess: success ? success : function(){}
	});
}

/**
 * Used by the checklist. Updates the label / link to download for file fields.
 */
function checklist_update_file_label(ref_id, field) {
	var select = $('c_'+ field +'_id');
	var label = select.options[select.selectedIndex].innerHTML;
	var value = $F('c_'+ field +'_id');
	$('file-label-'+ field).innerHTML = value ? ('<a href="'+ base_url + 'referral/' + ref_id + '/documents/download/' + value + '">'+ label +'</a>') : 'No Document Selected';
}

/**
 * Hack to fix border bug https://bugzilla.mozilla.org/show_bug.cgi?id=244135
 */
Event.observe(window, 'load', function() {
	$$('table.border_fix').each(function(e) {
		e.removeClassName('border_fix');
	});
});