//LIST FUNCTIONS------------------------------------------------------------

function ListLen(List, Delimiter)
{
	if (typeof Delimiter == 'undefined' ) Delimiter = ',';
	if (List == "")
		return 0;
	else
	{
		var CommaCount=1;
		var newList=List;
		while (newList.indexOf(Delimiter) != -1)
		{
			CommaCount++;
			newList=newList.substring(newList.indexOf(Delimiter)+1);
		}
		return CommaCount;
	}
}

function ListGetAt(List,Index, Delimiter)
{
	if (typeof Delimiter == 'undefined' ) Delimiter = ',';
	if (Index>ListLen(List,Delimiter))
		return -1;
	else
	{
		var newList=List;
		//remove leading text
		for (var count=1;count<Index;count++)
			newList=newList.substring(newList.indexOf(Delimiter)+1);
		//remove trailing text
		if (newList.indexOf(Delimiter) != -1)
			newList=newList.substring(0,newList.indexOf(Delimiter));
		return newList;
	}
}

function ListSetAt(List, Index, Element, Delimiter)
{
	if (typeof Delimiter == 'undefined' ) Delimiter = ',';
	if (Index <= ListLen(List,Delimiter))
	{
		if (ListLen(List,Delimiter) < 1)
			return -1;
		else
		{
			List=Delimiter+List+Delimiter;
			var BeforeSet=List.substring(0,Find(List,Delimiter,Index)-1);
			var AfterSet=List.substr(Find(List,Delimiter,Index+1)-1);
			var newList=BeforeSet+Delimiter+Element+AfterSet;
			newList=newList.substring(1,newList.length-1);
			if (newList.substring(newList.length,1) == Delimiter)
				newList=newList.substring(0,newList.length-1);
			return newList;
		}
	}
	else
		return -1;
}

function ListAppend(List,Element, Delimiter)
{
	if (typeof Delimiter == 'undefined' ) Delimiter = ',';
	if (ListLen(List,Delimiter) > 0)
		List=List + Delimiter;
	return List+Element;
}

function ListDeleteAt(List,Index, Delimiter)
{
	if (typeof Delimiter == 'undefined' ) Delimiter = ',';
	if (Index <= ListLen(List,Delimiter))
	{
		if (ListLen(List,Delimiter) < 1)
			return -1;
		else
		{
			List=Delimiter+List+Delimiter;
			if (ListLen(List,Delimiter) == 3)
				List=List+Delimiter;
			var BeforeDelete=List.substring(0,Find(List,Delimiter,Index)-1);
			var AfterDelete=List.substr(Find(List,Delimiter,Index+1)-1);
			var newList=BeforeDelete+AfterDelete;
			newList=newList.substring(1,newList.length-1);
			if (newList.substring(newList.length,1) == Delimiter)
				newList=newList.substring(0,newList.length-1);
			return newList;
		}
	}
	else
		return -1;
}

function ListRest(List, Delimiter)
{
	if (typeof Delimiter == 'undefined' ) Delimiter = ',';
	return ListDeleteAt(List,1,Delimiter);
}

function ListFind(List,targetString, Delimiter)
{
	if (typeof Delimiter == 'undefined' ) Delimiter = ',';
	for (var d=1;d<=ListLen(List,Delimiter);d++)
	{
		if (ListGetAt(List,d,Delimiter) == targetString)
			return d;
	}
	return 0;
}
