var xSelect = function ()
{
	//	PUBLIC VAR
	//	vName			- Control Name
	//	vDataUrl		- select data URL
	//	vError			- Last Error
	//	vWidth			- Select Width
	//	vControlClassName	- Control Style Class Name

	//	vDataFieldName	- Name of field in Data where Option title
	//	vDataFieldId	- Name of field in Data where Option ID


	//	vId				- Control container
	//	vIdElement		- Control container Element
	//	vControlId		- Control ID
	//	vControlElement	- Control Element
	//	vControlLocked	- Control is locked

	this.vDataFieldName = 'name';
	this.vSize = 1;
	this.vDataFieldId = 'id';
	this.vDataFieldSelected = 'selected';
	this.vControlClassName = 'xSelect';
	this.vEmptyId = 0;
	this.vPostData		= [];
	this.vControls = [];
	this.vLoading = 'Loading...';
	this.vCash = [];
}

xSelect.prototype = new xAjax;

xSelect.prototype.fInit = function ()
{
	if (!this.vIdElement && this.vId)
	{
		this.vIdElement = document.getElementById(this.vId);
	}
	if (!this.vIdElement)
	{
		this.vError = 'Element `' + this.vId + '` not found in DOM';
		this.fError();
		return;
	}
}

xSelect.prototype.fGetData = function ()
{
	this.fLockControl();

	var tOption = document.createElement("OPTION");
		this.vIdElement.options.length = 0;
		this.vIdElement.options.add(tOption);
		tOption.innerHTML = this.vLoading;
	this.vIdElement.disabled = true;
	
	if (this.vCash[this.vDataUrl])
	{
		this.vData = this.vCash[this.vDataUrl];
		this.fShow();
	}
	else
	{
		this.AJAXPostData(this.vDataUrl, this.vPostData);
	}
}

xSelect.prototype.fCleanContent = function ()
{
	var zz = document.getElementById(this.vControlId);
	if (zz)
		zz.parentNode.removeChild(zz);
}

xSelect.prototype.fShow = function ()
{
	var tSelect, tOption;

	this.vControlLocked = false;
	this.fCleanContent();

	tSelect = this.vIdElement;
	tSelect.disabled = false;
	tSelect.options.length = 0;
	if (this.onchange)
	{
		tSelect.onchange = this.onchange;
	}

	if (this.vName)
	{
		tSelect.name = this.vName;
		tSelect.id = this.vName;
	}

	if ((this.vEmpty != '') && (this.vEmpty != null))
	{
		var tOption = document.createElement("OPTION");
		tSelect.options.add(tOption);
		tOption.innerHTML = this.vEmpty;
		tOption.value = this.vEmptyId;
	}

	for (var i in this.vData)
	{
		var tOption = document.createElement("OPTION");
		tSelect.options.add(tOption);
		tOption.innerHTML = this.vData[i][this.vDataFieldName];
		tOption.value = this.vData[i][this.vDataFieldId];

		if (this.vData[i][this.vDataFieldSelected] == 1)
			tSelect.selectedIndex = tSelect.options.length - 1;
	}
	this.vCash[this.vDataUrl] = this.vData;
}

xSelect.prototype.fClear = function ()
{
	var tOption = document.createElement("OPTION");
		this.vIdElement.options.length = 0;
		this.vIdElement.options.add(tOption);
		tOption.innerHTML = this.vEmpty;
}

