function ProjectList(uri,response_div_id,projects_input_id,itemidInt,type_titleStr)
{
	this.uri = uri;
	this.response_div_id = response_div_id;
	this.projects_input_id = projects_input_id;
	this.itemidInt = itemidInt;
	this.type_titleStr = type_titleStr;
}

ProjectList.prototype.DoRequest = function(userid,studioidInt)
{
	SimpleResponse(this.response_div_id,MessageLoading('Loading '+this.type_titleStr+' list...'));
	LoadDoc(this,this.uri+'?userid='+userid+'&studioid='+studioidInt,this.ParseResponse,true);
}

ProjectList.prototype.ParseResponse = function(parentObj,resultText)
{
	// split into init and exec
	resultArr = resultText.split(DELIMITER_1);

	// check if an init error occurred
	if (resultArr[0].length > 0)
	{
		// replace loading message with error message
		SimpleResponse(parentObj.response_div_id,resultArr[0]);
	}
	else
	{
		// replace loading message with nothing
		SimpleResponse(parentObj.response_div_id,'');
	}

	if (resultArr[1].length > 0)
	{
		var menu = document.getElementById(parentObj.projects_input_id);
		menu.options.length = 1;

		if (resultArr[1] == '0') return;

		// split response into key/value options
		var options = resultArr[1].split(DELIMITER_2);

		for (var i=0;i<options.length;++i)
		{
			// split the pair into key => value
			var bits = options[i].split(DELIMITER_3);

			if (bits[0] == parentObj.itemidInt) bool = true;
			else bool = false;

			menu.options[menu.length] = new Option(bits[1],bits[0],bool,bool);
		}
	}
}