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

// Routines for client-side list (csl) management.

function csl_does_not_contain(arr, target) {
	not_found = true;
	for (var i = 0; i < arr.length; i++) {
		if (arr[i] == target) {
			not_found = false;
			break;
		}
	}
	return not_found;
}

function csl_does_contain(arr, target) {
	found = false;
	for (var i = 0; i < arr.length; i++) {
		if (arr[i] == target) {
			found = true;
			break;
		}
	}
	return found;
}

function csl_remove_from_array(remove_arr, arr) {
	new_arr = new Array();
	for (var i = 0; i < arr.length; i++) {
		absent = true;
		for (var j = 0; j < remove_arr.length; j++) {
			if (arr[i] == remove_arr[j]) {
				absent = false;
				break;
			}
		}
		if (absent) {
			new_arr.push(arr[i]);
		}
	}
	return new_arr;
}

// Modifies the DOM to show a list of selected entries.
function csl_show_list(selected_entries, entry_name) {
	var list_html = '<ul>';
	for (var i = 0; i < selected_entries.length; i++) {
		list_html += '<li>' + selected_entries[i];
		list_html += '&nbsp;&nbsp;&nbsp;<a href="#' + entry_name + '_list" onclick="csl_delete_from_list(' + 
			'selected_' + entry_name + ",'" + entry_name + "'," + i + ')">remove</a>';
		list_html += '<input type="hidden" value="' + selected_entries[i] + '" name="selected_' + entry_name + '[' + i + ']" />';
		list_html += '</li>';
	}
	list_html += '</ul>';
	$(entry_name + '_list').innerHTML = list_html;	
}

function csl_add_to_list(selected_entries, entry_name, required_entries) {
	var entry_div = entry_name + '_lookup';
	var new_entry = $F(entry_div);
	if ( csl_does_not_contain(selected_entries, new_entry) && (required_entries == null || csl_does_contain(required_entries, new_entry)) ) {
		selected_entries.push( new_entry );
		csl_show_list(selected_entries, entry_name);
	}
}

function csl_delete_from_list(selected_entries, entry_name, org_num) {
	selected_entries.splice(org_num, 1);
	csl_show_list(selected_entries, entry_name);
}
