function CategorySelect(uri,response_div_id,parent_cat_input_id,child_cat_input_id,child_cat_div_id,initial_child_cat_id,num_defaults)
{
	this.uri = uri;
	this.response_div = document.getElementById(response_div_id);
	this.parent_cat_input = document.getElementById(parent_cat_input_id);
	this.child_cat_input = document.getElementById(child_cat_input_id);
	this.child_cat_div = document.getElementById(child_cat_div_id);
	this.initial_child_cat_id = initial_child_cat_id;
	this.num_defaults = num_defaults;
			
	this.DoRequest = function()
	{
		if (this.parent_cat_input.value == 0)
		{
			this.child_cat_input.value = 0;
			SetDisplay(this.child_cat_div,'none');
		}
		else
		{
			SimpleResponse(this.response_div,MessageLoading('Loading submenu...'));
			LoadDoc(this,this.uri+this.parent_cat_input.value,this.ParseResponse,true);
		}
	}
	
	this.ParseResponse = function(parentObj,resultText)
	{
		if (!StaticResponse(parentObj.response_div,resultText))
		{
			SetDisplay(parentObj.child_cat_div,'block');
			
			SimpleResponse(parentObj.response_div,'');
			
			parentObj.child_cat_input.options.length = 1;
			
			if (resultText == '0') return;
			
			resultText = resultText.split(DELIMITER_1);
			
			for (var i=0;i<resultText.length;++i)
			{
				var bits = resultText[i].split(DELIMITER_2);
				
				if (bits[0] == parentObj.initial_child_cat_id) bool = true;
				else bool = false;
				
				parentObj.child_cat_input.options[parentObj.num_defaults+i] = new Option(bits[1],bits[0],bool,bool);
			}
		}
	}
}

function NodeList(container_id)
{
	this.container = document.getElementById(container_id);
	
	this.Add = function(tag,contents)
	{
		var row = CreateNode(this.container,tag,contents);
		row.id = this.container.id+'_chld_'+this.container.childNodes.length;
	}
	
	this.Remove = function(obj)
	{
		RemoveNode(obj.parentNode.id);
	}
}

function Specifics(handle_obj,uri,table,input_name,gameid_input_id,saved_values)
{
	this.handle_obj = handle_obj;
	this.handle_obj.loading_message = 'Loading specifics...';
	this.uri = uri;
	this.table = table;
	this.input_name = input_name;
	this.gameid_input = document.getElementById(gameid_input_id);
	this.saved_values = saved_values;
			
	this.DoRequest = function()
	{
		/* x160209
		if (this.gameid_input.value != '')
		{
			this.handle_obj.DoRequest(this.uri+'&table='+this.table+'&name='+this.input_name+'&gameid='+this.gameid_input.value+'&saved_values='+this.saved_values);
		}
		*/
		
		this.handle_obj.DoRequest(this.uri+'&table='+this.table+'&name='+this.input_name+'&gameid='+this.gameid_input.value+'&saved_values='+this.saved_values);
	}
}

function Authors(tab_title_prefix,tab_body_prefix,tabs)
{
	this.tab_title_prefix = tab_title_prefix;
	this.tab_body_prefix = tab_body_prefix;
	this.tabs = tabs;
	
	this.ClickTab = function(tab_i)
	{
		for (var i=0;i<this.tabs.length;++i)
		{
			var tab_title_obj = document.getElementById(this.tab_title_prefix+i);
			var tab_body_obj = document.getElementById(this.tab_body_prefix+i);
			
			if (i == tab_i)
			{
				// set tab title/body
				tab_title_obj.className = 'row_alt bit left bold';
				tab_title_obj.style.paddingBottom = '4px';
				tab_body_obj.className = 'row_alt';
				SetDisplay(tab_body_obj,'block');
			}
			else
			{
				// hide tab titles/bodies
				tab_title_obj.className = 'row bit left grey';
				tab_title_obj.style.paddingBottom = '3px';
				SetDisplay(tab_body_obj,'none');
			}
		}
	}
	
	this.FocusInput = function(input_obj,text)
	{
		if (input_obj.value == text) input_obj.value = '';
	}
	
	this.BlurInput = function(input_obj,text)
	{
		if (input_obj.value == '') input_obj.value = text;
	}
}
