function LoginFields()
{
	this.letterContainer = false;

	this.levels = new Object();
	this.currentLevel = -1;

	this.addLevel = function (level)
	{
		if (typeof(level) == 'number' && !isNaN(level) && level >= 0)
		{
			level = Math.floor(level);
			if (typeof(this.levels[level]) != 'object' || this.levels[level] == null)
			{
				this.levels[level] = new Object();
				this.levels[level].level = level;
				this.levels[level].letters = new Array();
				if (this.currentLevel < 0) this.currentLevel = level;
			}
			return true;
		}
		return false;
	}

	this.addLetter = function (level, letter, class_id)
	{
		if (typeof(level) == 'number' && !isNaN(level) && level >= 0 &&
		    typeof(class_id) == 'number' && !isNaN(class_id) && class_id >= 0 &&
		    typeof(letter) == 'string' && letter.length == 1)
		{
			var exists = false;
			level = Math.floor(level);
			class_id = Math.floor(class_id);
			if (typeof(this.levels[level]) != 'object' || this.levels[level] == null)
			{
				this.addLevel(level);
			}
			for (var i = 0; i < this.levels[level].letters.length && !exists; i++)
			{
				if (this.levels[level].letters[i].text == letter)
				{
					exists = true;
				}
			}
			if (!exists)
			{
				var tmpLetterData = new Object();
				tmpLetterData.value = this.levels[level].letters.length;
				tmpLetterData.text = letter;
				tmpLetterData.class_id = class_id;
				tmpLetterData.puples = new Array();
				this.levels[level].letters[tmpLetterData.value] = tmpLetterData;
			}
		}
	}

	this.addPuple = function (level, letter, name, puple_id)
	{
		if (typeof(level) == 'number' && !isNaN(level) && level >= 0 &&
		    typeof(this.levels[level]) == 'object' && this.levels[level] != null &&
		    typeof(letter) == 'string' && letter.length == 1)
		{
			var index = 0;
			while (index < this.levels[level].letters.length && this.levels[level].letters[index].text != letter)
			{
				index++;
			}
			if (index < this.levels[level].letters.length)
			{
				var i = this.levels[level].letters[index].puples.length;
				var puple = new Object();
				puple.name = name;
				puple.puple_id = puple_id;
				this.levels[level].letters[index].puples[i] = puple;
				return true;
			}
			return false;
		}
	}

	this.setLevel = function (level, formInstance)
	{
		if (typeof(this.levels[level]) == 'object' && this.levels[level] != null &&
		    typeof(formInstance) == 'object' && formInstance != null &&
		    typeof(formInstance.elements.class_letter) == 'object' && formInstance.elements.class_letter != null)
		{
			var option;
			level = Math.floor(level);
			this.currentLevel = level;
			while (formInstance.elements.class_letter.options.length > 0)
			{
				formInstance.elements.class_letter.options[formInstance.elements.class_letter.options.length - 1] = null;
			}
			for (var i = 0; i < this.levels[level].letters.length; i++)
			{
				option = document.createElement('OPTION');
				if (typeof(option) == 'object' && option != null)
				{
					option.value = i;
					option.text = this.levels[level].letters[i].text;
					option.selected = (i == 0);
					formInstance.elements.class_letter.options[formInstance.elements.class_letter.options.length] = option;
				}
			}
			formInstance.elements.class_letter.disabled = (this.levels[level].letters.length == 0);
			return this.showPuples(0, formInstance);
		}
		return false;
	}

	this.showPuples = function (letter_id, formInstance)
	{
		if (typeof(this.currentLevel) == 'number' && !isNaN(this.currentLevel) && this.currentLevel >= 0 &&
		    typeof(this.levels[this.currentLevel]) == 'object' && this.levels[this.currentLevel] != null)
		{
			var level = this.currentLevel;
			letter_id = Math.floor(letter_id);
			var letter = (this.levels[level].letters.length > letter_id ? this.levels[level].letters[letter_id] : false);
			while (formInstance.elements.puple.options.length > 0)
			{
				formInstance.elements.puple.options[formInstance.elements.puple.options.length - 1] = null;
			}
			if (typeof(letter) == 'object' && letter.puples.length > 0)
			{
				var option;
				for (var i = 0; i < letter.puples.length; i++)
				{
					option = document.createElement('OPTION');
					if (typeof(option) == 'object' && option != null)
					{
						option.value = letter.puples[i].puple_id;
						option.text = letter.puples[i].name;
						option.selected = (i == 0);
						formInstance.elements.puple.options[formInstance.elements.puple.options.length] = option;
					}
				}
				formInstance.elements.puple.disabled = false;
			}
			else
			{
				formInstance.elements.puple.disabled = true;
			}
		}
	}
}
