/*
	dc_jsLists.js
	dchiu -- 20050614
	
	created this set of cold fusion like list functions to help with list
	manipulation to pass data through web forms. -- dc
	
	functions:
		dc_jsLists.arrayToList(array [, delimiters])
			input: JavaScript Array
			output: String
		dc_jsLists.listToArray(list [, delimiters])
			input: String
			output: JavaScript Array
		dc_jsLists.listAppend(list, value [, delimiters])
			input: String
			output: String with Appended Value
		dc_jsLists.listAppendUnique(list, value [, delimiters])
			input: String
			output: String with Appended Value (only if Value is not already in the list, otherwise returns original)
		dc_jsLists.listRemove(list, value [, delimiters])
			input: String
			output: String with Value Removed
		dc_jsLists.listContains(list, var [, delimiters])
			input: String
			output: Position of Var
		dc_jsLists.listLen(list [, delimiters])
			input: String
			output: Length of List
		dc_jsLists.listGetAt(list, position, [, delimiters])
			input: String
			output: Value of List at Position
	
	notes: _delimiter is optional, by default the delimiter is a comma.
	
	todo:
		listInsertAt
		listSort
*/

var dc_jsLists = {
	arrayToList : function(_array,_delimiter) {
		if (!_delimiter) _delimiter = ','
		return _array.join(_delimiter)
	},
	listToArray : function(_list,_delimiter) {
		if (!_delimiter) _delimiter = ','
		return _list.split(_delimiter)
	},
	listAppend : function(_list,_value,_delimiter) {
		if (!_delimiter) _delimiter = ','
		var array = _list.split(_delimiter)
		if (_list.length == 0)
			array[0] = _value
		else
			array[array.length] = _value
		return array.join(_delimiter)
	},
	listAppendUnique : function(_list,_value,_delimiter) {
		if (!_delimiter) _delimiter = ','
		var array = _list.split(_delimiter)
		if (dc_jsLists.listContains(_list,_value) == null) {
			if (_list.length == 0)
				array[0] = _value
			else
				array[array.length] = _value
		}
		return array.join(_delimiter)
	},
	listRemove : function(_list,_var,_delimiter) {
		if (!_delimiter) _delimiter = ','
		var newArray = new Array()
		var oldArray = _list.split(_delimiter)
		if (_list.length != 0) {
			for(var i=0;i<oldArray.length;i++) {
				if (oldArray[i] != _var) newArray[newArray.length] = oldArray[i]
			}
		}
		return newArray.join(_delimiter)
	},
	listContains : function(_list,_var,_delimiter) {
		if (!_delimiter) _delimiter = ','
		var index = null
		var array = _list.split(_delimiter)
		for(var i=0;i<array.length;i++) {
			if (array[i] == _var) { index = i; break }
		}
		return index
	},
	listContainsNoCase : function(_list,_var,_delimiter) {
		if (!_delimiter) _delimiter = ','
		var index = null
		var array = _list.split(_delimiter)
		for(var i=0;i<array.length;i++) {
			var re = new RegExp(_var, "i");
			if (array[i].match(re) != null) { index = i; break }
		}
		return index
	},
	listLen : function(_list,_delimiter) {
		if (!_delimiter) _delimiter = ','
		var array = _list.split(_delimiter)
		return array.length
	},
	listGetAt : function(_list,_position,_delimiter) {
		if (!_delimiter) _delimiter = ','
		var array = _list.split(_delimiter)
		return array[_position]
	}
}